feat: 知识库批量上传文档
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
import asyncio
|
||||
from typing import List
|
||||
|
||||
from fastapi import UploadFile
|
||||
|
||||
from app.model.FileModel import FileSaveService
|
||||
from app.model.KnowledgeDoc import KnowledgeDocModel, KnowledgeDocService
|
||||
from app.utils.db_utils import AsyncSessionDep, async_session
|
||||
|
||||
|
||||
class KnowledgeService:
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
# 为每个文件创建独立的 session 进行文件保存
|
||||
async def save_file_with_new_session(self, file: UploadFile):
|
||||
# 这里需要根据您的数据库配置创建新的 session
|
||||
# 假设您有一个 session factory
|
||||
async with async_session() as session:
|
||||
return await FileSaveService.saveFile(session=session, file=file, filename=file.filename, file_record={})
|
||||
|
||||
async def save_knowledge_doc_list(self, session: AsyncSessionDep, file_dict_list: List[dict], kb_code: str):
|
||||
# 先插入文档对象
|
||||
|
||||
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()
|
||||
for file_dict in file_dict_list
|
||||
]
|
||||
|
||||
insert_cls_list: List[KnowledgeDocModel] = await KnowledgeDocService.batch_insert(session=session, row_dict_list=tobe_insert_kd_list)
|
||||
|
||||
return insert_cls_list
|
||||
|
||||
async def process_file_dict(self, file_dict: dict, kb_code: str):
|
||||
print("process start", file_dict['name'])
|
||||
await asyncio.sleep(3)
|
||||
print("process end", file_dict['name'])
|
||||
return {}
|
||||
|
||||
|
||||
knowledge_service = KnowledgeService()
|
||||
Reference in New Issue
Block a user