Files
multiAgentTry/backend/app/routers/resources.py

58 lines
1.4 KiB
Python
Raw Normal View History

"""
资源管理 API 路由
接入 ResourceManager 服务提供声明式任务执行
"""
from fastapi import APIRouter
from pydantic import BaseModel
from typing import Optional
from ..services.resource_manager import get_resource_manager
router = APIRouter()
class TaskRequest(BaseModel):
agent_id: str
task: str
timeout: Optional[int] = 300
class TaskParseRequest(BaseModel):
task: str
@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": 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 状态(整合注册、心跳、锁信息)"""
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": files
}