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="文档处理失败时的错误信息") async def handle_after_delete(doc_cls): await milvus_service.async_delete(doc_cls.id) async def handle_after_batch_delete(doc_cls_list): task_list = [ asyncio.create_task(handle_after_delete(doc_cls)) for doc_cls in doc_cls_list ] await asyncio.gather(*task_list) KnowledgeDocService = create_model_service( KnowledgeDocModel, after_delete=handle_after_delete, after_batch_delete=handle_after_batch_delete )