Files
ai-admin-server/app/controller/add_approve_route.py
T

46 lines
1.8 KiB
Python

from fastapi import FastAPI
from langgraph.types import Command
from pydantic import BaseModel, Field
from app.controller.add_hotel_route import create_book_hotel_graph
from app.controller.add_reimburse_route import create_reimburse_graph
from app.model.ApproveModel import ApproveService, ApproveModel
from app.utils.db_utils import AsyncSessionDep
from app.utils.postgres_checkpointer import AsyncPostgresSaverDep
from app.workflow.approve import ApproveResult
def add_approve_route(app: FastAPI):
class ProcessApproveClass(BaseModel):
flag: bool = Field(..., description="审批标识,是审批通过还是审批驳回")
reason: str = Field(default=None, description="审批驳回原因")
user_id: str = Field(..., description="审批人id")
approve_id: str = Field(..., description="审批单id")
# 审批接口
@app.post('/process_approve')
async def process_approve(
body: ProcessApproveClass,
session: AsyncSessionDep,
checkpointer: AsyncPostgresSaverDep,
):
approve_cls: ApproveModel = await ApproveService.query_item(session, row_dict={"id": body.approve_id})
if approve_cls.approve_from == 'reimburse':
graph = create_reimburse_graph(session=session, checkpointer=checkpointer)
elif approve_cls.approve_from == 'book_hotel':
graph = create_book_hotel_graph(session=session, checkpointer=checkpointer)
else:
raise Exception("未知的审批来源:" + approve_cls.approve_from)
approve_result: ApproveResult = {
"flag": body.flag,
"reason": body.reason,
"user_id": body.user_id,
}
print('\n\n', ":::::::::::process_approve start::::::::::::", '\n\n')
print(approve_result)
print('\n\n', ":::::::::::process_approve end::::::::::::", '\n\n')
return await graph.ainvoke(Command(resume=approve_result), config={"configurable": {"thread_id": body.approve_id}})