31 lines
1.3 KiB
Python
31 lines
1.3 KiB
Python
from pydantic import BaseModel, Field, ConfigDict
|
|||
|
|
from typing import Optional
|
||
|
|
|
||
|
|
# ---------- 请求模型 ----------
|
||
|
|
# 顾问模块:入参格式,字段长度跟 model/wl_advisor_model.py 里的列宽保持一致
|
||
|
|
class AdvisorCreate(BaseModel):
|
||
|
|
adv_name: str = Field(..., max_length=50, description="顾问姓名")
|
||
|
|
adv_gender: Optional[str] = Field(None, max_length=8, description="性别")
|
||
|
|
adv_phone: Optional[str] = Field(None, max_length=20, description="手机号")
|
||
|
|
adv_email: Optional[str] = Field(None, max_length=64, description="邮箱")
|
||
|
|
adv_region: Optional[str] = Field(None, max_length=64, description="负责区域/招生渠道")
|
||
|
|
|
||
|
|
class AdvisorUpdate(BaseModel):
|
||
|
|
adv_name: Optional[str] = Field(None, max_length=50)
|
||
|
|
adv_gender: Optional[str] = Field(None, max_length=8)
|
||
|
|
adv_phone: Optional[str] = Field(None, max_length=20)
|
||
|
|
adv_email: Optional[str] = Field(None, max_length=64)
|
||
|
|
adv_region: Optional[str] = Field(None, max_length=64)
|
||
|
|
|
||
|
|
# ---------- 响应模型 ----------
|
||
|
|
# is_deleted 是逻辑删除标记,不对外暴露
|
||
|
|
class AdvisorOut(BaseModel):
|
||
|
|
adv_id: int
|
||
|
|
adv_name: str
|
||
|
|
adv_gender: Optional[str] = None
|
||
|
|
adv_phone: Optional[str] = None
|
||
|
|
adv_email: Optional[str] = None
|
||
|
|
adv_region: Optional[str] = None
|
||
|
|
|
||
|
|
model_config = ConfigDict(from_attributes=True)
|