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:
2026-04-01 16:11:02 +08:00
parent e14e3ee7a5
commit 7013e9db70
27 changed files with 2753 additions and 276 deletions

View File

@@ -199,6 +199,7 @@ class DatabaseInitializer:
self._migrate_analytics_enhancements,
self._migrate_system_optimization_fields,
self._migrate_chat_sessions_table,
self._migrate_tenant_id_fields,
]
success_count = 0
@@ -477,6 +478,30 @@ class DatabaseInitializer:
print(f" 会话管理表迁移失败: {e}")
return False
def _migrate_tenant_id_fields(self) -> bool:
"""迁移:为核心表添加 tenant_id 多租户字段"""
print(" 检查多租户 tenant_id 字段...")
tables = [
"work_orders", "chat_sessions", "conversations",
"knowledge_entries", "analytics", "alerts", "users",
]
try:
added = 0
for table in tables:
if not self._column_exists(table, 'tenant_id'):
print(f" 添加 {table}.tenant_id ...")
self._add_table_columns(table, [
('tenant_id', "VARCHAR(50) DEFAULT 'default' NOT NULL")
])
added += 1
else:
print(f" {table}.tenant_id 已存在")
print(f" tenant_id 迁移完成,新增 {added} 个表")
return True
except Exception as e:
print(f" tenant_id 迁移失败: {e}")
return False
def _add_table_columns(self, table_name: str, fields: List[tuple]) -> bool:
"""为表添加字段"""
try: