# scheme/statistics_scheme.py from pydantic import BaseModel, Field, EmailStr from datetime import datetime, date from typing import Optional, List # ---------- 请求模型 ---------- class StatsScoreRequest(BaseModel): choose: int = Field(..., ge=0, le=3) email: EmailStr full_name: Optional[str] = Field(None, max_length=100) # ---------- 响应模型 ---------- # 多维度班级统计 class StatsResponse(BaseModel): cls_id: str total_cnt: int man_cnt: int female_cnt: int class ExamScoreItem(BaseModel): exam_attempt: int exam_score: float # 查询每次考试成绩都在输入分数线(如80分)以上的学生的编号、姓名和成绩。 class StuInfoAllExamAboveScore(BaseModel): stu_id: str stu_name: str stu_score: List[ExamScoreItem] # 查询有输入指定次数(如两次)以上不及格的学生的姓名、班级和不及格成绩明细。 class FailingStudentItem(BaseModel): stu_name: str stu_cls_id: str stu_fail_cnt: int stu_score: List[ExamScoreItem] # 查询有输入指定次数(如两次)以上不及格的学生的姓名、班级和不及格成绩明细。 class ClassExamAvgScoreItem(BaseModel): exam_attempt: int cls_id: str avg_score: float stu_cnt: int class TopSalaryStudentItem(BaseModel): stu_name: str cls_id: str offer_time: date emp_company_name: str salary: float class StudentEmpDurationItem(BaseModel): stu_id: str stu_name: str cls_id: str offer_time: int class ClassAvgEmpDurationItem(BaseModel): cls_id: str avg_duration_days: float employed_cnt: int class StudentAgeDetailItem(BaseModel): stu_id: str stu_name: str cls_id: str gender: str age: int