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!;
}