就业管理模块
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from datetime import date, datetime
|
||||
from typing import Optional
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field
|
||||
|
||||
|
||||
class EmploymentBase(BaseModel):
|
||||
student_id: str = Field(..., max_length=20, description="学生ID")
|
||||
class_id: Optional[str] = Field(None, max_length=64, description="班级ID")
|
||||
education: Optional[str] = Field(None, max_length=20, description="学历:专科/本科/硕士/博士")
|
||||
code: str = Field(..., max_length=12, description="就业城市编码")
|
||||
job_title: str = Field(..., max_length=50, description="就业岗位名称")
|
||||
company_name: str = Field(..., max_length=128, description="就业公司名称")
|
||||
salary: Optional[float] = Field(None, description="就业月薪(元)")
|
||||
offer_date: date = Field(..., description="offer下发/签约时间")
|
||||
resume_open_date: Optional[date] = Field(None, description="简历开放时间")
|
||||
employment_int: int = Field(..., description="就业状态:1=已就业,2=升学,3=灵活就业")
|
||||
|
||||
|
||||
class EmploymentUpsert(EmploymentBase):
|
||||
pass
|
||||
|
||||
|
||||
class EmploymentUpdate(BaseModel):
|
||||
class_id: Optional[str] = Field(None, max_length=64, description="班级ID")
|
||||
education: Optional[str] = Field(None, max_length=20, description="学历")
|
||||
code: Optional[str] = Field(None, max_length=12, description="就业城市编码")
|
||||
job_title: Optional[str] = Field(None, max_length=50, description="就业岗位名称")
|
||||
company_name: Optional[str] = Field(None, max_length=128, description="就业公司名称")
|
||||
salary: Optional[float] = Field(None, description="就业月薪(元)")
|
||||
offer_date: Optional[date] = Field(None, description="offer下发/签约时间")
|
||||
resume_open_date: Optional[date] = Field(None, description="简历开放时间")
|
||||
employment_int: Optional[int] = Field(None, description="就业状态:1=已就业,2=升学,3=灵活就业")
|
||||
|
||||
model_config = ConfigDict(
|
||||
json_schema_extra={
|
||||
"example": {
|
||||
"class_id": "c01",
|
||||
"education": "本科",
|
||||
"code": "310115",
|
||||
"job_title": "AI开发工程师",
|
||||
"company_name": "上海拼多多",
|
||||
"salary": 25000,
|
||||
"offer_date": "2026-08-01",
|
||||
"resume_open_date": "2026-05-15",
|
||||
"employment_int": 1,
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
class EmploymentOut(BaseModel):
|
||||
emp_id: str = Field(..., max_length=32, description="就业记录ID")
|
||||
student_id: str = Field(..., max_length=20, description="学生ID")
|
||||
class_id: Optional[str] = Field(None, max_length=64, description="班级ID")
|
||||
education: Optional[str] = Field(None, max_length=20, description="学历")
|
||||
code: str = Field(..., max_length=12, description="就业城市编码")
|
||||
job_title: str = Field(..., max_length=50, description="就业岗位名称")
|
||||
company_name: str = Field(..., max_length=128, description="就业公司名称")
|
||||
salary: Optional[float] = Field(None, description="就业月薪(元)")
|
||||
offer_date: date = Field(..., description="offer下发/签约时间")
|
||||
resume_open_date: Optional[date] = Field(None, description="简历开放时间")
|
||||
employment_int: int = Field(..., description="就业状态")
|
||||
is_deleted: int = Field(..., description="是否删除 0否1是")
|
||||
create_time: datetime = Field(..., description="创建时间")
|
||||
update_time: datetime = Field(..., description="更新时间")
|
||||
|
||||
|
||||
# ==================== 新增功能点 ====================
|
||||
|
||||
class ClassEmploymentStats(BaseModel):
|
||||
class_id: str = Field(..., description="班级ID")
|
||||
total_count: int = Field(..., description="班级总就业记录数")
|
||||
employed_count: int = Field(..., description="已就业")
|
||||
graduate_count: int = Field(..., description="升学")
|
||||
flexible_count: int = Field(..., description="灵活就业")
|
||||
employment_rate: float = Field(..., description="就业率(%)")
|
||||
avg_salary: Optional[float] = Field(None, description="平均薪资")
|
||||
max_salary: Optional[float] = Field(None, description="最高薪资")
|
||||
min_salary: Optional[float] = Field(None, description="最低薪资")
|
||||
job_title_distribution: dict = Field(..., description="各岗位人数分布")
|
||||
|
||||
|
||||
class SalaryMarketComparison(BaseModel):
|
||||
code: str = Field(..., description="城市编码")
|
||||
job_title: str = Field(..., description="岗位名称")
|
||||
sample_count: int = Field(..., description="行情样本数")
|
||||
avg_salary: Optional[float] = Field(None, description="行情平均薪资")
|
||||
max_salary: Optional[float] = Field(None, description="行情最高薪资")
|
||||
min_salary: Optional[float] = Field(None, description="行情最低薪资")
|
||||
current_student_id: str = Field(..., description="学生ID")
|
||||
current_salary: Optional[float] = Field(None, description="当前学生薪资")
|
||||
deviation_percent: Optional[float] = Field(None, description="偏差百分比")
|
||||
advice: str = Field(..., description="薪资建议")
|
||||
Reference in New Issue
Block a user