From f5fedb4deca9ded6d0ccd1a036676fd4a2ea63e0 Mon Sep 17 00:00:00 2001 From: Wenjie Zhang Date: Thu, 22 Jan 2026 02:16:08 +0800 Subject: [PATCH] =?UTF-8?q?fix(knowledge-tool):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E7=9A=84=20ID=20=E8=80=8C=E4=B8=8D=E6=98=AF?= =?UTF-8?q?=E7=9F=A5=E8=AF=86=E5=BA=93=E7=9A=84=20bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/routers/chat_router.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/server/routers/chat_router.py b/server/routers/chat_router.py index cded2f29..9aff9a62 100644 --- a/server/routers/chat_router.py +++ b/server/routers/chat_router.py @@ -283,27 +283,27 @@ async def save_agent_config( from src import knowledge_base if "knowledges" in config and config["knowledges"]: - # 获取用户有权访问的知识库 ID + # 获取用户有权访问的知识库名称 try: user_info = {"role": current_user.role, "department_id": current_user.department_id} accessible_databases = await knowledge_base.get_databases_by_user(user_info) - accessible_db_ids = { - db.get("db_id") for db in accessible_databases.get("databases", []) if db.get("db_id") + accessible_kb_names = { + db.get("name") for db in accessible_databases.get("databases", []) if db.get("name") } except Exception as db_error: logger.warning(f"获取知识库列表失败: {db_error}") # 如果获取失败,superadmin 可以访问所有,非 superadmin 无法访问任何 if current_user.role != "superadmin": raise HTTPException(status_code=500, detail="无法获取知识库列表") - # 回退:获取所有数据库 ID + # 回退:获取所有数据库名称 from src.repositories.knowledge_base_repository import KnowledgeBaseRepository kb_repo = KnowledgeBaseRepository() rows = await kb_repo.get_all() - accessible_db_ids = {row.db_id for row in rows} + accessible_kb_names = {row.name for row in rows if row.name} # 检查配置中的知识库是否都可用 - invalid_kbs = [kb for kb in config["knowledges"] if kb not in accessible_db_ids] + invalid_kbs = [kb for kb in config["knowledges"] if kb not in accessible_kb_names] if invalid_kbs: raise HTTPException(status_code=403, detail=f"无权访问以下知识库: {', '.join(invalid_kbs)}") # === 校验结束 ===