# scheme/classes.py # 班级模块的请求/响应模型 from datetime import date from typing import List, Optional from pydantic import BaseModel, Field # -------------------- 请求体模型 ----------------------------- class ClassAdd(BaseModel): class_id: Optional[int] = Field(None, ge=1, description="班级ID(不传则自增)") class_name: str = Field(..., min_length=1, max_length=50, description="班级名称,如 Java2301") start_time: date = Field(..., description="开课时间,格式 YYYY-MM-DD") class ClassUpdate(BaseModel): class_name: Optional[str] = Field(None, min_length=1, max_length=50, description="班级名称") start_time: Optional[date] = Field(None, description="开课时间") # -------------------- 响应模型 ---------------------------- class ClassResponse(BaseModel): class_id: int class_name: str start_time: date class Config: from_attributes = True class ClassListResponse(BaseModel): total: int items: List[ClassResponse] class ClassStudentCountResponse(BaseModel): """班级人数统计(多维度班级统计)""" class_id: int class_name: str total: int = Field(..., description="总人数") male: int = Field(..., description="男生人数") female: int = Field(..., description="女生人数")