template.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. """
  2. Template schemas for request/response validation.
  3. Defines Pydantic models for template management and XML validation.
  4. """
  5. from pydantic import BaseModel, Field
  6. from typing import Optional, List
  7. from datetime import datetime
  8. class TemplateCategory(BaseModel):
  9. """模板类别"""
  10. id: str = Field(..., description="类别ID")
  11. name: str = Field(..., description="类别名称")
  12. description: str = Field(..., description="类别描述")
  13. icon: Optional[str] = Field(None, description="类别图标")
  14. class TemplateResponse(BaseModel):
  15. """模板响应"""
  16. id: str = Field(..., description="模板ID")
  17. name: str = Field(..., description="模板名称")
  18. category: str = Field(..., description="模板类别")
  19. description: str = Field(..., description="模板描述")
  20. config: str = Field(..., description="XML 配置")
  21. preview_image: Optional[str] = Field(None, description="预览图片URL")
  22. tags: List[str] = Field(default_factory=list, description="标签列表")
  23. class TemplateListResponse(BaseModel):
  24. """模板列表响应"""
  25. templates: List[TemplateResponse] = Field(..., description="模板列表")
  26. total: int = Field(..., description="总数")
  27. class TemplateCategoryListResponse(BaseModel):
  28. """模板类别列表响应"""
  29. categories: List[TemplateCategory] = Field(..., description="类别列表")
  30. class ConfigValidationRequest(BaseModel):
  31. """配置验证请求"""
  32. config: str = Field(..., min_length=1, description="XML 配置字符串")
  33. class ValidationError(BaseModel):
  34. """验证错误"""
  35. line: int = Field(..., description="错误行号")
  36. column: int = Field(..., description="错误列号")
  37. message: str = Field(..., description="错误信息")
  38. class ConfigValidationResponse(BaseModel):
  39. """配置验证响应"""
  40. valid: bool = Field(..., description="是否有效")
  41. errors: List[ValidationError] = Field(default_factory=list, description="错误列表")