fix workflow api

This commit is contained in:
jxxghp
2025-02-25 13:25:56 +08:00
parent 19b6927320
commit c1c91cec44
+24 -12
View File
@@ -1,4 +1,5 @@
from typing import List from datetime import datetime
from typing import List, Any
from fastapi import APIRouter, Depends from fastapi import APIRouter, Depends
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
@@ -7,14 +8,14 @@ from app import schemas
from app.db import get_db from app.db import get_db
from app.db.models.workflow import Workflow from app.db.models.workflow import Workflow
from app.db.user_oper import get_current_active_superuser, get_current_active_user from app.db.user_oper import get_current_active_superuser, get_current_active_user
from chain.workflow import WorkflowChain from app.chain.workflow import WorkflowChain
router = APIRouter() router = APIRouter()
@router.get("/", summary="所有工作流", response_model=List[schemas.Workflow]) @router.get("/", summary="所有工作流", response_model=List[schemas.Workflow])
def list_workflows(db: Session = Depends(get_db), def list_workflows(db: Session = Depends(get_db),
_: schemas.TokenPayload = Depends(get_current_active_user)) -> List[dict]: _: schemas.TokenPayload = Depends(get_current_active_user)) -> Any:
""" """
获取工作流列表 获取工作流列表
""" """
@@ -24,17 +25,24 @@ def list_workflows(db: Session = Depends(get_db),
@router.post("/", summary="创建工作流", response_model=schemas.Workflow) @router.post("/", summary="创建工作流", response_model=schemas.Workflow)
def create_workflow(workflow: schemas.Workflow, def create_workflow(workflow: schemas.Workflow,
db: Session = Depends(get_db), db: Session = Depends(get_db),
_: schemas.TokenPayload = Depends(get_current_active_superuser)) -> dict: _: schemas.TokenPayload = Depends(get_current_active_superuser)) -> Any:
""" """
创建工作流 创建工作流
""" """
return Workflow.create(db, workflow) if Workflow.get_by_name(db, workflow.name):
return schemas.Response(success=False, message="已存在相同名称的工作流")
if not workflow.add_time:
workflow.add_time = datetime.strftime(datetime.now(), "%Y-%m-%d %H:%M:%S")
if not workflow.state:
workflow.state = "P"
Workflow(**workflow.dict()).create(db)
return schemas.Response(success=True, message="创建工作流成功")
@router.get("/{workflow_id}", summary="工作流详情", response_model=schemas.Workflow) @router.get("/{workflow_id}", summary="工作流详情", response_model=schemas.Workflow)
def get_workflow(workflow_id: int, def get_workflow(workflow_id: int,
db: Session = Depends(get_db), db: Session = Depends(get_db),
_: schemas.TokenPayload = Depends(get_current_active_user)) -> dict: _: schemas.TokenPayload = Depends(get_current_active_user)) -> Any:
""" """
获取工作流详情 获取工作流详情
""" """
@@ -44,28 +52,32 @@ def get_workflow(workflow_id: int,
@router.put("/{workflow_id}", summary="更新工作流", response_model=schemas.Workflow) @router.put("/{workflow_id}", summary="更新工作流", response_model=schemas.Workflow)
def update_workflow(workflow: schemas.Workflow, def update_workflow(workflow: schemas.Workflow,
db: Session = Depends(get_db), db: Session = Depends(get_db),
_: schemas.TokenPayload = Depends(get_current_active_superuser)) -> dict: _: schemas.TokenPayload = Depends(get_current_active_superuser)) -> Any:
""" """
更新工作流 更新工作流
""" """
return Workflow.update(db, workflow) Workflow.update(db, workflow)
return schemas.Response(success=True, message="更新成功")
@router.delete("/{workflow_id}", summary="删除工作流", response_model=schemas.Workflow) @router.delete("/{workflow_id}", summary="删除工作流", response_model=schemas.Workflow)
def delete_workflow(workflow_id: int, def delete_workflow(workflow_id: int,
db: Session = Depends(get_db), db: Session = Depends(get_db),
_: schemas.TokenPayload = Depends(get_current_active_superuser)) -> dict: _: schemas.TokenPayload = Depends(get_current_active_superuser)) -> Any:
""" """
删除工作流 删除工作流
""" """
return Workflow.delete(db, workflow_id) Workflow.delete(db, workflow_id)
return schemas.Response(success=True, message="删除成功")
@router.get("/run/{workfow_id}", summary="执行工作流", response_model=schemas.Workflow) @router.get("/run/{workfow_id}", summary="执行工作流", response_model=schemas.Workflow)
def run_workflow(workfow_id: int, def run_workflow(workfow_id: int,
from_begin: bool = True, from_begin: bool = True,
_: schemas.TokenPayload = Depends(get_current_active_user)) -> dict: _: schemas.TokenPayload = Depends(get_current_active_user)) -> Any:
""" """
执行工作流 执行工作流
""" """
return WorkflowChain().process(workfow_id, from_begin=from_begin) if WorkflowChain().process(workfow_id, from_begin=from_begin):
return schemas.Response(success=True, message="执行成功")
return schemas.Response(success=False, message="执行失败")