import asyncio from enum import Enum from typing import Optional from sqlmodel import Field from app.model.BasicModel import BasicModel from app.utils.create_module_service import create_model_service from app.utils.milvus_utils import milvus_service class KnowledgeDocStatus(Enum): process = "process" fail = "fail" success = "success" class KnowledgeDocModel(BasicModel, table=True): __tablename__ = "pl_knowledge_doc" parent_code: str = Field(default=None, description="所属知识库的code") name: str = Field(default=None, description="文档名称") status: str = Field(default=None, description="文档的处理状态") path: str = Field(default=None, description="文档原始文件路径") error: Optional[str] = Field(default=None, description="文档处理失败时的错误信息") content: Optional[str] = Field(default=None, description="在线可编辑文档内容") async def handle_after_delete(delete_cls, row_dict, session): await milvus_service.async_delete(delete_cls.id) async def handle_after_batch_delete(delete_cls_list, row_dict_list, session): task_list = [ asyncio.create_task(handle_after_delete(doc_cls, {}, session)) for doc_cls in delete_cls_list ] await asyncio.gather(*task_list) KnowledgeDocService = create_model_service( KnowledgeDocModel, after_delete=handle_after_delete, after_batch_delete=handle_after_batch_delete )