From 949b4eda8b15646d72483a3ea4108614421caa3c Mon Sep 17 00:00:00 2001 From: martsforever Date: Sun, 7 Sep 2025 20:43:17 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=B8=8A=E4=BC=A0=E6=96=87=E6=A1=A3?= =?UTF-8?q?=E5=9D=97=E7=9A=84=E6=97=B6=E5=80=99=EF=BC=8C=E6=96=87=E6=A1=A3?= =?UTF-8?q?=E5=9D=97=E4=BF=9D=E7=95=99=E7=94=A8=E6=88=B7=E7=9A=84=E5=90=8D?= =?UTF-8?q?=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controller/add_knowledge_route.py | 9 ++++++++- app/utils/knowledge_utils.py | 18 ++++++++++++++++-- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/app/controller/add_knowledge_route.py b/app/controller/add_knowledge_route.py index 6b57b9c..6ba49a4 100644 --- a/app/controller/add_knowledge_route.py +++ b/app/controller/add_knowledge_route.py @@ -3,6 +3,7 @@ from http.client import HTTPException from typing import List from fastapi import UploadFile, File, Form +from starlette.requests import Request from app.utils.db_utils import AsyncSessionDep from app.utils.knowledge_utils import knowledge_service @@ -45,6 +46,7 @@ def add_knowledge_route(app): @app.post("/knowledge/upload_files") async def knowledge_search( session: AsyncSessionDep, + request: Request, files: List[UploadFile] = File(...), kb_code: str = Form(..., description="所属知识库的编码"), ): @@ -64,7 +66,12 @@ def add_knowledge_route(app): file_dict_list = [item["result"] for item in task_result_list] # 插入对应的文档对象记录 - doc_cls_list = await knowledge_service.save_knowledge_doc_list(session=session, file_dict_list=file_dict_list, kb_code=kb_code) + doc_cls_list = await knowledge_service.save_knowledge_doc_list( + session=session, + file_dict_list=file_dict_list, + kb_code=kb_code, + user=request.state.user, + ) # 异步处理嵌入文档,不再等待 [asyncio.create_task(knowledge_service.process_doc_cls(doc_cls=doc_cls)) for doc_cls in doc_cls_list] diff --git a/app/utils/knowledge_utils.py b/app/utils/knowledge_utils.py index 2e202a8..c4a9d38 100644 --- a/app/utils/knowledge_utils.py +++ b/app/utils/knowledge_utils.py @@ -8,6 +8,7 @@ from llama_index.core import SimpleDirectoryReader, Document from app.config.env import env from app.model.FileModel import FileSaveService from app.model.KnowledgeDoc import KnowledgeDocModel, KnowledgeDocService +from app.model.UserModel import PublicUser from app.utils.db_utils import AsyncSessionDep, async_session from app.utils.milvus_utils import milvus_service @@ -24,11 +25,24 @@ class KnowledgeService: return await FileSaveService.saveFile(session=session, file=file, filename=file.filename, file_record={}) # 将 file_dict_list 保存为 doc_cls_list - async def save_knowledge_doc_list(self, session: AsyncSessionDep, file_dict_list: List[dict], kb_code: str): + async def save_knowledge_doc_list( + self, + session: AsyncSessionDep, + file_dict_list: List[dict], + kb_code: str, + user: PublicUser, + ): # 先插入文档对象 tobe_insert_kd_list = [ - KnowledgeDocModel(id=file_dict["id"], name=file_dict["name"], path=file_dict["path"], parent_code=kb_code, status="process").model_dump() + KnowledgeDocModel( + id=file_dict["id"], + created_by=user.id, + name=file_dict["name"], + path=file_dict["path"], + parent_code=kb_code, + status="process" + ).model_dump() for file_dict in file_dict_list ]