Merge remote-tracking branch 'origin/conding' into conding

This commit is contained in:
msj
2026-09-22 14:34:32 +08:00
17 changed files with 355 additions and 257 deletions
+20 -27
View File
@@ -1,40 +1,33 @@
from fastapi import HTTPException
from pydantic import BaseModel, Field,field_validator, model_validator
from datetime import date
from typing import Optional
class EmploymentRequest(BaseModel):
stu_id: int=Field(ge=1)
email: str|None
employment_opening_date:date
offer_issuance_date:date
company_name:str
company_address:str|None
salary:float
@field_validator('stu_id')
@classmethod
def check_stu_id(cls,v):
if v <= 0:
raise ValueError('输入有误,学生ID必须大于0')
return v
stu_id: int=Field(ge=1,description='学生编号')
email: Optional[str] = Field(None, description='邮箱')
employment_opening_date:Optional[date] = Field(None, description='就业开放日期')
offer_issuance_date:Optional[date] = Field(None, description='offer下发日期')
company_name:Optional[str] = Field(None, description='公司名称')
company_address:Optional[str] = Field(None, description='公司地址')
salary:Optional[float] = Field(None, description='薪资')
@model_validator(mode='after')
def check_date(self):
if self.employment_opening_date > self.offer_issuance_date:
raise ValueError('offer下发日期不能早于就业开放日期')
if self.employment_opening_date and self.offer_issuance_date:
if self.employment_opening_date > self.offer_issuance_date:
raise ValueError('offer下发日期不能早于就业开放日期')
return self
class EmploymentResponse(BaseModel):
code:int = 200
detail:str = 'OK'
emp_id:int
stu_id: int
stu_name:Optional[str] = None
class_id:int
email: str | None
employment_opening_date: date
offer_issuance_date: date
company_name: str
company_address: str | None
salary: float
emp_id: int
stu_id:int
stu_name: Optional[str] = None
class_id: Optional[int] = None
email: str|None = None
employment_opening_date:date|None = None
offer_issuance_date:date|None = None
company_name:str|None = None
company_address:str|None = None
salary:float|None = None
+19 -8
View File
@@ -1,21 +1,32 @@
from model.all_model import *
from pydantic import BaseModel, Field, field_validator
from fastapi import HTTPException,Form
class GradeRequest(BaseModel):
stu_id:int = Form(description="学生编号")
exam_order:int = Form(description='考核序次')
score:float = Form(description='成绩')
stu_id:int = Field(description="学生编号")
exam_order:int = Field(description='考核序次')
score:float = Field(description='成绩')
@field_validator("score")
def check_score(cls, v):
if not (0 <= v <= 100):
raise ValueError("成绩必须在0~100之间")
return v
@field_validator("exam_order")
def check_exam_order(cls, v):
if v <= 0:
raise ValueError("考核序次必须大于0")
return v
class GradeResponse(BaseModel):
code: int = 200
detail: str = 'OK'
score_id: float
stu_id:int
exam_order:int
score:float
class GradeUpdate(BaseModel):
exam_order: int | None = Form( description="考核序次")
score: float | None = Form( description="成绩")
# class GradeUpdate(BaseModel):
# exam_order: int | None = Field( None,description="考核序次")
# score: float | None = Field( None,description="成绩")
+55 -15
View File
@@ -1,8 +1,8 @@
from pydantic import BaseModel,Field
from pydantic import BaseModel,field_serializer
from datetime import date
from typing import List, Optional
class AllStuResponse(BaseModel):
all_cnt: int
class_id: int
gender: str | None
cnt: int
@@ -11,21 +11,61 @@ class AcgScoreResponse(BaseModel):
class_id: int
avg_score: float
class GetScoreResponse(BaseModel):
code:int = 200
detail:str = 'ok'
score:float
stu_name: str | None = None
age: int | None = None
gender: str | None = None
native_place: str | None = None
school: str | None = None
major: str | None = None
degree: str | None = None
admission_date: date | None = None
graduation_date: date | None = None
progress: int = 0
@field_serializer('progress')
def int_to_string(self, progress: int):
d1 = {
0: '学习中',
1: '求职中',
2: '已就业'
}
return d1.get(progress, '暂不明确')
class GetStuResponse(BaseModel):
code:int = 200
detail:str = 'ok'
salary:float
stu_name: str | None = None
age: int | None = None
gender: str | None = None
native_place: str | None = None
school: str | None = None
major: str | None = None
degree: str | None = None
admission_date: date | None = None
graduation_date: date | None = None
progress: int = 0
@field_serializer('progress')
def int_to_string(self, progress: int):
d1 = {
0: '学习中',
1: '求职中',
2: '已就业'
}
return d1.get(progress, '暂不明确')
class AvgDayResponse(BaseModel):
class_id: int
avg_days: str | None
avg_days: float | None
class EmpRequest(BaseModel):
class AllDayResponse(BaseModel):
code:int = 200
detail:str = 'ok'
stu_id: int
class EmpItem(BaseModel):
stu_id: int
employment_opening_date:date | None
offer_issuance_date:date | None
employment_duration_day: int | None
class AllEmpResponse(BaseModel):
code: int
msg: str
data: List[EmpItem]
diff_days: int | None
+2 -2
View File
@@ -41,7 +41,7 @@ class StudentResponse(BaseModel):
progress:int
@field_serializer('progress')
def int_to_string(cls,progress:int):
def int_to_string(self,progress:int):
d1 ={
0:'学习中',
1:'求职中',
@@ -69,7 +69,7 @@ class StugetResponse(BaseModel):
progress: int = 0
@field_serializer('progress')
def int_to_string(cls, progress: int):
def int_to_string(self, progress: int):
d1 = {
0: '学习中',
1: '求职中',