37 lines
1.4 KiB
Python
37 lines
1.4 KiB
Python
# schemas/employ_schema.py
|
|||
|
|
# 学生就业管理模块的 Pydantic 模式
|
||
|
|
|
||
|
|
from datetime import date
|
||
|
|
from decimal import Decimal
|
||
|
|
from typing import Optional
|
||
|
|
|
||
|
|
from pydantic import BaseModel, ConfigDict, Field
|
||
|
|
|
||
|
|
|
||
|
|
class EmployBase(BaseModel):
|
||
|
|
"""就业信息公共字段"""
|
||
|
|
emp_open_time: Optional[date] = Field(default=None, description="就业开放时间")
|
||
|
|
send_offer_time: Optional[date] = Field(default=None, description="收到Offer时间")
|
||
|
|
emp_company: Optional[str] = Field(default=None, max_length=50, description="就业公司名称")
|
||
|
|
salary: Optional[Decimal] = Field(default=None, ge=0, description="薪资(月薪/元)")
|
||
|
|
|
||
|
|
|
||
|
|
class EmployCreate(EmployBase):
|
||
|
|
"""新增就业记录时,stu_id 必填(与学生一对一)"""
|
||
|
|
stu_id: str = Field(..., max_length=15, description="学生编号(主键)")
|
||
|
|
|
||
|
|
|
||
|
|
class EmployUpdate(BaseModel):
|
||
|
|
"""更新就业信息:仅更新传入的字段"""
|
||
|
|
emp_open_time: Optional[date] = Field(default=None, description="就业开放时间")
|
||
|
|
send_offer_time: Optional[date] = Field(default=None, description="收到Offer时间")
|
||
|
|
emp_company: Optional[str] = Field(default=None, max_length=50, description="就业公司名称")
|
||
|
|
salary: Optional[Decimal] = Field(default=None, ge=0, description="薪资(月薪/元)")
|
||
|
|
|
||
|
|
|
||
|
|
class EmployOut(EmployBase):
|
||
|
|
"""就业响应模型(含 stu_id 与软删除标记)"""
|
||
|
|
stu_id: str
|
||
|
|
is_deleted: int
|
||
|
|
|
||
|
|
model_config = ConfigDict(from_attributes=True)
|