from pydantic import BaseModel, Field from datetime import date, datetime from typing import Optional, List from decimal import Decimal class ScoreCreate(BaseModel): student_id: int exam_seq: int score: Decimal = Field(ge=0, le=100, description="分数0‑100") exam_date: Optional[date] = None remark: Optional[str] = None class ScoreUpdate(BaseModel): score: Optional[Decimal] = Field(None, ge=0, le=100) exam_seq: Optional[int] = None exam_date: Optional[date] = None remark: Optional[str] = None class ScoreItem(BaseModel): id: int student_id: int score: Decimal exam_seq: int exam_date: Optional[date] remark: Optional[str] created_at: Optional[datetime] updated_at: Optional[datetime] is_deleted: int class ScorePageResp(BaseModel): total: int data: List[ScoreItem]