68 lines
2.1 KiB
Python
68 lines
2.1 KiB
Python
from typing import List
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
from loveace.router.endpoint.jwc.utils.zxjxjhh_to_term_format import (
|
|
convert_zxjxjhh_to_term_format,
|
|
)
|
|
|
|
|
|
class AcademicInfoTransformer(BaseModel):
|
|
"""学术信息数据项"""
|
|
|
|
completed_courses: int = Field(0, alias="courseNum")
|
|
failed_courses: int = Field(0, alias="coursePas")
|
|
gpa: float = Field(0, alias="gpa")
|
|
current_term: str = Field("", alias="zxjxjhh")
|
|
pending_courses: int = Field(0, alias="courseNum_bxqyxd")
|
|
|
|
def to_academic_info(self) -> "AcademicInfo":
|
|
"""转换为 AcademicInfo"""
|
|
return AcademicInfo(
|
|
completed_courses=self.completed_courses,
|
|
failed_courses=self.failed_courses,
|
|
pending_courses=self.pending_courses,
|
|
gpa=self.gpa,
|
|
current_term=self.current_term,
|
|
current_term_name=convert_zxjxjhh_to_term_format(self.current_term),
|
|
)
|
|
|
|
|
|
class AcademicInfo(BaseModel):
|
|
"""学术信息数据模型"""
|
|
|
|
completed_courses: int = Field(0, description="已修课程数")
|
|
failed_courses: int = Field(0, description="不及格课程数")
|
|
pending_courses: int = Field(0, description="本学期待修课程数")
|
|
gpa: float = Field(0, description="绩点")
|
|
current_term: str = Field("", description="当前学期")
|
|
current_term_name: str = Field("", description="当前学期名称")
|
|
|
|
|
|
class TrainingPlanInfoTransformer(BaseModel):
|
|
"""培养方案响应模型"""
|
|
|
|
count: int = 0
|
|
data: List[List[str]] = []
|
|
|
|
|
|
class TrainingPlanInfo(BaseModel):
|
|
"""培养方案信息模型"""
|
|
|
|
plan_name: str = Field("", description="培养方案名称")
|
|
major_name: str = Field("", description="专业名称")
|
|
grade: str = Field("", description="年级")
|
|
|
|
|
|
class CourseSelectionStatusTransformer(BaseModel):
|
|
"""选课状态响应模型新格式"""
|
|
|
|
term_name: str = Field("", alias="zxjxjhm")
|
|
status_code: str = Field("", alias="retString")
|
|
|
|
|
|
class CourseSelectionStatus(BaseModel):
|
|
"""选课状态信息"""
|
|
|
|
can_select: bool = Field(False, description="是否可以选课")
|