diff --git a/backend/factory-defaults/README.md b/backend/factory-defaults/README.md index d2e52a60..6023cedb 100644 --- a/backend/factory-defaults/README.md +++ b/backend/factory-defaults/README.md @@ -18,15 +18,21 @@ backend/factory-defaults/ │ ├── cancellation-periods.json # Kündigungsfristen │ ├── contract-durations.json # Vertragslaufzeiten │ └── contract-categories.json # Vertragskategorien (Strom/Gas/DSL/...) -└── pdf-templates/ - ├── pdf-templates.json # Metadaten + Feldzuordnungen - └── *.pdf # PDF-Vorlagen-Dateien +├── pdf-templates/ +│ ├── pdf-templates.json # Metadaten + Feldzuordnungen +│ └── *.pdf # PDF-Vorlagen-Dateien +└── app-settings/ + └── app-settings.json # HTML-Templates: Datenschutz / Impressum / + # Vollmacht / Website-Datenschutz ``` **Was NICHT enthalten ist:** Kundendaten, Verträge, Dokumente, E-Mails, SMTP-Einstellungen, -Datenschutzerklärungen oder andere AppSettings. Dafür gibt es den separaten +Secrets oder benutzerspezifische AppSettings. Dafür gibt es den separaten **Datenbank-Backup-Export** (Einstellungen → Datenbank & Zurücksetzen). +Bei den AppSettings ist nur eine **Whitelist** vorgesehen (HTML-Texte für rechtliche +Standardpflichten) – andere Keys werden beim Import ignoriert. + --- ## Export (aus einer bestehenden Installation) @@ -46,7 +52,8 @@ factory-defaults-2026-04-23.zip ├── contract-meta/contract-durations.json ├── contract-meta/contract-categories.json ├── pdf-templates/pdf-templates.json -└── pdf-templates/*.pdf +├── pdf-templates/*.pdf +└── app-settings/app-settings.json ``` Die ZIP kann an andere Installationen weitergegeben werden – z.B. für Test-Systeme, @@ -56,7 +63,15 @@ neue Installationen oder Partner-Setups. ## Import (in eine andere Installation) -### Schritt-für-Schritt +### Variante A: Über die UI (empfohlen) + +1. Im Ziel-CRM als Admin einloggen +2. **Einstellungen → Factory-Defaults** +3. Im Bereich **Import** auf **„ZIP hochladen"** klicken +4. Die exportierte ZIP wählen – der Import läuft direkt +5. Erfolgsmeldung zeigt Counts pro Kategorie an + +### Variante B: Über die CLI (für Bare-Metal / Migration / mehrere ZIPs zusammenführen) 1. **ZIP herunterladen** (aus einer Export-Installation oder von einer Vorlage) 2. **Inhalt entpacken** in diesen Ordner (`backend/factory-defaults/`), @@ -234,6 +249,24 @@ Array von Providern, jeweils inkl. zugehöriger Tarife: **Unique Key:** `name` **Wichtig:** Die `pdfFilename` muss zu einer PDF-Datei im selben Ordner passen. +### `app-settings/app-settings.json` + +HTML-Standardtexte als Werkseinstellung. Es ist eine **Whitelist** aktiv – andere Keys +werden beim Import ignoriert (Schutz vor versehentlichem Überschreiben von Secrets). + +```json +[ + { "key": "privacyPolicyHtml", "value": "
Was sind Factory-Defaults?
- Das sind reine Stammdaten-Kataloge wie Anbieter, Tarife, - Kündigungsfristen, Vertragskategorien und PDF-Auftragsvorlagen. Du kannst sie - exportieren, um sie in anderen OpenCRM-Installationen als Startpunkt zu - verwenden. + Das sind Stammdaten-Kataloge wie Anbieter, Tarife, + Kündigungsfristen, Vertragskategorien, PDF-Auftragsvorlagen und die + HTML-Standardtexte (Datenschutzerklärung, Impressum, Vollmacht-Vorlage, + Website-Datenschutz). Du kannst sie exportieren, um sie in anderen + OpenCRM-Installationen als Startpunkt zu verwenden.
- Nicht enthalten sind Kundendaten, Verträge, Dokumente, Emails
- oder Einstellungen – dafür gibt es den separaten{' '}
+ Nicht enthalten sind Kundendaten, Verträge, Dokumente, E-Mails
+ oder Konfigurationen (SMTP, Secrets) – dafür gibt es den separaten{' '}
Datenbank-Backup
@@ -127,16 +179,10 @@ export default function FactoryDefaults() {
- Erstellt ein ZIP mit allen Kataloge-Daten + PDF-Vorlagen. Lade es herunter und
- entpacke den Inhalt in einer anderen Installation unter{' '}
-
- Der Import läuft über ein Kommandozeilen-Script – dadurch bleibt klar, was wann
- passiert und es gibt keine ungeplanten Überschreibungen im Produktivbetrieb.
-
- Das Script läuft idempotent – gleiche Einträge werden per
- unique-Key aktualisiert, neue hinzugefügt. Kann beliebig oft ausgeführt werden.
-
+ Lade hier eine zuvor exportierte Factory-Defaults-ZIP hoch. Bestehende Einträge
+ werden anhand des Unique-Keys (Name / Code) aktualisiert, neue
+ werden angelegt. Es wird nichts gelöscht – der Vorgang ist idempotent.
+
- backend/factory-defaults/
-
- , dann dort{' '}
-
- npm run seed:defaults
- {' '}
- ausführen.
+ Erstellt ein ZIP mit allen Kataloge-Daten, PDF-Auftragsvorlagen und den
+ HTML-Standardtexten (Datenschutz / Impressum / Vollmacht). In einer anderen
+ OpenCRM-Installation kannst du es dann unten unter Import wieder
+ einspielen.
-
-
- backend/factory-defaults/
- {' '}
- entpacken
-
- npm run seed:defaults
-
-
+ npm run seed:defaults
+ {' '}
+ im Backend
+
+
+ {importResult.warnings.length > 0 && (
+
+ {importResult.warnings.map((w, i) => (
+
+