From af184259cd2fff1dc1a4fc37f1ba51ce9bbe491c Mon Sep 17 00:00:00 2001 From: martsforever Date: Sun, 24 Aug 2025 16:25:46 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A4=84=E7=90=86=E5=AE=A1=E6=89=B9?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controller/add_approve_route.py | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/app/controller/add_approve_route.py b/app/controller/add_approve_route.py index f1ec563..1cc76c7 100644 --- a/app/controller/add_approve_route.py +++ b/app/controller/add_approve_route.py @@ -1,12 +1,14 @@ from fastapi import FastAPI from langchain_core.runnables import RunnableConfig from langgraph.func import entrypoint +from langgraph.types import Command +from pydantic import BaseModel, Field 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 +from app.workflow.approve import create_approve_workflow, ApproveWorkflowInputs, ApproveResult def add_approve_route(app: FastAPI): @@ -61,6 +63,27 @@ def add_approve_route(app: FastAPI): return {"message": "报销单提交成功!"} + 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, + ): + reimburse_workflow = create_reimburse_workflow(session=session, checkpointer=checkpointer) + approve_result: ApproveResult = { + "flag": body.flag, + "reason": body.reason, + "user_id": body.user_id, + } + await reimburse_workflow.ainvoke(Command(resume=approve_result), config={"configurable": {"thread_id": body.approve_id}}) + def create_reimburse_workflow( checkpointer: AsyncPostgresSaverDep,