107 lines
3.7 KiB
Python
107 lines
3.7 KiB
Python
|
|
# =============================================================================
|
|||
|
|
# 企微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]
|