重构 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>
This commit is contained in:
@@ -1,10 +1,12 @@
|
||||
"""
|
||||
资源管理 API 路由
|
||||
接入 ResourceManager 服务,提供声明式任务执行
|
||||
"""
|
||||
from fastapi import APIRouter
|
||||
from pydantic import BaseModel
|
||||
from typing import List, Optional
|
||||
import time
|
||||
from typing import Optional
|
||||
|
||||
from ..services.resource_manager import get_resource_manager
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@@ -21,55 +23,35 @@ class TaskParseRequest(BaseModel):
|
||||
|
||||
@router.post("/execute")
|
||||
async def execute_task(request: TaskRequest):
|
||||
"""执行任务"""
|
||||
"""执行任务(自动管理文件锁和心跳)"""
|
||||
manager = get_resource_manager()
|
||||
result = await manager.execute_task(
|
||||
agent_id=request.agent_id,
|
||||
task_description=request.task,
|
||||
timeout=request.timeout or 300
|
||||
)
|
||||
return {
|
||||
"success": True,
|
||||
"message": f"任务 '{request.task}' 已执行",
|
||||
"files_locked": ["src/main.py"],
|
||||
"duration_seconds": 5.5
|
||||
"success": result.success,
|
||||
"message": result.message,
|
||||
"files_locked": result.files_locked,
|
||||
"duration_seconds": round(result.duration_seconds, 2)
|
||||
}
|
||||
|
||||
|
||||
@router.get("/status")
|
||||
async def get_all_status():
|
||||
"""获取所有 Agent 状态"""
|
||||
from ..services.agent_registry import get_agent_registry
|
||||
from ..services.heartbeat import get_heartbeat_service
|
||||
|
||||
registry = get_agent_registry()
|
||||
heartbeat_service = get_heartbeat_service()
|
||||
|
||||
# 获取所有已注册的 Agent
|
||||
all_agents = await registry.list_agents()
|
||||
agent_map = {a.agent_id: a for a in all_agents}
|
||||
|
||||
# 获取所有心跳
|
||||
heartbeats_data = await heartbeat_service.get_all_heartbeats()
|
||||
|
||||
result = []
|
||||
for agent_id, agent in agent_map.items():
|
||||
heartbeat = heartbeats_data.get(agent_id)
|
||||
result.append({
|
||||
"agent_id": agent_id,
|
||||
"info": {
|
||||
"name": agent.name,
|
||||
"role": agent.role,
|
||||
"model": agent.model
|
||||
},
|
||||
"heartbeat": {
|
||||
"status": heartbeat.status if heartbeat else "offline",
|
||||
"current_task": heartbeat.current_task if heartbeat else "",
|
||||
"progress": heartbeat.progress if heartbeat else 0
|
||||
}
|
||||
})
|
||||
|
||||
return {"agents": result}
|
||||
"""获取所有 Agent 状态(整合注册、心跳、锁信息)"""
|
||||
manager = get_resource_manager()
|
||||
statuses = await manager.get_all_status()
|
||||
return {"agents": statuses}
|
||||
|
||||
|
||||
@router.post("/parse-task")
|
||||
async def parse_task(request: TaskParseRequest):
|
||||
"""解析任务文件"""
|
||||
"""解析任务中涉及的文件路径"""
|
||||
manager = get_resource_manager()
|
||||
files = await manager.parse_task_files(request.task)
|
||||
return {
|
||||
"task": request.task,
|
||||
"files": ["src/main.py", "src/utils.py"]
|
||||
"files": files
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user