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