Files
core/pkg/domain/ticket.go
2026-04-02 10:57:36 -04:00

62 lines
1.9 KiB
Go

package domain
import (
"time"
)
// SLAPolicy represents the global SLA configuration per severity
type SLAPolicy struct {
Domain string `json:"domain"`
Severity string `json:"severity"`
DaysToRemediate int `json:"days_to_remediate"`
MaxExtensions int `json:"max_extensions"`
DaysToTriage int `json:"days_to_triage"`
}
// AssetRiskSummary holds the rolled-up vulnerability counts for a single asset
type AssetRiskSummary struct {
AssetIdentifier string
TotalActive int
Critical int
High int
Medium int
Low int
Info int
}
type Ticket struct {
ID int `json:"id"`
Domain string `json:"domain"`
IsOverdue bool `json:"is_overdue"`
DaysToResolve *int `json:"days_to_resolve"`
Source string `json:"source"`
AssetIdentifier string `json:"asset_identifier"`
Title string `json:"title"`
Description string `json:"description"`
RecommendedRemediation string `json:"recommended_remediation"`
Severity string `json:"severity"`
Status string `json:"status"`
DedupeHash string `json:"dedupe_hash"`
PatchEvidence *string `json:"patch_evidence"`
OwnerViewedAt *time.Time `json:"owner_viewed_at"`
TriageDueDate time.Time `json:"triage_due_date"`
RemediationDueDate time.Time `json:"remediation_due_date"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
PatchedAt *time.Time `json:"patched_at"`
SLAString string `json:"sla_string"`
Assignee string `json:"assignee"`
LatestComment string `json:"latest_comment"`
}
// TicketAssignment represents the many-to-many relationship
type TicketAssignment struct {
TicketID int `json:"ticket_id"`
Assignee string `json:"assignee"`
Role string `json:"role"`
}