# ============================================================================= # 企微IT智能服务台 — 快速回复模板 Pydantic Schema # ============================================================================= # 说明:定义快速回复模板的请求/响应数据结构 # 支持 CRUD 操作:创建、读取、更新、删除 # ============================================================================= from datetime import datetime from typing import Any, Dict, List, Optional from pydantic import BaseModel, Field # -------------------------------------------------------------------------- # 创建快速回复模板 Schema # -------------------------------------------------------------------------- class QuickReplyCreate(BaseModel): """创建快速回复模板请求 Schema。 Attributes: category: 分类(账号/网络/软件/硬件/通用) title: 模板标题 content: 模板内容(支持 {employee_name} 等变量) variables: 可用变量列表 sort_order: 排序权重 """ category: str = Field(default="通用", max_length=64, description="分类") title: str = Field(..., min_length=1, max_length=128, description="模板标题") content: str = Field(..., min_length=1, description="模板内容") variables: List[str] = Field(default_factory=list, description="可用变量列表") sort_order: int = Field(default=0, description="排序权重") # -------------------------------------------------------------------------- # 更新快速回复模板 Schema # -------------------------------------------------------------------------- class QuickReplyUpdate(BaseModel): """更新快速回复模板请求 Schema。 所有字段可选,只更新传入的字段。 Attributes: category: 分类 title: 模板标题 content: 模板内容 variables: 可用变量列表 sort_order: 排序权重 """ category: Optional[str] = Field(None, max_length=64, description="分类") title: Optional[str] = Field(None, max_length=128, description="模板标题") content: Optional[str] = Field(None, description="模板内容") variables: Optional[List[str]] = Field(None, description="可用变量列表") sort_order: Optional[int] = Field(None, description="排序权重") # -------------------------------------------------------------------------- # 快速回复模板响应 Schema # -------------------------------------------------------------------------- class QuickReplyResponse(BaseModel): """快速回复模板响应 Schema。 返回给前端的快速回复模板数据结构。 使用 from_attributes=True 支持从 SQLAlchemy 模型直接转换。 Attributes: id: 模板ID category: 分类 title: 模板标题 content: 模板内容 variables: 可用变量列表 sort_order: 排序权重 status: 状态(draft/pending_review/approved/rejected) version: 版本号 submitted_by: 提交人 agent_id created_at: 创建时间 updated_at: 更新时间 """ id: str category: str title: str content: str variables: List[str] sort_order: int status: str = "approved" version: int = 1 submitted_by: Optional[str] = None created_at: datetime updated_at: datetime model_config = {"from_attributes": True} # -------------------------------------------------------------------------- # 快速回复模板列表响应 Schema # -------------------------------------------------------------------------- class QuickReplyListResponse(BaseModel): """快速回复模板列表响应 Schema。 Attributes: items: 模板列表 """ items: List[QuickReplyResponse]