Files
2026-09-18 16:53:21 +08:00

36 lines
1.3 KiB
Python

# schemas/stu_score_schema.py
# 学生成绩模块的 Pydantic 模式
from decimal import Decimal
from typing import Optional
from pydantic import BaseModel, ConfigDict, Field
class StuScoreBase(BaseModel):
"""成绩公共字段"""
stu_id: str = Field(..., max_length=15, description="学生编号")
exam_attempt: int = Field(default=1, ge=1, description="考试轮次")
exam_score: Decimal = Field(..., ge=0, le=100, description="成绩(0-100)")
score_level: Optional[str] = Field(default=None, max_length=10, description="成绩等级")
class StuScoreCreate(StuScoreBase):
"""新增成绩记录"""
pass
class StuScoreUpdate(BaseModel):
"""更新成绩记录:仅更新传入的字段"""
stu_id: Optional[str] = Field(default=None, max_length=15, description="学生编号")
exam_attempt: Optional[int] = Field(default=None, ge=1, description="考试轮次")
exam_score: Optional[Decimal] = Field(default=None, ge=0, le=100, description="成绩(0-100)")
score_level: Optional[str] = Field(default=None, max_length=10, description="成绩等级")
class StuScoreOut(StuScoreBase):
"""成绩响应模型(含自增 id 与软删除标记)"""
id: int
is_deleted: bool
model_config = ConfigDict(from_attributes=True)