# ============================================================================= # 企微IT智能服务台 — 待办事项模型 # ============================================================================= # 说明:对应数据库 todo_items 表,存储坐席的待办事项 # 待办类型:ticket(工单)/approval(审批)/device(设备) 等 # ============================================================================= import uuid from datetime import datetime from typing import Any, Dict, Optional from sqlalchemy import Boolean, DateTime, Integer, JSON, String from sqlalchemy.orm import Mapped, mapped_column from app.database import Base class TodoItem(Base): """待办事项模型 — 对应 todo_items 表。 存储坐席需要跟进的各类待办事项,包括工单、审批、设备处理等。 Attributes: id: 待办唯一标识(UUID,数据库自动生成) type: 待办类型(ticket/approval/device) title: 待办标题 priority: 优先级(urgent/high/normal) description: 详细描述(JSON,存储结构化数据) status: 状态(pending/processing/resolved) assigned_agent_id: 分配的坐席ID(可为空,表示未分配) corp_id: 企业微信企业ID created_at: 创建时间 updated_at: 更新时间 """ # 表名 __tablename__ = "todo_items" # -------------------------------------------------------------------------- # 字段定义 # -------------------------------------------------------------------------- # 主键:UUID id: Mapped[str] = mapped_column( String(36), primary_key=True, default=lambda: str(uuid.uuid4()), comment="待办唯一标识", ) # 待办类型 type: Mapped[str] = mapped_column( String(20), nullable=False, default="ticket", comment="待办类型: ticket/approval/device", ) # 待办标题 title: Mapped[str] = mapped_column( String(256), nullable=False, default="", comment="待办标题", ) # 优先级 priority: Mapped[str] = mapped_column( String(20), nullable=False, default="normal", comment="优先级: urgent/high/normal", ) # 详细描述(JSON 格式,存储结构化数据) description: Mapped[Dict[str, Any]] = mapped_column( JSON, nullable=False, default=dict, comment="详细描述", ) # 状态 status: Mapped[str] = mapped_column( String(20), nullable=False, default="pending", comment="状态: pending/processing/resolved", ) # 分配的坐席ID(可为空,表示未分配) assigned_agent_id: Mapped[Optional[str]] = mapped_column( String(64), nullable=True, comment="分配的坐席ID", ) # 企业微信企业ID corp_id: Mapped[str] = mapped_column( String(64), nullable=False, default="", comment="企业微信企业ID", ) # 创建时间 created_at: Mapped[datetime] = mapped_column( DateTime(timezone=True), nullable=False, default=datetime.now, comment="创建时间", ) # 更新时间 updated_at: Mapped[datetime] = mapped_column( DateTime(timezone=True), nullable=False, default=datetime.now, onupdate=datetime.now, comment="更新时间", ) def __repr__(self) -> str: """待办事项对象的字符串表示。""" return ( f"" )