"""平台账号 Schema 凭证语义约定: - login_password / api_config:Create 时传入即加密存储;Update 时 None 表示不修改。 - Read 永不返回凭证明文/密文,只给布尔标记(has_login_password / has_api_config)。 """ from datetime import datetime from typing import Optional from sqlmodel import SQLModel class AccountBase(SQLModel): name: str platform: Optional[str] = None remark: Optional[str] = None login_user: Optional[str] = None class AccountCreate(AccountBase): login_password: Optional[str] = None # 登录密码(明文传入,加密存储) api_config: Optional[str] = None # API 配置 JSON 字符串(加密存储,供 SDK 同步) class AccountUpdate(SQLModel): name: Optional[str] = None platform: Optional[str] = None remark: Optional[str] = None login_user: Optional[str] = None login_password: Optional[str] = None # None = 不修改 api_config: Optional[str] = None # None = 不修改 class AccountRead(AccountBase): id: int created_at: datetime asset_count: int = 0 # 引用该账号的资产数(列表接口填充) has_login_password: bool = False has_api_config: bool = False last_synced_at: Optional[datetime] = None