Some checks failed
Go Benchmark / Performance Regression Check (push) Has been cancelled
Cerberus Integration / Cerberus Security Stack Integration (push) Has been cancelled
Upload Coverage to Codecov / Backend Codecov Upload (push) Has been cancelled
Upload Coverage to Codecov / Frontend Codecov Upload (push) Has been cancelled
CodeQL - Analyze / CodeQL analysis (go) (push) Has been cancelled
CodeQL - Analyze / CodeQL analysis (javascript-typescript) (push) Has been cancelled
CrowdSec Integration / CrowdSec Bouncer Integration (push) Has been cancelled
Docker Build, Publish & Test / build-and-push (push) Has been cancelled
Quality Checks / Auth Route Protection Contract (push) Has been cancelled
Quality Checks / Codecov Trigger/Comment Parity Guard (push) Has been cancelled
Quality Checks / Backend (Go) (push) Has been cancelled
Quality Checks / Frontend (React) (push) Has been cancelled
Rate Limit integration / Rate Limiting Integration (push) Has been cancelled
Security Scan (PR) / Trivy Binary Scan (push) Has been cancelled
Supply Chain Verification (PR) / Verify Supply Chain (push) Has been cancelled
WAF integration / Coraza WAF Integration (push) Has been cancelled
Docker Build, Publish & Test / Security Scan PR Image (push) Has been cancelled
Repo Health Check / Repo health (push) Has been cancelled
History Rewrite Dry-Run / Dry-run preview for history rewrite (push) Has been cancelled
Prune Renovate Branches / prune (push) Has been cancelled
Renovate / renovate (push) Has been cancelled
Nightly Build & Package / sync-development-to-nightly (push) Has been cancelled
Nightly Build & Package / Trigger Nightly Validation Workflows (push) Has been cancelled
Nightly Build & Package / build-and-push-nightly (push) Has been cancelled
Nightly Build & Package / test-nightly-image (push) Has been cancelled
Nightly Build & Package / verify-nightly-supply-chain (push) Has been cancelled
53 lines
1.8 KiB
Markdown
Executable File
53 lines
1.8 KiB
Markdown
Executable File
<!--
|
|
Sample Orchestration Plan used by the Management agent when invoking subagents.
|
|
Keep this file small and precise. Subagents will read the file and act according to the Handoff Contract.
|
|
-->
|
|
|
|
# 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):
|
|
|
|
```json
|
|
{
|
|
"total_proxy_hosts": 12,
|
|
"hosts_up": 10,
|
|
"hosts_down": 2
|
|
}
|
|
```
|
|
|
|
## 4) Backend Requirements
|
|
|
|
- Add a new read-only route `GET /api/v1/stats/host_statuses` under `internal/api/handlers/`.
|
|
- Implement the handler to use existing models/services and return the aggregated counts in JSON.
|
|
- Add unit tests under `backend/internal/services` and the handler's folder.
|
|
|
|
## 5) Frontend Requirements
|
|
|
|
- Add `frontend/src/components/CharonStatusWidget.tsx` to 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.ts` with `getHostStatuses()`.
|
|
- Add unit tests: vitest for the component and the hook.
|
|
|
|
## 6) Acceptance Criteria
|
|
|
|
- Backend: `go test ./...` passes.
|
|
- Frontend: `npm run type-check` and `npm run build` pass.
|
|
- All unit tests pass and new coverage for added code is included.
|
|
|
|
## 7) Artifacts
|
|
|
|
- `docs/plans/current_spec.md` (the plan file)
|
|
- `backend` changed files including handler and tests
|
|
- `frontend` changed files including component and tests
|