Files
fastapi/app/schemas/evaluation.py
T
2026-06-04 10:55:23 +08:00

85 lines
2.1 KiB
Python

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 ScoreDetailItem(BaseModel):
"""评分明细:对应 training_score_detail 的单条评分细则。"""
id: int | None = None
record_id: int | None = None
rule_id: int | None = None
dimension: str
score: float | None = None
deducted_reason: str | None = None
evidence_message_ids: list = Field(default_factory=list)
ai_confidence: float | None = None
comment: str | None = None
class EvaluationResponse(BaseModel):
"""评价报告响应:返回结构化 AI 评价报告。"""
evaluation_id: int
score_type: str
total_score: float
dimension_scores: list[DimensionScore]
score_details: list[ScoreDetailItem] = Field(default_factory=list)
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