dramaling-vocab-learning/backend/DramaLing.Api/Models/DTOs/ReviewDTOs.cs

145 lines
3.4 KiB
C#

using System.ComponentModel.DataAnnotations;
namespace DramaLing.Api.Models.DTOs;
/// <summary>
/// 複習請求 DTO
/// </summary>
public class ReviewRequest
{
/// <summary>
/// 信心度等級 (1=模糊, 2=一般, 3=熟悉)
/// </summary>
[Required]
[Range(0, 3, ErrorMessage = "信心度必須在 0-3 之間")]
public int Confidence { get; set; }
/// <summary>
/// 是否答對 (基於 confidence >= 2 判斷,或由前端直接提供)
/// </summary>
public bool? IsCorrect { get; set; }
/// <summary>
/// 複習類型 (flip-memory 或 vocab-choice)
/// </summary>
public string? ReviewType { get; set; } = "flip-memory";
/// <summary>
/// 回應時間 (毫秒)
/// </summary>
public int? ResponseTimeMs { get; set; }
/// <summary>
/// 是否跳過
/// </summary>
public bool WasSkipped { get; set; } = false;
/// <summary>
/// 會話中的跳過次數 (前端統計)
/// </summary>
public int SessionSkipCount { get; set; } = 0;
/// <summary>
/// 會話中的錯誤次數 (前端統計)
/// </summary>
public int SessionWrongCount { get; set; } = 0;
}
/// <summary>
/// 複習結果響應 DTO
/// </summary>
public class ReviewResult
{
/// <summary>
/// 詞卡ID
/// </summary>
public Guid FlashcardId { get; set; }
/// <summary>
/// 新的連續成功次數
/// </summary>
public int NewSuccessCount { get; set; }
/// <summary>
/// 下次複習日期
/// </summary>
public DateTime NextReviewDate { get; set; }
/// <summary>
/// 間隔天數
/// </summary>
public int IntervalDays { get; set; }
/// <summary>
/// 熟練度變化 (可選)
/// </summary>
public double MasteryLevelChange { get; set; } = 0.0;
/// <summary>
/// 是否為新記錄
/// </summary>
public bool IsNewRecord { get; set; } = false;
}
/// <summary>
/// 待複習詞卡查詢參數 DTO
/// </summary>
public class DueFlashcardsQuery
{
/// <summary>
/// 限制數量 (默認 10)
/// </summary>
[Range(1, 100, ErrorMessage = "限制數量必須在 1-100 之間")]
public int Limit { get; set; } = 10;
/// <summary>
/// 包含今天到期的卡片
/// </summary>
public bool IncludeToday { get; set; } = true;
/// <summary>
/// 包含過期的卡片
/// </summary>
public bool IncludeOverdue { get; set; } = true;
/// <summary>
/// 只返回用戶收藏的卡片
/// </summary>
public bool FavoritesOnly { get; set; } = false;
}
/// <summary>
/// 複習統計 DTO
/// </summary>
public class ReviewStats
{
/// <summary>
/// 今日複習數量
/// </summary>
public int TodayReviewed { get; set; }
/// <summary>
/// 今日到期數量
/// </summary>
public int TodayDue { get; set; }
/// <summary>
/// 過期未複習數量
/// </summary>
public int Overdue { get; set; }
/// <summary>
/// 總複習次數
/// </summary>
public int TotalReviews { get; set; }
/// <summary>
/// 平均正確率
/// </summary>
public double AverageAccuracy { get; set; }
/// <summary>
/// 學習連續天數
/// </summary>
public int StudyStreak { get; set; }
}