From 3d474468e3761a51543f1dffe7e7260b4f38ca3e Mon Sep 17 00:00:00 2001 From: haotian <2421912570@qq.com> Date: Fri, 5 Sep 2025 10:04:07 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E6=9B=B4=E6=96=B0=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E5=8A=9F=E8=83=BD(=E6=9B=B4=E6=96=B0=E5=90=8D?= =?UTF-8?q?=E7=A7=B0,=20=E5=88=86=E5=9D=97=E6=96=B9=E6=B3=95)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ragflow_controller.py | 20 +++++++++++++++++-- .../module_admin/entity/vo/ragflow_vo.py | 17 ++++++++++++++++ .../module_admin/service/ragflow_service.py | 15 +++++++++++++- 3 files changed, 49 insertions(+), 3 deletions(-) diff --git a/ruoyi-fastapi-backend/module_admin/controller/ragflow_controller.py b/ruoyi-fastapi-backend/module_admin/controller/ragflow_controller.py index e21e764..21fe39d 100644 --- a/ruoyi-fastapi-backend/module_admin/controller/ragflow_controller.py +++ b/ruoyi-fastapi-backend/module_admin/controller/ragflow_controller.py @@ -14,7 +14,7 @@ from module_admin.service.ragflow_service import RAGFlowService from utils.log_util import logger from utils.page_util import PageResponseModel from utils.response_util import ResponseUtil -from module_admin.entity.vo.ragflow_vo import RagflowListQueryModel, ListDocumentsQueryModel +from module_admin.entity.vo.ragflow_vo import RagflowListQueryModel, ListDocumentsQueryModel, UpdateFileModel # from config.env import RAGFlowConfig @@ -70,4 +70,20 @@ async def upload_file_dataset( # print(file) result = await RAGFlowService.upload_file_dataset_services(None, dataset_id ,files) - return ResponseUtil.success(data = result) \ No newline at end of file + return ResponseUtil.success(data = result) + +# 更新文档 +@ragflowController.post("/update_file/{dataset_id}/{document_id}") +async def update_file_dataset( + dataset_id: str, + document_id: str, + update_params: UpdateFileModel, + # query_db: AsyncSession = Depends(get_db), +): + """ + 更新文件到数据集 + """ + # print(file) + result = await RAGFlowService.update_file_dataset_services(dataset_id ,document_id, update_params) + + return ResponseUtil.success(result) \ No newline at end of file diff --git a/ruoyi-fastapi-backend/module_admin/entity/vo/ragflow_vo.py b/ruoyi-fastapi-backend/module_admin/entity/vo/ragflow_vo.py index c6820a7..8b93859 100644 --- a/ruoyi-fastapi-backend/module_admin/entity/vo/ragflow_vo.py +++ b/ruoyi-fastapi-backend/module_admin/entity/vo/ragflow_vo.py @@ -29,4 +29,21 @@ class ListDocumentsQueryModel(BaseModel): document_id: Optional[str] = Field(default=None, description='文档ID') document_name: Optional[str] = Field(default=None, description='文档名称') + +class UpdateFileModel(BaseModel): + """ + 更新文件模型 + """ + # name 要带文件后缀名 + name: Optional[str] = Field(default=None, description='文件名称') + meta_fields: Optional[dict] = Field(default=None, description='文件元数据') + + # naive, manual qa table paper book laws presentation picture one email + chunk_method: Optional[str] = Field(default=None, description='分块方法') + + # 不同的分块方法有不同的参数. + parser_config: Optional[dict] = Field(default=None, description='解析器配置') + + + \ No newline at end of file diff --git a/ruoyi-fastapi-backend/module_admin/service/ragflow_service.py b/ruoyi-fastapi-backend/module_admin/service/ragflow_service.py index f7dce66..df48f11 100644 --- a/ruoyi-fastapi-backend/module_admin/service/ragflow_service.py +++ b/ruoyi-fastapi-backend/module_admin/service/ragflow_service.py @@ -1,6 +1,6 @@ from sqlalchemy.ext.asyncio import AsyncSession from utils.ragflow_asy_util import AsyncRAGFlowClient -from module_admin.entity.vo.ragflow_vo import RagflowListQueryModel, ListDocumentsQueryModel +from module_admin.entity.vo.ragflow_vo import RagflowListQueryModel, ListDocumentsQueryModel, UpdateFileModel from config.env import RAGFlowConfig class RAGFlowService: @@ -43,4 +43,17 @@ class RAGFlowService: async with AsyncRAGFlowClient(RAGFlowConfig.RAGFLOW_BASE_URL, RAGFlowConfig.RAGFLOW_API_KEY) as client: result = await client.upload_documents_bytes(dataset_id=dataset_id, file_bytes=files) + return result.get('data', None) + + # 更新文档内容 + @classmethod + async def update_file_dataset_services( + cls, + dataset_id: str, + document_id: str, + update_params: UpdateFileModel, + ): + async with AsyncRAGFlowClient(RAGFlowConfig.RAGFLOW_BASE_URL, RAGFlowConfig.RAGFLOW_API_KEY) as client: + result = await client.update_document(dataset_id=dataset_id, document_id=document_id, **(update_params.model_dump())) + return result.get('data', None) \ No newline at end of file