from pydantic import BaseModel, ConfigDict from datetime import date from typing import List, Optional class StudentInfo1(BaseModel): model_config = ConfigDict(from_attributes=True) student_id: str student_name: str gender: str id_card: str birthday: Optional[date] = None ethnicity: Optional[str] = None region_id: Optional[str] = None phone: Optional[str] = None major: str class_id: str enrollment_date: Optional[date] = None graduation_date: Optional[date] = None student_status: str education_level: str class ResponseModel(BaseModel): code: int message: str = 'ok' total: int total_pages: int data: List[StudentInfo1] class ClassStatResponse(BaseModel): code: int = 200 message: str = 'ok' class_id: str total_count: int male_count: int female_count: int class StudentInfo2(BaseModel): student_id: str student_name: str score: Optional[float] = None class ResponseModel1(BaseModel): code: int message: str = 'ok' total: int total_pages: int data: List[StudentInfo2] class StudentInfo3(BaseModel): student_id: str student_name: str fail_count: int class ResponseModel2(BaseModel): code: int message: str = 'ok' total: int total_pages: int data: List[StudentInfo3] class ClassExamAvg(BaseModel): course_id: str class_id: str class_name: str avg_score: float class ResponseModel3(BaseModel): code: int message: str = 'ok' total: int total_pages: int data: List[ClassExamAvg] class SalaryTop(BaseModel): student_name: str class_name: str company_name: str offer_date: Optional[date] = None salary: Optional[float] = None class ResponseModel4(BaseModel): code: int message: str = 'ok' data: List[SalaryTop] class TimeSize(BaseModel): student_id: str student_name: str offer_date: Optional[date] = None resume_open_date: Optional[date] = None time_size: Optional[int] = None class ResponseModel5(BaseModel): code: int message: str = 'ok' total: int total_pages: int data: List[TimeSize] class ClassAvgTimeSize(BaseModel): class_id: str class_name: str avg_time_size: float class ResponseModel6(BaseModel): code: int message: str = 'ok' total: int total_pages: int data: List[ClassAvgTimeSize]