"""系统设置(公司信息)请求/响应模型。 `SettingPublicOut` 与 `SettingOut` **刻意不共用**:public 端点无鉴权, 响应字段必须白名单显式列出——将来往 SettingOut 加敏感字段时不会 顺着复用链泄漏到匿名端点。 """ from pydantic import BaseModel, ConfigDict, Field class SettingOut(BaseModel): """公司信息(管理端)。""" company_name: str logo_url: str | None = None class SettingPublicOut(BaseModel): """公司信息(匿名端点白名单):登录页展示所需的两个字段。""" company_name: str logo_url: str | None = None class SettingUpdateIn(BaseModel): """公司信息更新。 str_strip_whitespace:全空白名称先剥再校验——否则 `" "` 过 min_length=1 后由服务层 strip 成空串入库(200 成功但 public 端点返回空公司名)。 """ model_config = ConfigDict(str_strip_whitespace=True) company_name: str = Field(min_length=1, max_length=64, description="公司名称")