feat: 对话历史页面租户分组展示功能
- 新增 ConversationHistoryManager.get_tenant_summary() 按租户聚合会话统计 - get_sessions_paginated() 和 get_conversation_analytics() 增加 tenant_id 过滤 - 新增 GET /api/conversations/tenants 租户汇总端点 - sessions 和 analytics API 端点支持 tenant_id 查询参数 - 前端实现租户卡片列表视图和租户详情会话表格视图 - 实现面包屑导航、搜索范围限定、统计面板上下文切换 - 会话删除后自动检测空租户并返回列表视图 - dashboard.html 添加租户视图 DOM 容器 - 交互模式与知识库租户分组视图保持一致
This commit is contained in:
58
scripts/migrate_tenant.py
Normal file
58
scripts/migrate_tenant.py
Normal file
@@ -0,0 +1,58 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
多租户迁移脚本
|
||||
为现有数据表添加 tenant_id 字段,已有数据填充为 'default'
|
||||
"""
|
||||
|
||||
import sys
|
||||
import os
|
||||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||||
|
||||
from src.core.database import db_manager
|
||||
from sqlalchemy import text, inspect
|
||||
|
||||
TABLES_TO_MIGRATE = [
|
||||
"work_orders",
|
||||
"chat_sessions",
|
||||
"conversations",
|
||||
"knowledge_entries",
|
||||
"analytics",
|
||||
"alerts",
|
||||
"users",
|
||||
]
|
||||
|
||||
|
||||
def migrate():
|
||||
print("=" * 50)
|
||||
print("多租户迁移: 添加 tenant_id 字段")
|
||||
print("=" * 50)
|
||||
|
||||
with db_manager.get_session() as session:
|
||||
inspector = inspect(session.bind)
|
||||
|
||||
for table in TABLES_TO_MIGRATE:
|
||||
# 检查表是否存在
|
||||
if table not in inspector.get_table_names():
|
||||
print(f" [跳过] 表 {table} 不存在")
|
||||
continue
|
||||
|
||||
# 检查字段是否已存在
|
||||
columns = [col["name"] for col in inspector.get_columns(table)]
|
||||
if "tenant_id" in columns:
|
||||
print(f" [已有] 表 {table} 已包含 tenant_id")
|
||||
continue
|
||||
|
||||
# 添加字段
|
||||
print(f" [迁移] 表 {table} 添加 tenant_id ...")
|
||||
session.execute(text(
|
||||
f"ALTER TABLE {table} ADD COLUMN tenant_id VARCHAR(50) DEFAULT 'default' NOT NULL"
|
||||
))
|
||||
session.commit()
|
||||
print(f" [完成] 表 {table} 迁移成功")
|
||||
|
||||
print("\n迁移完成!")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
migrate()
|
||||
Reference in New Issue
Block a user