Factory-Defaults: Export + Import von Stammdaten-Katalogen
Ein neues System um Stammdaten-Kataloge zwischen Installationen zu teilen – explizit ohne Kundendaten, Verträge oder Einstellungen. **Was wird exportiert:** - Anbieter + zugehörige Tarife - Kündigungsfristen - Vertragslaufzeiten - Vertragskategorien - PDF-Auftragsvorlagen (JSON + PDF-Dateien + Feldzuordnungen) **Was NICHT:** - Kundendaten, Verträge, Dokumente, Emails, SMTP-Einstellungen → dafür gibt es den Datenbank-Backup **Neue Einstellungsseite /settings/factory-defaults:** - Zeigt Anzahl pro Kategorie (Anbieter, Tarife, Fristen, …) - "Exportieren"-Button lädt ZIP herunter (manifest.json + JSONs + PDFs) - Import-Anleitung inline **Import-Script:** - `npm run seed:defaults` (tsx scripts/seed-factory-defaults.ts) - Liest alle JSON-Dateien aus backend/factory-defaults/*/*.json - Merged mehrere Dateien automatisch pro Kategorie (unique-key gewinnt zuletzt) - Upsertet idempotent → kann mehrfach ausgeführt werden - Kopiert PDF-Vorlagen aus factory-defaults/pdf-templates/ nach uploads/pdf-templates/ - Alte PDF-Dateien werden beim Re-Import entsorgt Backend: - services/factoryDefaults.service.ts: collectFactoryDefaults() + exportFactoryDefaults() - controllers/factoryDefaults.controller.ts: preview + export - routes/factoryDefaults.routes.ts: GET /api/factory-defaults/preview + /export - scripts/seed-factory-defaults.ts: CLI-Import-Script - .gitignore: factory-defaults/* außer .gitkeep und README.md Frontend: - pages/settings/FactoryDefaults.tsx: Übersicht + Export-Button - Settings-Karte „Factory-Defaults" im System-Abschnitt Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
+8
-38
@@ -10,48 +10,18 @@
|
||||
|
||||
### Security System testen
|
||||
|
||||
### 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.
|
||||
|
||||
**⚠️ Wichtig – Abgrenzung:**
|
||||
- **KEINE Kundendaten, Verträge, Dokumente, Emails, SMTP-Einstellungen o.ä.**
|
||||
- NUR reine Stammdaten-Kataloge ohne Bezug zu Kunden/Firma
|
||||
- Für komplette Backups (inkl. Kundendaten, Dokumente, Einstellungen) gibt es bereits
|
||||
den separaten Backup-Export
|
||||
|
||||
**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
|
||||
- **Nur** Kataloge: Anbieter, Tarife, Kündigungsfristen, Laufzeiten, Vertragskategorien,
|
||||
PDF-Auftragsvorlagen (inkl. PDF-Dateien + Feldzuordnungen)
|
||||
- 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
|
||||
|
||||
- [x] **Factory-Defaults: Export + Import von Stammdaten-Katalogen**
|
||||
- Enthält: Anbieter, Tarife, Kündigungsfristen, Laufzeiten, Vertragskategorien, PDF-Auftragsvorlagen (+ PDF-Dateien)
|
||||
- Enthält NICHT: Kundendaten, Verträge, Dokumente, Emails, Einstellungen (dafür gibt es den Datenbank-Backup)
|
||||
- Neue Einstellungsseite „Factory-Defaults" mit Übersicht (Anzahl pro Kategorie) und Export-Button
|
||||
- Export: ZIP mit manifest.json + Kategorie-JSONs + PDF-Dateien, Download über Browser
|
||||
- Import-Script: `npm run seed:defaults` liest `backend/factory-defaults/`, merged mehrere JSONs pro Kategorie, upsertet idempotent + kopiert PDFs in uploads/
|
||||
- Ordner `backend/factory-defaults/` gitignoriert (außer .gitkeep + README), damit firmen-spezifische Kataloge nicht ins Repo kommen
|
||||
|
||||
- [x] **Email-Anhänge → Vertragsdokumente + Rechnungen für alle Vertragstypen**
|
||||
- Im SaveAttachmentModal (bei einem per Email zugeordneten Vertrag) gibt es jetzt drei Modi:
|
||||
1. **Als Dokument** (in feste Slots wie Kündigungsschreiben) – wie bisher
|
||||
|
||||
Reference in New Issue
Block a user