diff --git a/backend/todo.md b/backend/todo.md index 0a206467..b388a360 100644 --- a/backend/todo.md +++ b/backend/todo.md @@ -15,6 +15,36 @@ Wenn eine Email einem Vertrag zugeordnet ist: - Anhänge auch in Vertragsdokumente speichern - Rechnungen wie Kündigungsdokumente behandeln +### Factory-Defaults: Export + Import von Lieferanten & Formularvorlagen +**Ziel:** Einmal gepflegte Stammdaten (Anbieter, Tarife, Kündigungsfristen, Laufzeiten, +PDF-Auftragsvorlagen) sollen sich exportieren und in andere Installationen oder +als Factory-Default beim Initialisieren wieder einspielen lassen. + +**Konzept:** +- Ordner: `backend/factory-defaults/` (gitignoriert für echte Firmen-Exports, + aber mit `.gitkeep` und optional einem öffentlich teilbaren `seeds/`-Unterordner) + Struktur: + ``` + backend/factory-defaults/ + providers/ → providers.json (Anbieter + Tarife) + contract-meta/ → cancellationPeriods.json, contractDurations.json, contractCategories.json + pdf-templates/ → {templateName}.json + dazugehörige PDF-Datei + ``` + +- **Export:** Button in Einstellungen → "Factory-Defaults exportieren" + - Erstellt ZIP mit allen JSON-Dateien + PDF-Vorlagen + - User entpackt das ZIP nach `backend/factory-defaults/` + +- **Import-Script:** `backend/scripts/seed-factory-defaults.ts` + - Liest alle Dateien aus `backend/factory-defaults/` + - Bei mehreren Dateien: automatisches Mergen (per unique name) + - Nutzt Prisma `upsert` → idempotent, kann mehrfach ausgeführt werden + - PDF-Dateien werden nach `uploads/` kopiert + Pfade in DB aktualisiert + - Aufruf: `npm run seed:defaults` + +- **Init-DB Integration:** Script wird optional beim Setup mit ausgeführt + wenn der Ordner existiert + --- ## ✅ Erledigt