feat(backups): wire up routes, nav, dashboard widget, and docs
- Add /backups route and navigation tab in App.tsx - Add BackupDashboardWidget to Dashboard page - Document backup monitoring feature in REQUIREMENTS.md
This commit is contained in:
@@ -279,3 +279,32 @@ Phase 1: Jellyfin media index, SSH-based remote filesystem inspection, server mo
|
||||
- 2026-05-07: The SSH machine editor should expose a validation button that tests banner/auth flow and records the host key before save so users get clear feedback when a host is unreachable.
|
||||
- 2026-05-07: Saving a monitoring-capable machine should validate the banner/auth flow, update the backend-managed known_hosts entry for the current host, and start the remote resource collector so charts populate without a separate manual step.
|
||||
- 2026-05-07: Machine settings should visually separate Connection, Monitoring / Files, Jellyfin, Jellyseerr, and Notes into clearly labeled sections.
|
||||
|
||||
## Backup Monitoring
|
||||
|
||||
### Overview
|
||||
The system receives backup execution reports from an external backup tool via HTTP API, stores job and run history, and provides alerting on failures, missed schedules, and anomalies.
|
||||
|
||||
### API
|
||||
- `POST /api/backups/report` — Submit backup run (Bearer token auth)
|
||||
- `POST /api/backups/report/start` — Mark backup as in_progress
|
||||
- `GET /api/backups/jobs` — List jobs
|
||||
- `GET /api/backups/runs` — List runs
|
||||
- `GET /api/backups/alerts` — List alerts
|
||||
- `POST /api/backups/alerts/{id}/acknowledge` — Acknowledge alert
|
||||
- `GET /api/dashboard/backups` — Dashboard summary
|
||||
|
||||
### Data Model
|
||||
- **BackupJob**: id, name, source, target, schedule_interval_seconds, created_at
|
||||
- **BackupRun**: id, job_id, started_at, ended_at, status, bytes_transferred, duration_ms, error_message, details_json
|
||||
- **BackupAlert**: id, job_id, run_id, alert_type, severity, message, acknowledged, resolved_at
|
||||
|
||||
### Alert Types
|
||||
- `failed_status` — Backup reported failure (critical)
|
||||
- `missed_schedule` — No run within 1.5x expected interval (warning)
|
||||
- `anomaly_size` — Size is 0 or <10% / >300% of 7-day median (warning)
|
||||
- `anomaly_duration` — Duration >300% of 7-day median (warning)
|
||||
|
||||
### Authentication
|
||||
- Backup tool uses auto-generated Bearer API key
|
||||
- Frontend uses existing OIDC/JWT auth
|
||||
|
||||
Reference in New Issue
Block a user