2026-03-09 17:32:11 +08:00
|
|
|
"""
|
|
|
|
|
心跳管理 API 路由
|
|
|
|
|
"""
|
|
|
|
|
from fastapi import APIRouter
|
|
|
|
|
from pydantic import BaseModel
|
|
|
|
|
from typing import Dict
|
|
|
|
|
import time
|
|
|
|
|
|
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
|
|
|
|
heartbeats_db = {}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Heartbeat(BaseModel):
|
|
|
|
|
agent_id: str
|
|
|
|
|
timestamp: float
|
|
|
|
|
is_timeout: bool = False
|
|
|
|
|
|
|
|
|
|
|
2026-03-09 18:24:14 +08:00
|
|
|
@router.get("")
|
2026-03-09 17:32:11 +08:00
|
|
|
@router.get("/")
|
|
|
|
|
async def list_heartbeats():
|
|
|
|
|
"""获取所有 Agent 心跳"""
|
|
|
|
|
return {
|
|
|
|
|
"heartbeats": {
|
|
|
|
|
"claude-001": {
|
|
|
|
|
"agent_id": "claude-001",
|
|
|
|
|
"timestamp": time.time() - 30,
|
|
|
|
|
"is_timeout": False
|
|
|
|
|
},
|
|
|
|
|
"kimi-001": {
|
|
|
|
|
"agent_id": "kimi-001",
|
|
|
|
|
"timestamp": time.time() - 60,
|
|
|
|
|
"is_timeout": False
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@router.post("/{agent_id}")
|
|
|
|
|
async def update_heartbeat(agent_id: str):
|
|
|
|
|
"""更新 Agent 心跳"""
|
|
|
|
|
heartbeats_db[agent_id] = {
|
|
|
|
|
"agent_id": agent_id,
|
|
|
|
|
"timestamp": time.time(),
|
|
|
|
|
"is_timeout": False
|
|
|
|
|
}
|
|
|
|
|
return {"success": True}
|