"""封面模板 Schema。""" from datetime import datetime from typing import Any from pydantic import BaseModel, Field class CoverTemplateConfig(BaseModel): """封面模板配置。""" background_enabled: bool = Field(default=True, description="是否启用背景") background_color: str = Field(default="#000000", description="背景颜色") portrait_enabled: bool = Field(default=True, description="是否显示人像") title_text: str = Field(default="", description="主标题文字") subtitle_text: str = Field(default="", description="副标题文字") mask_enabled: bool = Field(default=False, description="是否启用蒙版") class CreateCoverTemplateRequest(BaseModel): """创建封面模板请求。""" name: str = Field(..., min_length=1, max_length=200, description="模板名称") thumbnail_url: str = Field(default="", description="缩略图 URL") config: CoverTemplateConfig | None = Field(default=None, description="模板配置") class UpdateCoverTemplateRequest(BaseModel): """更新封面模板请求。""" name: str | None = Field(default=None, min_length=1, max_length=200, description="模板名称") thumbnail_url: str | None = Field(default=None, description="缩略图 URL") config: CoverTemplateConfig | None = Field(default=None, description="模板配置") class CoverTemplateResponse(BaseModel): """封面模板响应。""" id: str name: str thumbnail_url: str is_system: bool created_at: datetime config: dict[str, Any] = Field(default_factory=dict) class Config: from_attributes = True class ListCoverTemplatesResponse(BaseModel): """封面模板列表响应。""" items: list[CoverTemplateResponse] total: int = Field(default=0, ge=0)