Files
opencrm/backend/factory-defaults/README.md
T
duffyduck ad49b92ee9 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>
2026-04-23 14:10:12 +02:00

46 lines
1.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.