package audit import ( "context" "gorm.io/gorm" auditarchive "github.com/break/junhong_cmp_fiber/internal/application/auditarchive" "github.com/break/junhong_cmp_fiber/pkg/constants" ) // WriteRetentionCleanup 将月度物理清理结果写入当前在线月份的统一审计事件。 func (w *Writer) WriteRetentionCleanup(ctx context.Context, tx *gorm.DB, input auditarchive.RetentionAudit) error { return w.Append(ctx, tx, AppendInput{ EventID: input.EventID, ActionCode: constants.AuditActionLogRetentionCleanup, Summary: input.Summary, Actor: ActorInput{ Kind: constants.AuditActorSystemTask, ID: constants.AuditActorIDRetentionWorker, Name: "日志留存清理任务", }, Source: constants.AuditSourceWorker, ScopeType: constants.AuditScopePlatform, Result: input.Result, ErrorSummary: input.ErrorSummary, CorrelationID: "retention:" + input.Month, Metadata: map[string]any{ "event_count": input.EventCount, "resource_count": input.ResourceCount, "integration_count": input.IntegrationCount, "manifest_keys": input.ManifestKeys, "duration_ms": input.DurationMS, }, Resources: []ResourceInput{{ Type: constants.AuditResourceLogArchiveMonth, Key: input.Month, DisplayName: input.Month, Relation: constants.AuditResourceRelationPrimary, Role: constants.AuditResourceRoleRetentionMonth, IdentitySnapshot: map[string]any{ "month": input.Month, "timezone": constants.AuditArchiveTimezone, "range_start": input.RangeStart, "range_end": input.RangeEnd, }, SubjectVisibility: constants.AuditSubjectInternalOnly, }}, }) }