from datetime import datetime from pydantic import BaseModel, Field class CreateEvaluationRequest(BaseModel): """评价生成入参:指定输出分数类型。""" score_type: str = Field(default="percentage", pattern="^(percentage|five_point)$") class DimensionScore(BaseModel): """维度评分:保存单个评分维度的分数、满分和评价。""" dimension: str score: float max_score: float comment: str evidence: list[str] = Field(default_factory=list) deductions: list[str] = Field(default_factory=list) improvement: str = "" class EvaluationResponse(BaseModel): """评价报告响应:返回结构化 AI 评价报告。""" evaluation_id: int score_type: str total_score: float dimension_scores: list[DimensionScore] errors: list[dict] improvement_plan: list[str] evidence_summary: list[str] guideline_refs: list[dict] overall_comment: str class EvaluationListItem(BaseModel): """历史评价列表项:按 user_id 查询完整训练后的评价记录。""" evaluation_id: int case_title: str score_type: str total_score: float created_at: datetime pdf_exported: bool class EvaluationListResponse(BaseModel): """历史评价列表响应。""" items: list[EvaluationListItem] class ExportPdfResponse(BaseModel): """PDF 导出响应:返回导出记录和本地文件路径。""" export_id: int file_path: str class EvaluationDetailResponse(EvaluationResponse): """评价详情响应:在报告详情页使用。""" session_id: int case_id: int case_title: str created_at: datetime pdf_file_path: str | None = None