From b5463870ffb1b0331514bab82ab61ae6ff1299ea Mon Sep 17 00:00:00 2001 From: zstar <65890619+zstar1003@users.noreply.github.com> Date: Sun, 29 Jun 2025 17:35:48 +0800 Subject: [PATCH] =?UTF-8?q?chores(knowledgebases):=20=E6=B8=85=E7=90=86?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=86=97=E4=BD=99=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 删除了多余的 parse_document 函数 - 重命名 parse_document_async 为 parse_document,作为主要的文档解析接口 --- .../server/routes/knowledgebases/routes.py | 24 +++---------------- .../server/services/files/base_service.py | 22 ++++++++--------- .../services/files/file2document_service.py | 15 ++++++------ .../server/services/knowledgebases/service.py | 2 +- 4 files changed, 22 insertions(+), 41 deletions(-) diff --git a/management/server/routes/knowledgebases/routes.py b/management/server/routes/knowledgebases/routes.py index c3f7343..6f596f3 100644 --- a/management/server/routes/knowledgebases/routes.py +++ b/management/server/routes/knowledgebases/routes.py @@ -159,24 +159,6 @@ def delete_document(doc_id): return error_response(str(e)) -@knowledgebase_bp.route("/documents//parse", methods=["POST"]) -def parse_document(doc_id): - """开始解析文档""" - # 处理 OPTIONS 预检请求 - if request.method == "OPTIONS": - response = success_response({}) - # 添加 CORS 相关头 - response.headers.add("Access-Control-Allow-Methods", "POST") - response.headers.add("Access-Control-Allow-Headers", "Content-Type,Authorization") - return response - - try: - result = KnowledgebaseService.async_parse_document(doc_id) - return success_response(data=result) - except Exception as e: - return error_response(str(e), code=500) - - @knowledgebase_bp.route("/documents//parse/progress", methods=["GET"]) def get_parse_progress(doc_id): """获取文档解析进度""" @@ -242,8 +224,8 @@ def set_system_embedding_config_route(): @knowledgebase_bp.route("/documents//parse", methods=["POST"]) -def parse_document_async(doc_id): # 函数名改为 async 以区分 - """开始异步解析单个文档""" +def parse_document(doc_id): + """开始解析文档""" if request.method == "OPTIONS": response = success_response({}) response.headers.add("Access-Control-Allow-Methods", "POST") @@ -251,7 +233,7 @@ def parse_document_async(doc_id): # 函数名改为 async 以区分 return response try: - result = KnowledgebaseService.parse_document(doc_id) # 调用同步版本 + result = KnowledgebaseService.parse_document(doc_id) if result.get("success"): return success_response(data={"message": f"文档 {doc_id} 同步解析完成。", "details": result}) else: diff --git a/management/server/services/files/base_service.py b/management/server/services/files/base_service.py index 1ad0942..95bf68a 100644 --- a/management/server/services/files/base_service.py +++ b/management/server/services/files/base_service.py @@ -1,25 +1,25 @@ -from peewee import Model -from typing import Type, TypeVar, Dict, Any +from typing import Any, Dict, Type, TypeVar + +from peewee import Model + +T = TypeVar("T", bound=Model) -T = TypeVar('T', bound=Model) class BaseService: model: Type[T] - + @classmethod def get_by_id(cls, id: str) -> T: return cls.model.get_by_id(id) - - @classmethod + + @classmethod def insert(cls, data: Dict[str, Any]) -> T: return cls.model.create(**data) - + @classmethod def delete_by_id(cls, id: str) -> int: return cls.model.delete().where(cls.model.id == id).execute() - + @classmethod def query(cls, **kwargs) -> list[T]: - return list(cls.model.select().where(*[ - getattr(cls.model, k) == v for k, v in kwargs.items() - ])) \ No newline at end of file + return list(cls.model.select().where(*[getattr(cls.model, k) == v for k, v in kwargs.items()])) diff --git a/management/server/services/files/file2document_service.py b/management/server/services/files/file2document_service.py index f78d277..84b3144 100644 --- a/management/server/services/files/file2document_service.py +++ b/management/server/services/files/file2document_service.py @@ -1,21 +1,20 @@ from peewee import * + from .base_service import BaseService from .models import File2Document + class File2DocumentService(BaseService): model = File2Document - + @classmethod def create_mapping(cls, file_id: str, document_id: str) -> File2Document: - return cls.insert({ - 'file_id': file_id, - 'document_id': document_id - }) - + return cls.insert({"file_id": file_id, "document_id": document_id}) + @classmethod def get_by_document_id(cls, document_id: str) -> list[File2Document]: return cls.query(document_id=document_id) - + @classmethod def get_by_file_id(cls, file_id: str) -> list[File2Document]: - return cls.query(file_id=file_id) \ No newline at end of file + return cls.query(file_id=file_id) diff --git a/management/server/services/knowledgebases/service.py b/management/server/services/knowledgebases/service.py index 48938cf..6725980 100644 --- a/management/server/services/knowledgebases/service.py +++ b/management/server/services/knowledgebases/service.py @@ -1041,7 +1041,7 @@ class KnowledgebaseService: SELECT llm_name, api_key, api_base FROM tenant_llm WHERE tenant_id = %s AND model_type = 'embedding' - ORDER BY create_time DESC # 如果一个用户可能有多个embedding配置,取最早的 + ORDER BY create_time DESC LIMIT 1 """ cursor.execute(query_embedding_config, (earliest_user_id,))