Files
multiAgentTry/backend/app/routers/orchestrator.py
Claude Code 1719d1f1f9 重构 API 路由并新增工作流编排功能
后端:
- 重构 agents, heartbeats, locks, meetings, resources, roles, workflows 路由
- 新增 orchestrator 和 providers 路由
- 新增 CLI 调用器和流程编排服务
- 添加日志配置和依赖项

前端:
- 更新 AgentsPage、SettingsPage、WorkflowPage 页面
- 扩展 api.ts 新增 API 接口

其他:
- 清理测试 agent 数据文件
- 新增示例工作流和项目审计报告

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 16:36:25 +08:00

58 lines
1.8 KiB
Python

"""
工作流编排器 API
提供启动自动工作流、查看运行状态的端点
"""
from fastapi import APIRouter, HTTPException
from pydantic import BaseModel
from typing import Dict, Optional
from ..services.workflow_orchestrator import get_workflow_orchestrator
router = APIRouter(prefix="/orchestrator", tags=["orchestrator"])
class StartWorkflowRequest(BaseModel):
"""启动工作流请求"""
workflow_path: str # YAML 文件名,如 dinner-decision.yaml
agent_overrides: Optional[Dict[str, str]] = None # agent_id → model 覆盖
@router.post("/start")
async def start_workflow(request: StartWorkflowRequest):
"""启动一个工作流的自动编排(后台异步执行)"""
orchestrator = get_workflow_orchestrator()
try:
run = await orchestrator.start_workflow(
workflow_path=request.workflow_path,
agent_overrides=request.agent_overrides,
)
return {
"success": True,
"message": f"工作流已启动: {run.workflow_name}",
"run_id": run.run_id,
"workflow_id": run.workflow_id,
}
except FileNotFoundError:
raise HTTPException(status_code=404, detail=f"工作流文件不存在: {request.workflow_path}")
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@router.get("/runs")
async def list_runs():
"""列出所有编排运行"""
orchestrator = get_workflow_orchestrator()
return {"runs": orchestrator.list_runs()}
@router.get("/runs/{run_id}")
async def get_run(run_id: str):
"""获取指定运行的详细状态"""
orchestrator = get_workflow_orchestrator()
run = orchestrator.get_run(run_id)
if not run:
raise HTTPException(status_code=404, detail=f"运行不存在: {run_id}")
return run.to_dict()