diff --git a/backend/routers/watcher_manager.py b/backend/routers/watcher_manager.py index a42c34b..0fee01b 100644 --- a/backend/routers/watcher_manager.py +++ b/backend/routers/watcher_manager.py @@ -31,11 +31,15 @@ router = APIRouter(tags=["admin"]) def _agent_to_dict(agent: WatcherAgent) -> dict: last_seen = agent.last_seen if last_seen: - # Compute age in minutes (last_seen stored as UTC naive) now_utc = datetime.utcnow() age_minutes = int((now_utc - last_seen).total_seconds() // 60) + if age_minutes > 60: + status = "missing" + else: + status = "ok" else: age_minutes = None + status = "missing" return { "id": agent.id, @@ -43,7 +47,7 @@ def _agent_to_dict(agent: WatcherAgent) -> dict: "version": agent.version, "last_seen": last_seen.isoformat() if last_seen else None, "age_minutes": age_minutes, - "status": agent.status, + "status": status, "ip_address": agent.ip_address, "log_tail": agent.log_tail, "update_pending": bool(agent.update_pending), diff --git a/backend/routes.py b/backend/routes.py index 2af0897..291f370 100644 --- a/backend/routes.py +++ b/backend/routes.py @@ -216,20 +216,9 @@ async def series3_heartbeat(request: Request, db: Session = Depends(get_db)): results.append({"unit": uid, "status": status}) - # Determine overall worst status for the watcher agent row - statuses = [r["status"] for r in results] - if "Missing" in statuses: - agent_status = "missing" - elif "Pending" in statuses: - agent_status = "pending" - elif statuses: - agent_status = "ok" - else: - agent_status = "unknown" - if source: _upsert_watcher_agent(db, source, "series3_watcher", version, - client_ip, log_tail_str, agent_status) + client_ip, log_tail_str, "ok") db.commit() @@ -340,20 +329,9 @@ async def series4_heartbeat(request: Request, db: Session = Depends(get_db)): results.append({"unit": uid, "status": status}) - # Determine overall worst status for the watcher agent row - statuses = [r["status"] for r in results] - if any(s.lower() == "stale" for s in statuses): - agent_status = "missing" - elif any(s.lower() == "late" for s in statuses): - agent_status = "pending" - elif statuses: - agent_status = "ok" - else: - agent_status = "unknown" - if source: _upsert_watcher_agent(db, source, "series4_watcher", version, - client_ip, log_tail_str, agent_status) + client_ip, log_tail_str, "ok") db.commit()