opencrm/backend/factory-defaults
duffyduck 60dc98e265 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
..
.gitkeep Factory-Defaults: Export + Import von Stammdaten-Katalogen 2026-04-23 14:10:12 +02:00
README.md Factory-Defaults: Export + Import von Stammdaten-Katalogen 2026-04-23 14:10:12 +02:00

README.md

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

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.