Documentation
¶
Index ¶
- Constants
- Variables
- func ErrorCode(err error) string
- type APIError
- type BackfillRequest
- type BackfillResult
- type BackfillRunner
- type ComparisonView
- type ItemPage
- type Job
- type ListItemsInput
- type QueueInput
- type QueueResult
- type ReplaceInput
- type RetainedRequest
- type RetainedResponse
- type RetestVerificationReader
- type ReviewAction
- type ReviewInput
- type ReviewResult
- type Service
- func (service *Service) Generate(ctx context.Context, input WorkInput) (assessmentcomparison.Comparison, error)
- func (service *Service) Get(ctx context.Context, tenantID, comparisonID shared.ID) (ComparisonView, error)
- func (service *Service) GetSummary(ctx context.Context, tenantID, comparisonID shared.ID, scope domain.Scope) (domain.Summary, error)
- func (service *Service) HandleJob(ctx context.Context, payload []byte) error
- func (service *Service) ListItems(ctx context.Context, input ListItemsInput) (ItemPage, error)
- func (service *Service) OnDeadLetter(ctx context.Context, payload []byte) error
- func (service *Service) Queue(ctx context.Context, input QueueInput) (assessmentcomparison.Comparison, bool, assessmentcomparison.PairDecision, ...)
- func (service *Service) QueueRetained(ctx context.Context, request RetainedRequest, input QueueInput) (RetainedResponse, error)
- func (service *Service) Recover(ctx context.Context, input WorkInput) (assessmentcomparison.Comparison, error)
- func (service *Service) Repair(ctx context.Context, input WorkInput) (assessmentcomparison.Comparison, error)
- func (service *Service) Replace(ctx context.Context, input ReplaceInput) (assessmentcomparison.Comparison, bool, error)
- func (service *Service) Review(ctx context.Context, input ReviewInput) (RetainedResponse, error)
- func (service *Service) SetAPIStores(requests ports.AssessmentCycleRequestStore, jobs ports.JobQueue, ...)
- func (service *Service) SetObserver(observer ports.AssessmentComparisonObserver)
- type WorkInput
Constants ¶
View Source
const ( JobKind = "assessment_comparison_generate" CodeIdempotencyKeyRequired = "idempotency_key_required" CodeIdempotencyBodyMismatch = "idempotency_body_mismatch" CodeIdempotencyRequestPending = "idempotency_request_in_progress" CodeComparisonVersionConflict = "comparison_version_conflict" CodeReviewCandidateMismatch = "review_candidate_mismatch" CodeReviewSourceMissing = "review_source_observation_missing" CodeReviewReasonRejected = "review_reason_rejected" DefaultAssessmentItemPageLimit = 100 MaxAssessmentItemPageLimit = 200 )
View Source
const ( DefaultComparisonBackfillBatch = 500 MaxComparisonBackfillBatch = 2000 DefaultComparisonBacklogWarning = 500 DefaultComparisonBacklogHardLimit = 1000 DefaultComparisonOldestActiveLimit = 15 * time.Minute DefaultComparisonRepairMaxAttempts = DefaultMaxAttempts )
View Source
const ( DefaultMaxAttempts = 3 MaxAttempts = 10 RiskModelVersionV1 = 1 )
Variables ¶
View Source
var ( ErrComparisonBacklogHardLimit = errors.New("assessment comparison backlog hard limit reached") ErrComparisonOldestActive = errors.New("assessment comparison oldest active job limit exceeded") )
Functions ¶
Types ¶
type BackfillRequest ¶
type BackfillResult ¶
type BackfillRunner ¶
type BackfillRunner struct {
// contains filtered or unexported fields
}
func NewBackfillRunner ¶
func NewBackfillRunner(service comparisonBackfillService, cycles ports.AssessmentCycleListRepository, comparisons ports.AssessmentComparisonRepairRepository, clock ports.Clock, audit ports.AuditLogger) (*BackfillRunner, error)
func (*BackfillRunner) Run ¶
func (runner *BackfillRunner) Run(ctx context.Context, request BackfillRequest) (BackfillResult, error)
type ComparisonView ¶
type ComparisonView struct {
ID shared.ID `json:"id"`
CycleID shared.ID `json:"cycle_id"`
BaselineSnapshotID shared.ID `json:"baseline_snapshot_id"`
CurrentSnapshotID shared.ID `json:"current_snapshot_id"`
Mode domain.Mode `json:"mode"`
InputHash string `json:"input_hash"`
AlgorithmVersion int `json:"algorithm_version"`
FingerprintVersion int `json:"fingerprint_version"`
RiskModelVersion int `json:"risk_model_version"`
CoveragePolicyVersion int `json:"coverage_policy_version"`
Status domain.Status `json:"status"`
Version int64 `json:"version"`
Attempts int `json:"attempts"`
FailureCode string `json:"failure_code,omitempty"`
ContentHash string `json:"content_hash,omitempty"`
Summary domain.Summary `json:"summary"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
CompletedAt *time.Time `json:"completed_at,omitempty"`
SupersededAt *time.Time `json:"superseded_at,omitempty"`
SupersededBy shared.ID `json:"superseded_by,omitempty"`
}
type ListItemsInput ¶
type QueueInput ¶
type QueueResult ¶
type QueueResult struct {
Comparison ComparisonView `json:"comparison"`
Created bool `json:"created"`
}
type ReplaceInput ¶
type RetainedRequest ¶
type RetainedResponse ¶
type RetestVerificationReader ¶
type RetestVerificationReader struct {
// contains filtered or unexported fields
}
RetestVerificationReader projects append-only Finding retest decisions onto immutable lineage identities. The newest decision along the supplied Snapshot order is the single effective decision for an identity.
func NewRetestVerificationReader ¶
func NewRetestVerificationReader(lineage ports.FindingLineageRepository, snapshots ports.AssessmentSnapshotRepository, retests ports.RetestRepository) (*RetestVerificationReader, error)
func (*RetestVerificationReader) ListEffectiveComparisonVerifications ¶
func (reader *RetestVerificationReader) ListEffectiveComparisonVerifications(ctx context.Context, tenantID, cycleID shared.ID, snapshotIDs []shared.ID) ([]ports.AssessmentComparisonVerification, error)
type ReviewAction ¶
type ReviewAction string
const ( ReviewConfirm ReviewAction = "confirm" ReviewUnlink ReviewAction = "unlink" )
type ReviewInput ¶
type ReviewResult ¶
type Service ¶
type Service struct {
// contains filtered or unexported fields
}
func NewService ¶
func NewService( comparisons ports.AssessmentComparisonRepository, snapshots ports.AssessmentSnapshotRepository, cycles ports.AssessmentCycleRepository, lineage ports.FindingLineageRepository, transactions ports.TenantTransactionRunner, audit ports.AuditLogger, clock ports.Clock, ids ports.IDGenerator, verification ports.AssessmentComparisonVerificationReader, observer ports.AssessmentComparisonObserver, ) (*Service, error)
func (*Service) Generate ¶
func (service *Service) Generate(ctx context.Context, input WorkInput) (assessmentcomparison.Comparison, error)
func (*Service) GetSummary ¶
func (*Service) OnDeadLetter ¶
func (*Service) Queue ¶
func (service *Service) Queue(ctx context.Context, input QueueInput) (assessmentcomparison.Comparison, bool, assessmentcomparison.PairDecision, error)
func (*Service) QueueRetained ¶
func (service *Service) QueueRetained(ctx context.Context, request RetainedRequest, input QueueInput) (RetainedResponse, error)
func (*Service) Recover ¶
func (service *Service) Recover(ctx context.Context, input WorkInput) (assessmentcomparison.Comparison, error)
func (*Service) Repair ¶
func (service *Service) Repair(ctx context.Context, input WorkInput) (assessmentcomparison.Comparison, error)
func (*Service) Replace ¶
func (service *Service) Replace(ctx context.Context, input ReplaceInput) (assessmentcomparison.Comparison, bool, error)
func (*Service) Review ¶
func (service *Service) Review(ctx context.Context, input ReviewInput) (RetainedResponse, error)
func (*Service) SetAPIStores ¶
func (*Service) SetObserver ¶
func (service *Service) SetObserver(observer ports.AssessmentComparisonObserver)
Click to show internal directories.
Click to hide internal directories.