feat: automatische geplante Backups mit Rotation

Phase 1.3 - Automatische Backups:
- Cron-basierter Scheduler (Standard: täglich 2 Uhr)
- Konfigurierbar über .env (Zeitplan, Verzeichnis, Anzahl)
- Automatische Rotation: behält nur letzte N Backups (Standard: 7)
- UI in Settings → Backup: Status-Anzeige und manueller Trigger
- Tests: 7 erfolgreiche Tests für Scheduler-Funktionalität

Neue Umgebungsvariablen:
- BACKUP_ENABLED (Standard: true)
- BACKUP_SCHEDULE (Standard: 0 2 * * *)
- BACKUP_DIR (Standard: ./backups)
- BACKUP_KEEP (Standard: 7)
- TZ (für Zeitzone)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Ulas Kalayci
2026-05-04 07:02:38 +02:00
parent 99a2280c02
commit 9b29d1847c
11 changed files with 484 additions and 3 deletions
+48
View File
@@ -724,3 +724,51 @@
.cat-add-form .form-input {
flex: 1;
}
/* --------------------------------------------------------
Backup Scheduler Info Grid
-------------------------------------------------------- */
.settings-info-grid {
display: flex;
flex-direction: column;
gap: var(--space-3);
}
.settings-info-row {
display: flex;
justify-content: space-between;
align-items: center;
gap: var(--space-2);
padding: var(--space-2) 0;
border-bottom: 1px solid var(--color-border);
}
.settings-info-row:last-of-type {
border-bottom: none;
}
.settings-info-label {
font-size: var(--text-sm);
color: var(--color-text-secondary);
font-weight: var(--font-weight-medium);
}
.settings-info-value {
font-size: var(--text-sm);
color: var(--color-text-primary);
text-align: right;
}
.settings-info-value--success {
color: var(--color-success);
font-weight: var(--font-weight-semibold);
}
.settings-info-value code {
font-family: var(--font-mono);
font-size: var(--text-xs);
padding: var(--space-1) var(--space-2);
background: var(--color-surface-2);
border-radius: var(--radius-sm);
}