"""作答记录与 AI 功能的 schema。""" from datetime import datetime from pydantic import BaseModel, ConfigDict, Field class AttemptCreate(BaseModel): user_answer: list[str] = Field(default_factory=list) class AttemptOut(BaseModel): """一次作答记录。is_correct 为 null 表示"已记录,尚未判分"。""" model_config = ConfigDict(from_attributes=True) id: str question_id: str user_answer: list[str] | None is_correct: bool | None judged_by: str ai_feedback_markdown: str | None created_at: datetime class SelfJudge(BaseModel): """自评:用户自己判定对错,不花 AI 额度。""" is_correct: bool class JudgeResult(BaseModel): """按需判分的结果。""" attempt_id: str is_correct: bool | None judged_by: str feedback_markdown: str | None = None key_points_missed: list[str] = Field(default_factory=list) correct_answer: list[str] | None = None class ExplainOut(BaseModel): explanation_markdown: str class TagsOut(BaseModel): tags: list[str]