using System.ComponentModel.DataAnnotations; namespace DramaLing.Api.Models.Entities; /// /// 詞卡複習記錄實體 - 支援間隔重複系統 /// public class FlashcardReview { public Guid Id { get; set; } /// /// 詞卡ID (外鍵) /// [Required] public Guid FlashcardId { get; set; } /// /// 用戶ID (外鍵) /// [Required] public Guid UserId { get; set; } /// /// 連續成功次數 - 用於間隔重複算法 (2^n 天數計算) /// 答對時增加,答錯時重置為0 /// public int SuccessCount { get; set; } = 0; /// /// 下次複習日期 - 基於間隔重複算法計算 /// 公式: 今天 + 2^SuccessCount 天 /// public DateTime NextReviewDate { get; set; } = DateTime.UtcNow.AddDays(1); /// /// 最後複習日期 /// public DateTime? LastReviewDate { get; set; } /// /// 最後成功複習日期 (答對的日期) /// public DateTime? LastSuccessDate { get; set; } /// /// 累計跳過次數 (統計用) /// public int TotalSkipCount { get; set; } = 0; /// /// 累計錯誤次數 (統計用) /// public int TotalWrongCount { get; set; } = 0; /// /// 累計正確次數 (統計用) /// public int TotalCorrectCount { get; set; } = 0; /// /// 創建時間 /// public DateTime CreatedAt { get; set; } = DateTime.UtcNow; /// /// 更新時間 /// public DateTime UpdatedAt { get; set; } = DateTime.UtcNow; // Navigation Properties public virtual Flashcard Flashcard { get; set; } = null!; public virtual User User { get; set; } = null!; }