feat/032-backup-scheduling-mvp #36
@ -16,6 +16,11 @@ ## Goals
|
||||
- Retention löscht alte Backups nach Policy.
|
||||
- Filament UI: Schedules verwalten, Run-History ansehen, “Run now”, “Retry”.
|
||||
|
||||
## Clarifications
|
||||
|
||||
### Session 2026-01-05
|
||||
- Q: Wie sollen wir mit `policy_types` umgehen, die nicht in `config('tenantpilot.supported_policy_types')` enthalten sind? → A: Beim Speichern hart validieren und ablehnen; zur Laufzeit defensiv re-checken (Legacy/DB), unknown types skippen und Run als `partial` markieren mit `error_code=UNKNOWN_POLICY_TYPE` und Liste betroffener Types.
|
||||
|
||||
## Non-Goals (MVP)
|
||||
- Kein Kalender-UI als Pflicht (kann später ergänzt werden).
|
||||
- Kein Cross-Tenant Bulk Scheduling (MSP-Templates später).
|
||||
@ -37,6 +42,9 @@ ### Functional Requirements
|
||||
- **FR-003**: Run nutzt bestehende Services:
|
||||
- Sync Policies (nur selektierte policy types)
|
||||
- Create BackupSet aus lokalen Policy-IDs (inkl. Foundations optional)
|
||||
- **FR-003a**: `policy_types` sind ausschließlich Keys aus `config('tenantpilot.supported_policy_types')`.
|
||||
- **FR-003b**: UI/Server-side Validation verhindert das Speichern unbekannter `policy_types`.
|
||||
- **FR-003c**: Laufzeit-Validierung (defensiv): Unbekannte `policy_types` werden geskippt; wenn mindestens ein gültiger Type verarbeitet wurde, wird der Run als `partial` markiert und `error_code=UNKNOWN_POLICY_TYPE` gesetzt (inkl. Liste der betroffenen Types in `summary`).
|
||||
- **FR-004**: Run schreibt `backup_schedule_runs` mit Status + Summary + Error-Codes.
|
||||
- **FR-005**: “Run now” erzeugt sofort einen Run (scheduled_for=now) und dispatcht Job.
|
||||
- **FR-006**: “Retry” erzeugt einen neuen Run für denselben Schedule.
|
||||
@ -114,4 +122,5 @@ ## Acceptance Criteria
|
||||
- UI zeigt Last Run + Next Run + Run-History.
|
||||
- Run now startet sofort.
|
||||
- Fehlerfälle (Token/Permission/Throttle) werden als failed/partial markiert mit error_code.
|
||||
- Unbekannte `policy_types` können nicht gespeichert werden; falls Legacy-Daten vorkommen, werden sie zur Laufzeit geskippt und der Run wird als `partial` markiert mit `error_code=UNKNOWN_POLICY_TYPE`.
|
||||
- Retention hält nur die letzten N BackupSets pro Schedule.
|
||||
|
||||
Loading…
Reference in New Issue
Block a user