feat: 租户管理体系建设 CRUD + 各业务模块接入 tenant_id

1. 新增 Tenant 模型(tenants 表),支持租户创建、重命名、删除
2. 新增 /api/tenants CRUD 蓝图,default 租户不可删除
3. 数据库初始化时自动创建默认租户记录
4. Dashboard 新增租户管理标签页(创建/编辑/删除租户)
5. 各业务模块写入数据时正确传递 tenant_id:
   - realtime_chat: create_session 和 _save_conversation 支持 tenant_id
   - dialogue_manager: _save_conversation 和 create_work_order 支持 tenant_id
   - conversation_history: save_conversation 支持 tenant_id
   - workorder_sync: sync_from_feishu 支持 tenant_id
   - websocket_server: create_session 传递 tenant_id
   - HTTP chat API: create_session 传递 tenant_id
   - feishu_sync API: 同步时传递 tenant_id
   - workorders API: 创建工单时传递 tenant_id
6. 网页对话入口添加租户选择器
7. 知识库搜索按租户隔离(realtime_chat 中 _search_knowledge 传递 tenant_id)
8. 初始化时自动加载租户列表填充选择器
This commit is contained in:
2026-04-02 09:33:16 +08:00
parent 7013e9db70
commit edb0616f7f
14 changed files with 465 additions and 15 deletions

View File

@@ -273,13 +273,16 @@ class DialogueManager:
work_order_id: Optional[int],
user_message: str,
assistant_response: str,
knowledge_used: str
knowledge_used: str,
tenant_id: Optional[str] = None
) -> int:
"""保存对话记录"""
try:
from src.core.models import DEFAULT_TENANT
with db_manager.get_session() as session:
conversation = Conversation(
work_order_id=work_order_id,
tenant_id=tenant_id or DEFAULT_TENANT,
user_message=user_message,
assistant_response=assistant_response,
knowledge_used=knowledge_used,
@@ -310,10 +313,12 @@ class DialogueManager:
title: str,
description: str,
category: str,
priority: str = "medium"
priority: str = "medium",
tenant_id: Optional[str] = None
) -> Dict[str, Any]:
"""创建工单"""
try:
from src.core.models import DEFAULT_TENANT
with db_manager.get_session() as session:
work_order = WorkOrder(
order_id=f"WO{datetime.now().strftime('%Y%m%d%H%M%S')}",
@@ -322,6 +327,7 @@ class DialogueManager:
category=category,
priority=priority,
status="open",
tenant_id=tenant_id or DEFAULT_TENANT,
created_at=datetime.now()
)
session.add(work_order)