dramaling-vocab-learning/backend/DramaLing.Api/Models/Entities/FlashcardReview.cs

74 lines
2.0 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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