feat: 审批流基本结构
This commit is contained in:
@@ -1,13 +1,12 @@
|
||||
from typing import TypedDict
|
||||
|
||||
from fastapi import FastAPI
|
||||
from langgraph.constants import START, END
|
||||
from langgraph.graph import StateGraph
|
||||
from langchain_core.runnables import RunnableConfig
|
||||
from langgraph.func import entrypoint
|
||||
|
||||
from app.model.ApproveModel import ApproveModel, ApproveService
|
||||
from app.model.ApproveModel import ApproveService
|
||||
from app.model.ReimburseModel import ReimburseService, ReimburseModel
|
||||
from app.utils.db_utils import AsyncSessionDep
|
||||
from app.utils.postgres_checkpointer import AsyncPostgresSaverDep
|
||||
from app.workflow.approve import create_approve_workflow, ApproveWorkflowInputs
|
||||
|
||||
|
||||
def add_approve_route(app: FastAPI):
|
||||
@@ -53,36 +52,24 @@ def add_approve_route(app: FastAPI):
|
||||
# 将审批单与报销单管理,设置报销单的approve_id为审批单的id
|
||||
await ReimburseService.item_update(session=session, row_dict={"id": reimburse_id, "approve_id": insert_approve_cls.id}, )
|
||||
|
||||
graph = create_approve_graph(session, checkpointer)
|
||||
reimburse_workflow = create_reimburse_workflow(session=session, checkpointer=checkpointer)
|
||||
|
||||
await graph.ainvoke({
|
||||
"input_approve_dict": insert_approve_cls.model_dump(),
|
||||
"input_reimburse_user_id": reimburse_cls.user_id
|
||||
})
|
||||
await reimburse_workflow.ainvoke({"reimburse_user_id": reimburse_cls.user, "approve_id": insert_approve_cls.id})
|
||||
|
||||
return {"message": "报销单提交成功!"}
|
||||
|
||||
|
||||
# 创建一个图来处理审批流
|
||||
def create_approve_graph(
|
||||
session: AsyncSessionDep,
|
||||
def create_reimburse_workflow(
|
||||
checkpointer: AsyncPostgresSaverDep,
|
||||
session: AsyncSessionDep,
|
||||
):
|
||||
class StateSchema(TypedDict):
|
||||
input_reimburse_user_id: str
|
||||
input_approve_dict: dict
|
||||
approve_workflow = create_approve_workflow(checkpointer, session)
|
||||
|
||||
status: str
|
||||
@entrypoint(checkpointer=checkpointer)
|
||||
async def reimburse_workflow(input_dict: ApproveWorkflowInputs, config: RunnableConfig):
|
||||
approve_flag = await approve_workflow.ainvoke(input_dict, config=config)
|
||||
# 这里审批结束之后可以做一些事情,比如发送邮件、短信、微信消息等通知用户,因为没有实现对应的模块,这里就不做任何处理
|
||||
print("报销单审批流执行结束::::::::::>>>>>>>>>>>", approve_flag)
|
||||
return None
|
||||
|
||||
builder = StateGraph(StateSchema)
|
||||
|
||||
async def node_create_approve(state: StateSchema):
|
||||
pass
|
||||
|
||||
builder.add_node(node_create_approve)
|
||||
builder.add_edge(START, 'node_create_approve')
|
||||
builder.add_edge('node_create_approve', END)
|
||||
|
||||
graph = builder.compile(checkpointer=checkpointer)
|
||||
|
||||
return graph
|
||||
return reimburse_workflow
|
||||
|
||||
Reference in New Issue
Block a user