Files
stu/schema/statistics_schema.py
2026-09-23 09:46:15 +08:00

125 lines
2.4 KiB
Python

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]