# ============================================================================= # 企微IT智能服务台 — 系统配置模型 # ============================================================================= # 说明:对应数据库 system_configs 表,存储系统级配置项 # 包括:关键词列表、评分阈值、话术模板等 # 优势:配置存在数据库中,支持后台动态修改,无需重启服务 # ============================================================================= import uuid from datetime import datetime from sqlalchemy import DateTime, String, Text from sqlalchemy.orm import Mapped, mapped_column from app.database import Base class SystemConfig(Base): """系统配置模型 — 对应 system_configs 表。 将可动态修改的配置项存储在数据库中, 支持后台修改后立即生效,无需重启服务。 Attributes: id: 配置唯一标识(UUID,数据库自动生成) config_key: 配置键(唯一,如 "hand_raise_keywords") config_value: 配置值(JSON 字符串或纯文本) description: 配置说明 updated_at: 更新时间 """ # 表名(必须和架构文档 DDL 一致) __tablename__ = "system_configs" # -------------------------------------------------------------------------- # 字段定义 # -------------------------------------------------------------------------- # 主键:UUID,Python端生成(兼容PostgreSQL和SQLite) id: Mapped[str] = mapped_column( String(36), primary_key=True, default=lambda: str(uuid.uuid4()), ) # 配置键(唯一,用于查找配置项) # 示例:hand_raise_keywords, emotion_keywords_angry, polling_interval_seconds config_key: Mapped[str] = mapped_column( String(128), unique=True, nullable=False, comment="配置键", ) # 配置值(存储 JSON 字符串或纯文本) # JSON 示例:'["转人工","人工","人工服务"]' # 纯文本示例:'3'(表示阈值) config_value: Mapped[str] = mapped_column( Text, nullable=False, comment="配置值(JSON字符串或纯文本)", ) # 配置说明(方便管理员理解配置用途) description: Mapped[str] = mapped_column( String(256), nullable=False, default="", 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""