feat: Backup/Export + Import-UX klarer + Raiffeisen-Preset-Fix
Backup & Export: - routers/backup: /backup/db (Admin, konsistentes SQLite-Online-Backup), /export/transactions.csv|json und /export/all.json (owner-gescoped). - Einstellungen: Bereich „Backup & Export" mit Download-Buttons. docs/BACKUP.md (Wiederherstellung + LXC-Sicherung). pytest für Export + Admin-Schutz. Import-Verbesserungen (Nutzer-Feedback zum Ablauf): - Klarer Hinweis, dass die Zuordnungstabelle nur Beispielzeilen zeigt und „Vorschau erstellen" die vollständige Prüfliste + Buchen-Button erzeugt. - Zusammenfassung (erkannt/gebucht) und Warnung, wenn keine gültige Zeile erkannt wurde (Hinweis auf Format/Bank-Vorlage). - Fix: Raiffeisen-Preset hat has_header=true (der Export hat eine Kopfzeile). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
# Backup & Wiederherstellung
|
||||
|
||||
## In der App
|
||||
|
||||
**Einstellungen → Backup & Export:**
|
||||
|
||||
- **Buchungen (CSV/JSON)** und **Alle Daten (JSON)** — exportiert die *eigenen*
|
||||
Daten des angemeldeten Nutzers (owner-gescoped) zum Archivieren/Weiterverarbeiten.
|
||||
- **Komplettes DB-Backup** (nur Admin) — lädt eine konsistente Kopie der gesamten
|
||||
SQLite-Datenbank herunter (alle Nutzer). Erzeugt über die SQLite-Online-Backup-API,
|
||||
also auch bei laufendem Betrieb gefahrlos.
|
||||
|
||||
## Wiederherstellen (DB-Backup)
|
||||
|
||||
Die heruntergeladene `.db`-Datei ist die komplette Datenbank. Zum Wiederherstellen
|
||||
im LXC:
|
||||
|
||||
```bash
|
||||
systemctl stop certain-finance
|
||||
cp certain-finance-YYYYMMDD-HHMMSS.db /var/lib/certain-finance/app.db
|
||||
# WAL-/SHM-Reste entfernen, damit die Kopie sauber übernommen wird:
|
||||
rm -f /var/lib/certain-finance/app.db-wal /var/lib/certain-finance/app.db-shm
|
||||
chown certain-finance:certain-finance /var/lib/certain-finance/app.db 2>/dev/null || true
|
||||
systemctl start certain-finance
|
||||
```
|
||||
|
||||
## Datei-Backup (LXC)
|
||||
|
||||
Die Datenbank liegt unter `/var/lib/certain-finance/app.db`.
|
||||
|
||||
- **Proxmox-Snapshot:** `vzdump` des Containers sichert alles (empfohlen).
|
||||
- **Cron-Kopie:** täglich eine konsistente Kopie ablegen und rotieren:
|
||||
|
||||
```bash
|
||||
# /etc/cron.daily/certain-finance-backup (ausführbar machen)
|
||||
#!/bin/sh
|
||||
D=/var/lib/certain-finance
|
||||
mkdir -p "$D/backups"
|
||||
sqlite3 "$D/app.db" ".backup '$D/backups/app-$(date +\%Y\%m\%d).db'"
|
||||
# älter als 30 Tage löschen
|
||||
find "$D/backups" -name 'app-*.db' -mtime +30 -delete
|
||||
```
|
||||
|
||||
`update.sh` legt außerdem vor jeder Migration automatisch eine Kopie unter
|
||||
`/var/lib/certain-finance/backups/pre-update-*.db` an.
|
||||
+3
-2
@@ -32,5 +32,6 @@ via IBAN, Batch-Undo. Vorgefertigte Bank-Templates folgen aus Nutzer-Beispielen.
|
||||
Lokal: PyMuPDF (PDF-Text) + Tesseract-OCR (Scans/Bilder), heuristischer
|
||||
Zeilen-Parser (Datum + Betrag), speist dieselbe Prüfansicht. Best-Effort.
|
||||
|
||||
## Querschnitt – Backup/Export
|
||||
DB-Backup-Download + Export je Entität (CSV/JSON); dokumentierte LXC-Sicherung.
|
||||
## Querschnitt – Backup/Export ✅
|
||||
DB-Backup-Download (Admin) + Export je Entität (CSV/JSON); dokumentierte
|
||||
LXC-Sicherung (docs/BACKUP.md).
|
||||
|
||||
Reference in New Issue
Block a user