factory-defaults: builtin-Werkseinstellungen beim Auto-Seed einspielen
Neue VMs sollen direkt mit den im Repo abgelegten Stammdaten + Auftragsvorlagen + HTML-Templates hochkommen, ohne dass man jedes Mal manuell ein ZIP hochlädt. - Dockerfile: kopiert backend/factory-defaults nach /app/factory-defaults-builtin und backend/scripts nach /app/scripts - seed-factory-defaults.ts: ROOT-Pfad über FACTORY_DEFAULTS_DIR überschreibbar - entrypoint.sh: nach erfolgreichem Auto-Seed läuft `tsx scripts/seed-factory-defaults.ts` mit FACTORY_DEFAULTS_DIR auf den builtin-Pfad. Trigger NUR bei frischer DB (RAN_SEED=true), bestehende Installs werden nie nachträglich überschrieben. `backend/factory-defaults/*` bleibt gitignored – Inhalte legt jeder Operator-User selbst lokal ab (z.B. via Export-ZIP entpacken), sie landen beim nächsten Container-Build im Image. Live verifiziert: frischer Container mit RUN_SEED=true zieht 10 Anbieter, 4 Tarife, 18 Kündigungsfristen, 18 Laufzeiten, 8 Kategorien, 2 PDF-Vorlagen und 2 HTML-Templates ein; PDFs landen mit eindeutigem Suffix in uploads/. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -99,15 +99,28 @@ USER_COUNT=$(node -e "
|
||||
.catch(() => { process.stdout.write('-1'); process.exit(0); });
|
||||
" 2>/dev/null)
|
||||
|
||||
RAN_SEED=false
|
||||
if [ "${RUN_SEED:-false}" = "true" ]; then
|
||||
echo "[entrypoint] RUN_SEED=true – seede DB (Force)"
|
||||
npx prisma db seed || echo "[entrypoint] Seed fehlgeschlagen oder schon gelaufen – ignoriert"
|
||||
if npx prisma db seed; then RAN_SEED=true; else echo "[entrypoint] Seed fehlgeschlagen oder schon gelaufen – ignoriert"; fi
|
||||
elif [ "$USER_COUNT" = "0" ]; then
|
||||
echo "[entrypoint] DB ist leer (User-Count=0) – Auto-Seed wird ausgeführt"
|
||||
npx prisma db seed || echo "[entrypoint] Auto-Seed fehlgeschlagen – ignoriert"
|
||||
if npx prisma db seed; then RAN_SEED=true; else echo "[entrypoint] Auto-Seed fehlgeschlagen – ignoriert"; fi
|
||||
else
|
||||
echo "[entrypoint] DB enthält $USER_COUNT User – kein Seed nötig"
|
||||
fi
|
||||
|
||||
# Eingebaute Factory-Defaults nach Erstinstallation einspielen.
|
||||
# Das ist die Werkseinstellung für neue VMs: PDF-Vorlagen, Anbieter, Tarife,
|
||||
# HTML-Templates – alles aus /app/factory-defaults-builtin/. Erfolgt nur wenn
|
||||
# der Auto-Seed gerade lief (= frische DB), sonst werden Updates auf
|
||||
# bestehenden Installationen nicht ungewollt überschrieben.
|
||||
if [ "$RAN_SEED" = "true" ] && [ -d /app/factory-defaults-builtin ] \
|
||||
&& [ -n "$(ls -A /app/factory-defaults-builtin 2>/dev/null | grep -v -E '^(README\.md|\.gitkeep)$')" ]; then
|
||||
echo "[entrypoint] Spiele eingebaute Factory-Defaults ein…"
|
||||
FACTORY_DEFAULTS_DIR=/app/factory-defaults-builtin npx tsx scripts/seed-factory-defaults.ts \
|
||||
|| echo "[entrypoint] Factory-Defaults-Seed fehlgeschlagen – ignoriert"
|
||||
fi
|
||||
|
||||
echo "[entrypoint] Starte Backend…"
|
||||
exec "$@"
|
||||
|
||||
Reference in New Issue
Block a user