Skip to the content.

Task 94 — Backup & SLO panel

Phase: 7 Initiative: 48 Status: done Owner: — Slug: web-backup-slo-panel

Goal

BackupController (task_063) и SloController (task_064) — критичные операционные эндпойнты: ручной backup, восстановление из архива, листинг архивов, SLO-определения и текущий burn rate. Web не использует ни один из них. Нужна страница, которая даёт оператору возможность одной кнопкой сделать backup и видеть здоровье SLO.

Acceptance criteria

Sub-tasks

Implementation notes

Round 1 (this tick) — completed

Backup & SLO панель для новой страницы src/pages/ops.astro (Phase 7 task_094).

API (src/lib/api.ts) — добавлены 11 методов и 15 DTO:

Backup:

SLO:

Расхождение DTO со spec’ом: Спека перечисляла BackupEntryDto (id, createdAt, sizeBytes, kind: full|incremental, label, sha256, encrypted) и SloDefinitionDto (id, name, target, windowDays, errorBudgetMinutes). Реальный wire-формат использует разные поля. kind: full|incremental — backend не имеет incremental-бэкапов (все full). label и sha256 — отсутствуют в BackupSummary (filename + size_bytes + components + files_count). SloDefinition использует vertical/description/availabilityTarget/responseTimeTargetMs/… (per-objective, не per-window errorBudgetMinutes). DTO в api.ts зеркалит реальный wire-формат, чтобы избежать полей-призраков; в комментариях отмечено расхождение.

BackupPanel (src/components/BackupPanel.astro) — новый:

SloPanel (src/components/SloPanel.astro) — новый:

Страница (src/pages/ops.astro):

Layout (src/layouts/Layout.astro):

README (src/hercules-web/README.md):

Round 1 — validation