feat: 上传文档块的时候,文档块保留用户的名称

This commit is contained in:
martsforever
2025-09-07 20:43:17 +08:00
parent 21b7757c14
commit 949b4eda8b
2 changed files with 24 additions and 3 deletions
+8 -1
View File
@@ -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]
+16 -2
View File
@@ -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
]