from datetime import datetime from typing import List from fastapi import APIRouter, Depends, Request, UploadFile, File, Form from pydantic_validation_decorator import ValidateFields from sqlalchemy.ext.asyncio import AsyncSession from config.enums import BusinessType from config.get_db import get_db from module_admin.annotation.log_annotation import Log # from module_admin.aspect.interface_auth import CheckUserInterfaceAuth # from module_admin.entity.vo.notice_vo import DeleteNoticeModel, NoticeModel, NoticePageQueryModel # from module_admin.entity.vo.user_vo import CurrentUserModel from module_admin.service.login_service import LoginService 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, UpdateFileModel # from config.env import RAGFlowConfig ragflowController = APIRouter(prefix="/system/ragflow", dependencies=[Depends(LoginService.get_current_user)]) # 查看数据集列表 @ragflowController.post("/dataset_list" # , response_model=PageResponseModel # , dependencies=[Depends(CheckUserInterfaceAuth("system:ragflow:list"))]" ) async def get_system_ragflow_list( request: Request, rage_flow_dastset_query: RagflowListQueryModel , # query_db: AsyncSession = Depends(get_db), ): result = await RAGFlowService.get_ragflow_dataset_list_services(None, rage_flow_dastset_query) return parse_result(result) # 列出数据集中文档列表 @ragflowController.get("/list_documents/{dataset_id}") async def list_documents_by_dataset_id( request: Request, dataset_id: str, list_documents_query: ListDocumentsQueryModel = Depends(ListDocumentsQueryModel.as_query), # query_db: AsyncSession = Depends(get_db), ): """ 列出数据集中文档列表 """ print(list_documents_query) result = await RAGFlowService.list_documents_services(None, dataset_id, list_documents_query) return parse_result(result) # 上传文件到数据集 @ragflowController.post("/upload_file/{dataset_id}") async def upload_file_dataset( dataset_id: str, files: List[UploadFile] = File(...), # query_db: AsyncSession = Depends(get_db), ): """ 上传文件到数据集 """ # print(file) result = await RAGFlowService.upload_file_dataset_services(None, dataset_id ,files) return parse_result(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 parse_result(result) def parse_result(result): code = result.get('code', 0) if code != 0: return ResponseUtil.error(result.get('data', None)) return ResponseUtil.success(result.get('data', None))