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,23 @@
|
||||
import { Router } from 'express';
|
||||
import * as factoryDefaultsController from '../controllers/factoryDefaults.controller.js';
|
||||
import { authenticate, requirePermission } from '../middleware/auth.js';
|
||||
|
||||
const router = Router();
|
||||
|
||||
// Preview (was wäre im Export drin?)
|
||||
router.get(
|
||||
'/preview',
|
||||
authenticate,
|
||||
requirePermission('settings:read'),
|
||||
factoryDefaultsController.previewFactoryDefaults,
|
||||
);
|
||||
|
||||
// Export als ZIP-Download
|
||||
router.get(
|
||||
'/export',
|
||||
authenticate,
|
||||
requirePermission('settings:update'),
|
||||
factoryDefaultsController.exportFactoryDefaults,
|
||||
);
|
||||
|
||||
export default router;
|
||||
Reference in New Issue
Block a user