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)