namespace KArtSell.Modules.ModelOperations.Domain.ApprovalWorkflow; public enum ApprovalStatus { Draft, Proposed, Approved, Active, Rejected } public class ApprovalProposal { public Guid Id { get; set; } public Guid ModelId { get; set; } public ApprovalStatus Status { get; set; } public required string CreatedBy { get; set; } public DateTime CreatedAt { get; set; } public required string Justification { get; set; } public DateOnly EffectiveAt { get; set; } public DateTime? ProposedAt { get; set; } public string? ApprovedBy { get; set; } public DateTime? ApprovedAt { get; set; } public string? ApprovalNotes { get; set; } public string? ActivatedBy { get; set; } public DateTime? ActivatedAt { get; set; } public DateTime PublishedAt { get; set; } public int Revision { get; set; } public Guid CorrelationId { get; set; } public List Evidence { get; set; } = new(); public List Events { get; set; } = new(); } public class ApprovalEvidence { public Guid Id { get; set; } public Guid ApprovalProposalId { get; set; } public required string EvidenceType { get; set; } public required string EvidenceUrl { get; set; } public string? ReviewerComment { get; set; } public DateTime PublishedAt { get; set; } public Guid CorrelationId { get; set; } } public class ApprovalEvent { public Guid Id { get; set; } public Guid ApprovalProposalId { get; set; } public required string EventType { get; set; } public required string ActorEmail { get; set; } public DateTime EventAt { get; set; } public Dictionary? Details { get; set; } public DateTime PublishedAt { get; set; } public Guid CorrelationId { get; set; } }