from pydantic import BaseModel, field_validator from typing import Optional class LocalConfigPutRequest(BaseModel): sso_enable_redirect: Optional[bool] = None cas_base_url: Optional[str] = None app_public_base_url: Optional[str] = None frontend_base_url: Optional[str] = None sso_service_path: Optional[str] = None sso_login_url: Optional[str] = None sso_logout_url: Optional[str] = None admin_api_key: Optional[str] = None @field_validator("cas_base_url", "app_public_base_url", "frontend_base_url", "sso_login_url", "sso_logout_url") @classmethod def validate_url(cls, v: Optional[str]) -> Optional[str]: if v is not None and v != "" and not (v.startswith("http://") or v.startswith("https://")): raise ValueError("URL 必须以 http:// 或 https:// 开头") return v @field_validator("admin_api_key") @classmethod def validate_admin_api_key(cls, v: Optional[str]) -> Optional[str]: if v is not None and v != "" and len(v) < 16: raise ValueError("密钥长度不能少于 16 个字符") return v class LocalConfigResponse(BaseModel): code: int = 0 message: str = "success" data: Optional[dict] = None