Documentation
¶
Overview ¶
Package remediation provides domain models for remediation campaign management.
Index ¶
- Variables
- type Campaign
- func (c *Campaign) Activate() error
- func (c *Campaign) AllFindingsResolved() bool
- func (c *Campaign) AssignedTeam() *shared.ID
- func (c *Campaign) AssignedTo() *shared.ID
- func (c *Campaign) Cancel()
- func (c *Campaign) Complete() error
- func (c *Campaign) CompletedAt() *time.Time
- func (c *Campaign) CreatedAt() time.Time
- func (c *Campaign) CreatedBy() *shared.ID
- func (c *Campaign) Description() string
- func (c *Campaign) DueDate() *time.Time
- func (c *Campaign) FindingCount() int
- func (c *Campaign) FindingFilter() map[string]any
- func (c *Campaign) ID() shared.ID
- func (c *Campaign) IsOverdue() bool
- func (c *Campaign) Name() string
- func (c *Campaign) Pause() error
- func (c *Campaign) Priority() CampaignPriority
- func (c *Campaign) Progress() float64
- func (c *Campaign) RecordRiskReduction(before, after float64)
- func (c *Campaign) ResolvedCount() int
- func (c *Campaign) RiskAfter() *float64
- func (c *Campaign) RiskBefore() *float64
- func (c *Campaign) RiskReduction() *float64
- func (c *Campaign) SetAssignment(assignedTo, assignedTeam *shared.ID)
- func (c *Campaign) SetCreatedBy(userID shared.ID)
- func (c *Campaign) SetDescription(desc string)
- func (c *Campaign) SetDueDate(d *time.Time)
- func (c *Campaign) SetFindingFilter(filter map[string]any)
- func (c *Campaign) SetName(name string)
- func (c *Campaign) SetPriority(p CampaignPriority)
- func (c *Campaign) SetTags(tags []string)
- func (c *Campaign) SetTimeline(startDate, dueDate *time.Time)
- func (c *Campaign) StartDate() *time.Time
- func (c *Campaign) StartValidation() error
- func (c *Campaign) Status() CampaignStatus
- func (c *Campaign) Tags() []string
- func (c *Campaign) TenantID() shared.ID
- func (c *Campaign) TryAutoComplete() (bool, error)
- func (c *Campaign) Update(name, description string, priority CampaignPriority)
- func (c *Campaign) UpdateProgress(findingCount, resolvedCount int)
- func (c *Campaign) UpdatedAt() time.Time
- type CampaignFilter
- type CampaignPriority
- type CampaignRepository
- type CampaignStatus
Constants ¶
This section is empty.
Variables ¶
var (
ErrCampaignNotFound = fmt.Errorf("%w: remediation campaign not found", shared.ErrNotFound)
)
Errors
Functions ¶
This section is empty.
Types ¶
type Campaign ¶
type Campaign struct {
// contains filtered or unexported fields
}
Campaign tracks a remediation effort across multiple findings.
func NewCampaign ¶
NewCampaign creates a new remediation campaign.
func ReconstituteCampaign ¶
func ReconstituteCampaign( id, tenantID shared.ID, name, description string, status CampaignStatus, priority CampaignPriority, findingFilter map[string]any, findingCount, resolvedCount int, progress float64, riskBefore, riskAfter, riskReduction *float64, assignedTo, assignedTeam *shared.ID, startDate, dueDate, completedAt *time.Time, tags []string, createdBy *shared.ID, createdAt, updatedAt time.Time, ) *Campaign
ReconstituteCampaign creates from persisted data.
func (*Campaign) AllFindingsResolved ¶ added in v0.2.0
AllFindingsResolved reports whether every finding in the campaign is resolved (progress at 100%). A zero-finding campaign is NOT treated as complete — an empty campaign is a misconfiguration, not an accomplishment.
func (*Campaign) AssignedTeam ¶
func (*Campaign) AssignedTo ¶
func (*Campaign) CompletedAt ¶
func (*Campaign) Description ¶
func (*Campaign) FindingCount ¶
func (*Campaign) FindingFilter ¶
func (*Campaign) Priority ¶
func (c *Campaign) Priority() CampaignPriority
func (*Campaign) RecordRiskReduction ¶
RecordRiskReduction records risk before/after for this campaign.
func (*Campaign) ResolvedCount ¶
func (*Campaign) RiskBefore ¶
func (*Campaign) RiskReduction ¶
func (*Campaign) SetAssignment ¶
SetAssignment sets who/what team is responsible.
func (*Campaign) SetCreatedBy ¶
SetCreatedBy sets the creator.
func (*Campaign) SetDescription ¶ added in v0.1.7
SetDescription sets campaign description.
func (*Campaign) SetDueDate ¶ added in v0.1.7
SetDueDate sets campaign due date.
func (*Campaign) SetFindingFilter ¶
SetFindingFilter sets the filter criteria for this campaign's findings.
func (*Campaign) SetPriority ¶ added in v0.1.7
func (c *Campaign) SetPriority(p CampaignPriority)
SetPriority sets campaign priority.
func (*Campaign) SetTimeline ¶
SetTimeline sets start and due dates.
func (*Campaign) StartValidation ¶
StartValidation transitions to validating (re-scanning to verify fixes).
func (*Campaign) Status ¶
func (c *Campaign) Status() CampaignStatus
func (*Campaign) TryAutoComplete ¶ added in v0.2.0
TryAutoComplete attempts the active/validating → completed transition when all findings are resolved. this is what turns "every finding in my campaign hit resolved" into an actual campaign-level event without an operator clicking Complete.
Returns (true, nil) on successful auto-complete. Returns (false, nil) when not yet eligible — callers should treat this as a normal no-op, not an error. Returns (_, err) for genuine state-machine or validation failures.
func (*Campaign) Update ¶
func (c *Campaign) Update(name, description string, priority CampaignPriority)
Update sets mutable fields.
func (*Campaign) UpdateProgress ¶
UpdateProgress updates finding counts and progress percentage.
type CampaignFilter ¶
type CampaignFilter struct {
TenantID *shared.ID
Status *CampaignStatus
Priority *CampaignPriority
Search *string
}
CampaignFilter defines criteria for listing campaigns.
type CampaignPriority ¶
type CampaignPriority string
CampaignPriority defines urgency levels.
const ( CampaignPriorityCritical CampaignPriority = "critical" CampaignPriorityHigh CampaignPriority = "high" CampaignPriorityMedium CampaignPriority = "medium" CampaignPriorityLow CampaignPriority = "low" )
type CampaignRepository ¶
type CampaignRepository interface {
Create(ctx context.Context, campaign *Campaign) error
GetByID(ctx context.Context, tenantID, id shared.ID) (*Campaign, error)
Update(ctx context.Context, campaign *Campaign) error
Delete(ctx context.Context, tenantID, id shared.ID) error
List(ctx context.Context, filter CampaignFilter, page pagination.Pagination) (pagination.Result[*Campaign], error)
}
CampaignRepository defines persistence for remediation campaigns.
type CampaignStatus ¶
type CampaignStatus string
CampaignStatus defines lifecycle states.
const ( CampaignStatusDraft CampaignStatus = "draft" CampaignStatusActive CampaignStatus = "active" CampaignStatusPaused CampaignStatus = "paused" CampaignStatusValidating CampaignStatus = "validating" CampaignStatusCompleted CampaignStatus = "completed" CampaignStatusCanceled CampaignStatus = "canceled" )