1.8 KiB
1.8 KiB
Plan: Aggregated Host Statuses Endpoint + Dashboard Widget
1) Title
Implement /api/v1/host_statuses backend endpoint and the CharonStatusWidget frontend component.
2) Overview
This feature provides an aggregated view of the number of proxy hosts and the number of hosts that are up/down. The backend exposes an endpoint returning aggregated counts, and the frontend consumes the endpoint and presents a dashboard widget.
3) Handoff Contract (Example)
GET /api/v1/stats/host_statuses
Response (200):
{
"total_proxy_hosts": 12,
"hosts_up": 10,
"hosts_down": 2
}
4) Backend Requirements
- Add a new read-only route
GET /api/v1/stats/host_statusesunderinternal/api/handlers/. - Implement the handler to use existing models/services and return the aggregated counts in JSON.
- Add unit tests under
backend/internal/servicesand the handler's folder.
5) Frontend Requirements
- Add
frontend/src/components/CharonStatusWidget.tsxto render the widget using the endpoint or existing monitors if no endpoint is present. - Add a hook and update the API client if necessary:
frontend/src/api/stats.tswithgetHostStatuses(). - Add unit tests: vitest for the component and the hook.
6) Acceptance Criteria
- Backend:
go test ./...passes. - Frontend:
npm run type-checkandnpm run buildpass. - All unit tests pass and new coverage for added code is included.
7) Artifacts
docs/plans/current_spec.md(the plan file)backendchanged files including handler and testsfrontendchanged files including component and tests