From b87f2f2e0203981a64dfdb0d558d8a31b7192b03 Mon Sep 17 00:00:00 2001 From: Wenjie Zhang Date: Tue, 24 Jun 2025 15:42:59 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E7=9F=A5=E8=AF=86=E5=BA=93=E4=BF=A1=E6=81=AF=E5=8A=A0=E8=BD=BD?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E8=BF=87=E4=B9=85=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/knowledgebase.py | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/src/core/knowledgebase.py b/src/core/knowledgebase.py index 9d7456a9..f5798dd9 100644 --- a/src/core/knowledgebase.py +++ b/src/core/knowledgebase.py @@ -118,8 +118,40 @@ class KnowledgeBase: def get_database_by_id(self, db_id): """根据ID获取知识库""" with db_manager.get_session_context() as session: - db = session.query(KnowledgeDatabase).options().filter_by(db_id=db_id).first() - return db.to_dict(with_nodes=False) if db else None # Assuming to_dict handles files and nodes + # 只查询数据库基本信息,不加载关联的文件数据 + db = session.query(KnowledgeDatabase).filter_by(db_id=db_id).first() + if not db: + return None + + # 直接构造返回数据,避免调用 to_dict 方法中的关联查询 + result = { + "id": db.id, + "db_id": db.db_id, + "name": db.name, + "description": db.description, + "embed_model": db.embed_model, + "dimension": db.dimension, + "metadata": db.meta_info or {}, + "created_at": db.created_at.isoformat() if db.created_at else None + } + + # 只查询文件的基本信息,不加载节点数据 + files = session.query(KnowledgeFile).filter_by(database_id=db_id).all() + result["files"] = {} + for file_obj in files: + # 获取节点数量,但不加载节点数据 + # node_count = session.query(KnowledgeNode).filter_by(file_id=file_obj.file_id).count() + result["files"][file_obj.file_id] = { + "file_id": file_obj.file_id, + "filename": file_obj.filename, + "path": file_obj.path, + "type": file_obj.file_type, + "status": file_obj.status, + # "node_count": node_count, # 太耗时 1.7s 左右 + "created_at": file_obj.created_at.timestamp() if file_obj.created_at else time.time() + } + + return result def create_database_record(self, db_id, name, description, embed_model=None, dimension=None, metadata=None): """在数据库中创建知识库记录"""