namespace KArtSell.Modules.ModelOperations.Compliance; /// /// Immutable audit event for compliance trail (INSERT-only, no UPDATE/DELETE). /// Links to model operations, approvals, sell decisions, and trades. /// public class AuditEvent { public Guid Id { get; set; } public string EventType { get; set; } // MODEL_CREATED, APPROVAL_PROPOSED, APPROVAL_APPROVED, MODEL_ACTIVATED, SELL_DECISION_MADE, SELL_EXECUTED, BACKTEST_COMPLETED, DATA_CORRECTION public string EntityType { get; set; } // MODEL, APPROVAL, SELL_DECISION, TRADE_EXECUTION public Guid EntityId { get; set; } public string ActorEmail { get; set; } public string? ActorRole { get; set; } // MAKER, CHECKER, SRE, SYSTEM public DateTime EventAt { get; set; } public string Result { get; set; } // SUCCESS, FAILURE, PARTIAL public string? ErrorMessage { get; set; } public Dictionary? Details { get; set; } // Event-specific metadata public string[]? EvidenceLinks { get; set; } // S3 artifact URLs public string? IpAddress { get; set; } public string? UserAgent { get; set; } public DateTime PublishedAt { get; set; } public Guid CorrelationId { get; set; } // Links related events in audit trail public int Revision { get; set; } } /// /// Event type enumeration (reference data). /// public static class AuditEventTypes { public const string ModelCreated = "MODEL_CREATED"; public const string ModelArchived = "MODEL_ARCHIVED"; public const string ApprovalProposed = "APPROVAL_PROPOSED"; public const string ApprovalApproved = "APPROVAL_APPROVED"; public const string ApprovalRejected = "APPROVAL_REJECTED"; public const string ModelActivated = "MODEL_ACTIVATED"; public const string ModelDeactivated = "MODEL_DEACTIVATED"; public const string SellDecisionMade = "SELL_DECISION_MADE"; public const string SellExecuted = "SELL_EXECUTED"; public const string BacktestCompleted = "BACKTEST_COMPLETED"; public const string DataCorrection = "DATA_CORRECTION"; public const string ComplianceAudit = "COMPLIANCE_AUDIT"; } /// /// Entity types for audit events. /// public static class AuditEntityTypes { public const string Model = "MODEL"; public const string Approval = "APPROVAL"; public const string SellDecision = "SELL_DECISION"; public const string TradeExecution = "TRADE_EXECUTION"; }