2026-10-15 06:19:58 -04:00
|
|
|
|
"""系统设置(公司信息)请求/响应模型。
|
|
|
|
|
|
|
|
|
|
|
|
`SettingPublicOut` 与 `SettingOut` **刻意不共用**:public 端点无鉴权,
|
|
|
|
|
|
响应字段必须白名单显式列出——将来往 SettingOut 加敏感字段时不会
|
|
|
|
|
|
顺着复用链泄漏到匿名端点。
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
2026-10-16 02:23:53 -04:00
|
|
|
|
from pydantic import BaseModel, ConfigDict, Field
|
2026-10-15 06:19:58 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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):
|
2026-10-16 02:23:53 -04:00
|
|
|
|
"""公司信息更新。
|
|
|
|
|
|
|
|
|
|
|
|
str_strip_whitespace:全空白名称先剥再校验——否则 `" "` 过 min_length=1
|
|
|
|
|
|
后由服务层 strip 成空串入库(200 成功但 public 端点返回空公司名)。
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
|
|
model_config = ConfigDict(str_strip_whitespace=True)
|
2026-10-15 06:19:58 -04:00
|
|
|
|
|
|
|
|
|
|
company_name: str = Field(min_length=1, max_length=64, description="公司名称")
|