From 295d019d16169c613c7e593e5fc7a0354489b8c3 Mon Sep 17 00:00:00 2001 From: Wenjie Zhang Date: Tue, 30 Dec 2025 23:57:20 +0800 Subject: [PATCH] =?UTF-8?q?style:=20=E7=BB=9F=E4=B8=80=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=A4=B9=E5=9B=BE=E6=A0=87=E6=A0=B7=E5=BC=8F=E5=B9=B6=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E7=BC=A9=E8=BF=9B=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 更新前端文件夹相关图标为更一致的填充样式 修复后端Python代码中的缩进不一致问题 --- server/routers/knowledge_router.py | 25 +++++++++--------- src/knowledge/base.py | 38 ++++++++++++++------------- web/src/components/FileTable.vue | 41 ++++++++++++++++-------------- web/src/views/DataBaseInfoView.vue | 8 +++--- 4 files changed, 59 insertions(+), 53 deletions(-) diff --git a/server/routers/knowledge_router.py b/server/routers/knowledge_router.py index a5538b14..bfa65056 100644 --- a/server/routers/knowledge_router.py +++ b/server/routers/knowledge_router.py @@ -398,12 +398,12 @@ async def delete_document(db_id: str, doc_id: str, current_user: User = Depends( logger.debug(f"DELETE document {doc_id} info in {db_id}") try: file_meta_info = await knowledge_base.get_file_basic_info(db_id, doc_id) - + # Check if it is a folder is_folder = file_meta_info.get("meta", {}).get("is_folder", False) if is_folder: - await knowledge_base.delete_folder(db_id, doc_id) - return {"message": "文件夹删除成功"} + await knowledge_base.delete_folder(db_id, doc_id) + return {"message": "文件夹删除成功"} file_name = file_meta_info.get("meta", {}).get("filename") @@ -1159,11 +1159,11 @@ async def get_sample_questions(db_id: str, current_user: User = Depends(get_admi @knowledge.post("/databases/{db_id}/folders") async def create_folder( - db_id: str, - folder_name: str = Body(..., embed=True), - parent_id: str | None = Body(None, embed=True), - current_user: User = Depends(get_admin_user) - ): + db_id: str, + folder_name: str = Body(..., embed=True), + parent_id: str | None = Body(None, embed=True), + current_user: User = Depends(get_admin_user), +): """创建文件夹""" try: return await knowledge_base.create_folder(db_id, folder_name, parent_id) @@ -1171,12 +1171,13 @@ async def create_folder( logger.error(f"创建文件夹失败 {e}, {traceback.format_exc()}") raise HTTPException(status_code=500, detail=str(e)) + @knowledge.put("/databases/{db_id}/documents/{doc_id}/move") async def move_document( - db_id: str, - doc_id: str, - new_parent_id: str | None = Body(..., embed=True), - current_user: User = Depends(get_admin_user) + db_id: str, + doc_id: str, + new_parent_id: str | None = Body(..., embed=True), + current_user: User = Depends(get_admin_user), ): """移动文件或文件夹""" logger.debug(f"Move document {doc_id} to {new_parent_id} in {db_id}") diff --git a/src/knowledge/base.py b/src/knowledge/base.py index 2a0c8034..7d03ffa2 100644 --- a/src/knowledge/base.py +++ b/src/knowledge/base.py @@ -213,8 +213,9 @@ class KnowledgeBase(ABC): def create_folder(self, db_id: str, folder_name: str, parent_id: str | None = None) -> dict: """Create a folder in the database.""" import uuid + folder_id = f"folder-{uuid.uuid4()}" - + self.files_meta[folder_id] = { "file_id": folder_id, "filename": folder_name, @@ -224,7 +225,7 @@ class KnowledgeBase(ABC): "created_at": utc_isoformat(), "status": "done", "path": folder_name, - "file_type": "folder" + "file_type": "folder", } self._save_metadata() return self.files_meta[folder_id] @@ -319,16 +320,16 @@ class KnowledgeBase(ABC): if file_info.get("database_id") == db_id: created_at = self._normalize_timestamp(file_info.get("created_at")) db_files[file_id] = { - "file_id": file_id, - "filename": file_info.get("filename", ""), - "path": file_info.get("path", ""), - "type": file_info.get("file_type", ""), - "status": file_info.get("status", "done"), - "created_at": created_at, - "processing_params": file_info.get("processing_params", None), - "is_folder": file_info.get("is_folder", False), - "parent_id": file_info.get("parent_id", None), - } + "file_id": file_id, + "filename": file_info.get("filename", ""), + "path": file_info.get("path", ""), + "type": file_info.get("file_type", ""), + "status": file_info.get("status", "done"), + "created_at": created_at, + "processing_params": file_info.get("processing_params", None), + "is_folder": file_info.get("is_folder", False), + "parent_id": file_info.get("parent_id", None), + } # 按创建时间倒序排序文件列表 sorted_files = dict( @@ -465,24 +466,25 @@ class KnowledgeBase(ABC): async def delete_folder(self, db_id: str, folder_id: str) -> None: """ Recursively delete a folder and its content. - + Args: db_id: Database ID folder_id: Folder ID to delete """ # Find all children children = [ - fid for fid, meta in self.files_meta.items() + fid + for fid, meta in self.files_meta.items() if meta.get("database_id") == db_id and meta.get("parent_id") == folder_id ] - + for child_id in children: child_meta = self.files_meta.get(child_id) if child_meta and child_meta.get("is_folder"): await self.delete_folder(db_id, child_id) else: await self.delete_file(db_id, child_id) - + # Delete the folder itself # We call delete_file which should handle the actual removal. # Implementations should ensure they handle folder deletion gracefully (e.g. skip vector deletion) @@ -512,13 +514,13 @@ class KnowledgeBase(ABC): # Check if new_parent_id is a child of file_id (or is file_id itself) if new_parent_id == file_id: raise ValueError("Cannot move a folder into itself") - + # Walk up the tree from new_parent_id current = new_parent_id while current: parent_meta = self.files_meta.get(current) if not parent_meta: - break # Should not happen if integrity is maintained + break # Should not happen if integrity is maintained if current == file_id: raise ValueError("Cannot move a folder into its own subfolder") current = parent_meta.get("parent_id") diff --git a/web/src/components/FileTable.vue b/web/src/components/FileTable.vue index 4bd44e40..e1e8043c 100644 --- a/web/src/components/FileTable.vue +++ b/web/src/components/FileTable.vue @@ -12,7 +12,7 @@ type="secondary" @click="showCreateFolderModal" :loading="refreshing" - :icon="h(FolderOutlined)" + :icon="h(FolderAddOutlined)" style="margin-left: 8px;" >新建文件夹 @@ -141,8 +141,8 @@