# ============================================================================= # 企微IT智能服务台 — 审批流程链接模型 # ============================================================================= # 说明:对应数据库 approval_links 表,存储审批流程的外部链接 # 分类:IT/HR/行政/财务 # 在H5用户端右侧AI助手面板中展示,方便员工快速访问审批页面 # ============================================================================= import uuid from datetime import datetime from sqlalchemy import DateTime, Index, Integer, String, Text from sqlalchemy.orm import Mapped, mapped_column from app.database import Base class ApprovalLink(Base): """审批流程链接模型 — 对应 approval_links 表。 存储公司各类审批流程的外部链接, 在H5用户端AI助手面板中按分类展示。 Attributes: id: 链接唯一标识(UUID,数据库自动生成) category: 分类(IT/HR/行政/财务) title: 审批名称 url: 审批链接 sort_order: 排序权重 created_at: 创建时间 updated_at: 更新时间 """ # 表名(必须和架构文档 DDL 一致) __tablename__ = "approval_links" # -------------------------------------------------------------------------- # 字段定义 # -------------------------------------------------------------------------- # 主键:UUID,Python端生成(兼容PostgreSQL和SQLite) id: Mapped[str] = mapped_column( String(36), primary_key=True, default=lambda: str(uuid.uuid4()), ) # 分类(按部门分类,方便在H5面板中折叠展示) category: Mapped[str] = mapped_column( String(64), nullable=False, comment="分类:IT/HR/行政/财务", ) # 审批名称(展示给用户看的标题) title: Mapped[str] = mapped_column( String(128), nullable=False, comment="审批名称", ) # 审批链接(点击后跳转到对应的审批页面) url: Mapped[str] = mapped_column( Text, nullable=False, comment="审批链接", ) # 排序权重(同一分类内排序,数值越小越靠前) sort_order: Mapped[int] = mapped_column( Integer, nullable=False, default=0, comment="排序权重", ) # 创建时间 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="更新时间", ) # -------------------------------------------------------------------------- # 索引定义(和架构文档 DDL 严格一致) # -------------------------------------------------------------------------- __table_args__ = ( # 按分类查询(如获取所有"IT"分类的审批链接) Index("idx_al_category", "category"), ) def __repr__(self) -> str: """链接对象的字符串表示,方便调试。""" return f""