""" Template schemas for request/response validation. Defines Pydantic models for template management and XML validation. """ from pydantic import BaseModel, Field from typing import Optional, List from datetime import datetime class TemplateCategory(BaseModel): """模板类别""" id: str = Field(..., description="类别ID") name: str = Field(..., description="类别名称") description: str = Field(..., description="类别描述") icon: Optional[str] = Field(None, description="类别图标") class TemplateResponse(BaseModel): """模板响应""" id: str = Field(..., description="模板ID") name: str = Field(..., description="模板名称") category: str = Field(..., description="模板类别") description: str = Field(..., description="模板描述") config: str = Field(..., description="XML 配置") preview_image: Optional[str] = Field(None, description="预览图片URL") tags: List[str] = Field(default_factory=list, description="标签列表") class TemplateListResponse(BaseModel): """模板列表响应""" templates: List[TemplateResponse] = Field(..., description="模板列表") total: int = Field(..., description="总数") class TemplateCategoryListResponse(BaseModel): """模板类别列表响应""" categories: List[TemplateCategory] = Field(..., description="类别列表") class ConfigValidationRequest(BaseModel): """配置验证请求""" config: str = Field(..., min_length=1, description="XML 配置字符串") class ValidationError(BaseModel): """验证错误""" line: int = Field(..., description="错误行号") column: int = Field(..., description="错误列号") message: str = Field(..., description="错误信息") class ConfigValidationResponse(BaseModel): """配置验证响应""" valid: bool = Field(..., description="是否有效") errors: List[ValidationError] = Field(default_factory=list, description="错误列表")