namespace JobTrackerApi.Models; // Persists interview prep so it survives tab switches and page reloads instead of being an AI // call re-run every time the tab opens (career-workspace-implementation-roadmap.md Phase F5 -- // "persist interview prep / fit outputs" -- flagged in the product teardown as work evaporating // on every re-open). One row per job application; regenerated when the selected attachment // context changes or the user explicitly requests a refresh. public sealed class InterviewPrepNote { public int Id { get; set; } public string OwnerUserId { get; set; } = string.Empty; public int JobApplicationId { get; set; } public JobApplication? JobApplication { get; set; } // Fingerprint of the attachment selection this note was generated from, so a different // attachment selection triggers regeneration without needing an explicit refresh. public string AttachmentContextSignature { get; set; } = string.Empty; public string Summary { get; set; } = string.Empty; public string TalkingPointsJson { get; set; } = "[]"; public string LikelyQuestionsJson { get; set; } = "[]"; public string WeakSpotsJson { get; set; } = "[]"; public DateTimeOffset GeneratedAtUtc { get; set; } = DateTimeOffset.UtcNow; }