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:
@@ -0,0 +1,45 @@
|
||||
# Factory Defaults
|
||||
|
||||
Dieser Ordner enthält **Stammdaten-Kataloge**, die beim Initialisieren einer neuen
|
||||
OpenCRM-Installation automatisch eingespielt werden können.
|
||||
|
||||
## Was ist drin?
|
||||
|
||||
- `providers.json` – Anbieter inkl. zugehöriger Tarife
|
||||
- `cancellation-periods.json` – Kündigungsfristen (z.B. "14 Tage", "1 Monat")
|
||||
- `contract-durations.json` – Vertragslaufzeiten (z.B. "12 Monate", "24 Monate")
|
||||
- `contract-categories.json` – Vertragskategorien (Strom, Gas, DSL …)
|
||||
- `pdf-templates.json` + `pdf-templates/*.pdf` – PDF-Auftragsvorlagen mit Feldzuordnungen
|
||||
|
||||
**NICHT enthalten sind Kundendaten, Verträge, Dokumente, E-Mails oder SMTP-Einstellungen.**
|
||||
Dafür gibt es den separaten Datenbank-Backup-Export.
|
||||
|
||||
## Wie nutze ich das?
|
||||
|
||||
### Export (aus bestehender Installation)
|
||||
In den CRM-Einstellungen → Factory-Defaults → „Exportieren" → ZIP herunterladen
|
||||
und den Inhalt in diesen Ordner entpacken.
|
||||
|
||||
### Import
|
||||
```bash
|
||||
npm run seed:defaults
|
||||
```
|
||||
|
||||
Das Script liest alle Dateien aus diesem Ordner, merged mehrere JSONs automatisch
|
||||
per unique-name und spielt sie per Prisma `upsert` ein. Kann mehrfach ausgeführt
|
||||
werden (idempotent).
|
||||
|
||||
## Mehrere Export-Dateien mergen
|
||||
|
||||
Wenn du mehrere ZIPs entpackst (z.B. Provider-Pakete von verschiedenen Quellen),
|
||||
kannst du die JSON-Dateien frei umbenennen – das Script liest alle `*.json` im
|
||||
jeweiligen Unterordner und merged den Inhalt zusammen.
|
||||
|
||||
Beispiel:
|
||||
```
|
||||
providers/
|
||||
verivox.json
|
||||
check24.json
|
||||
eigene.json
|
||||
```
|
||||
Alle drei werden eingespielt, gleiche Anbieter werden über den `name` gemerged.
|
||||
Reference in New Issue
Block a user