feat: KnowledgeDocServiceWithCreator

This commit is contained in:
martsforever
2025-09-08 15:16:11 +08:00
parent 2bfc3bc0e0
commit 5e82d5d55b
2 changed files with 43 additions and 2 deletions
+41 -1
View File
@@ -2,9 +2,12 @@ import asyncio
from enum import Enum from enum import Enum
from typing import Optional from typing import Optional
from sqlmodel import Field from pydantic import computed_field
from sqlalchemy.orm import selectinload
from sqlmodel import Field, Relationship, select
from app.model.BasicModel import BasicModel from app.model.BasicModel import BasicModel
from app.model.UserModel import UserServiceModel
from app.utils.create_module_service import create_model_service from app.utils.create_module_service import create_model_service
from app.utils.milvus_utils import milvus_service from app.utils.milvus_utils import milvus_service
@@ -25,6 +28,35 @@ class KnowledgeDocModel(BasicModel, table=True):
error: Optional[str] = Field(default=None, description="文档处理失败时的错误信息") error: Optional[str] = Field(default=None, description="文档处理失败时的错误信息")
content: Optional[str] = Field(default=None, description="在线可编辑文档内容") content: Optional[str] = Field(default=None, description="在线可编辑文档内容")
# /*---------------------------------------created_by-------------------------------------------*/
created_by: str = Field(
default=None,
description="创建人id",
foreign_key="pl_user.id",
nullable=True
)
creator_relationship: Optional["UserServiceModel"] = Relationship(
sa_relationship_kwargs={
"foreign_keys": "KnowledgeDocModel.created_by",
"remote_side": "UserServiceModel.id",
"uselist": False
}
)
@computed_field
@property
def creator(self) -> Optional[UserServiceModel]:
try:
return self.creator_relationship
except:
return None
@creator.setter
def creator(self, value: Optional[UserServiceModel]) -> None:
pass
async def handle_after_delete(delete_cls, row_dict, session): async def handle_after_delete(delete_cls, row_dict, session):
await milvus_service.async_delete(delete_cls.id) await milvus_service.async_delete(delete_cls.id)
@@ -43,3 +75,11 @@ KnowledgeDocService = create_model_service(
after_delete=handle_after_delete, after_delete=handle_after_delete,
after_batch_delete=handle_after_batch_delete after_batch_delete=handle_after_batch_delete
) )
KnowledgeDocServiceWithCreator = create_model_service(
KnowledgeDocModel,
after_delete=handle_after_delete,
after_batch_delete=handle_after_batch_delete,
custom_query=lambda: select(KnowledgeDocModel)
.options(selectinload(KnowledgeDocModel.creator_relationship))
)
+2 -1
View File
@@ -28,7 +28,7 @@ from app.model.ConversationModel import ConversationService
from app.model.HotelModel import HotelService from app.model.HotelModel import HotelService
from app.model.InvoiceModel import InvoiceService from app.model.InvoiceModel import InvoiceService
from app.model.KnowledgeBase import KnowledgeBaseService from app.model.KnowledgeBase import KnowledgeBaseService
from app.model.KnowledgeDoc import KnowledgeDocService from app.model.KnowledgeDoc import KnowledgeDocService, KnowledgeDocServiceWithCreator
from app.model.LgApprove import LgApproveService from app.model.LgApprove import LgApproveService
from app.model.LgChat import LgChatService from app.model.LgChat import LgChatService
from app.model.LgMessage import LgMessageService from app.model.LgMessage import LgMessageService
@@ -124,6 +124,7 @@ InvoiceService.add_route(app=app, path="/invoice")
ConversationService.add_route(app=app, path="/conversation") ConversationService.add_route(app=app, path="/conversation")
KnowledgeBaseService.add_route(app=app, path="/knowledge_base") KnowledgeBaseService.add_route(app=app, path="/knowledge_base")
KnowledgeDocService.add_route(app=app, path="/knowledge_doc") KnowledgeDocService.add_route(app=app, path="/knowledge_doc")
KnowledgeDocServiceWithCreator.add_route(app=app, path="/knowledge_doc_with_creator")
if __name__ == "__main__": if __name__ == "__main__":
run_uvicorn() run_uvicorn()