# =============================================================================
# 企微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]
