84 lines
2.8 KiB
Python
84 lines
2.8 KiB
Python
# =============================================================================
|
||
# 企微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"<SystemConfig(key={self.config_key}, value={self.config_value})>"
|