namespace JobTrackerApi.Models; public sealed class CvUploadArtifact { public int Id { get; set; } public string OwnerUserId { get; set; } = string.Empty; public string OriginalFileName { get; set; } = string.Empty; public string StoredFileName { get; set; } = string.Empty; public string MimeType { get; set; } = string.Empty; public long ByteSize { get; set; } public string Sha256 { get; set; } = string.Empty; public string StoragePath { get; set; } = string.Empty; public DateTimeOffset UploadedAtUtc { get; set; } = DateTimeOffset.UtcNow; } public sealed class CvExtractionRun { public int Id { get; set; } public string OwnerUserId { get; set; } = string.Empty; public int? ArtifactId { get; set; } public CvUploadArtifact? Artifact { get; set; } public string Trigger { get; set; } = string.Empty; public string ParserVersion { get; set; } = string.Empty; public string NormalizerVersion { get; set; } = string.Empty; public string LlmPromptVersion { get; set; } = string.Empty; public string Status { get; set; } = string.Empty; public string? RawExtractedText { get; set; } public string? NormalizedText { get; set; } public string? StructuredProfileJson { get; set; } public string? ErrorMessage { get; set; } public DateTimeOffset StartedAtUtc { get; set; } = DateTimeOffset.UtcNow; public DateTimeOffset? CompletedAtUtc { get; set; } public DateTimeOffset? AppliedAtUtc { get; set; } }