chore: initial baseline with P0-safety .gitignore
This commit is contained in:
@@ -0,0 +1,128 @@
|
||||
# =============================================================================
|
||||
# 企微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"<TodoItem(id={self.id}, type={self.type}, "
|
||||
f"title={self.title}, status={self.status})>"
|
||||
)
|
||||
Reference in New Issue
Block a user