Commit Graph

2 Commits

Author SHA1 Message Date
Matthias Hochmeister
f99c1f1abd fix(seed): tsx-Laufzeit-Imports im Katalog-Seed auf relative .js umstellen
Der Standalone-Runner `tsx src/db/seed/index.ts` (npm run db:seed)
importierte Laufzeit-Module ueber den tsconfig-Pfad-Alias `@/`
(`@/db/schema`, `@/lib/audit`). tsx loest `paths` nur versionsabhaengig
auf (erst ab v4.20); package.json pinnt jedoch `tsx ^4.19.2`, sodass
eine 4.19.x-Aufloesung mit ERR_MODULE_NOT_FOUND scheitert, bevor eine
DB-Verbindung aufgebaut wird. Der Offline-Unit-Test maskierte das, weil
er nur die `./data/*`-Dateien importiert und Vite den Alias aufloest.

Fix: index.ts und upsert.ts nutzen jetzt relative `.js`-Imports
(`../schema/index.js`, `../../lib/audit.js`, `./data/*.js`, `./upsert.js`)
analog zu scripts/seed-auth.ts und scripts/migrate.ts. Damit ist die
Aufloesung tsx-versionsunabhaengig und konsistent zur etablierten
Konvention der uebrigen per tsx ausgefuehrten Scripts.

Verifiziert offline: tsc --noEmit (0), 25 Seed-Unit-Tests gruen, und
das Seed-Modul-Importgraph laedt unter `node --import tsx/esm` ohne
Resolver-Fehler. Die tatsaechliche `npm run db:seed`-Ausfuehrung gegen
Postgres bleibt deferred (kein Postgres/Server im Sandbox).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 12:20:29 +02:00
Matthias Hochmeister
034fdb175f Workstream 9: Seed-Daten aus NÖ-Katalog (Phase 6)
Idempotente Katalog-Seeds, die docs/reference/fahrzeug-katalog-noelfv.md
als Code abbilden. Importiert ausschließlich das bestehende Drizzle-Schema
(WS2), definiert keine Tabellen neu.

- 34 Merkmale (+ Enum-Optionen: feuerloeschpumpe_typ=8, anzahl_achsen=3,
  stromerzeuger_bauart=3); Funkrufname ist Spalte, kein Merkmal.
- 11 Fahrzeug-Vorlagen mit Pflichtmerkmalen, typisierten Vorgabewerten
  (vorgabewert_num/_text/_bool) und Aliassen mit `bestaetigt`.
  RLF/RLFA 2000 + 2000-4000 = true; kein HLFA-Alias (Laufzeitregel ist
  kanonisch); HLF 4-U als Alias auf HLF 4 mit Pulver-Pflichtmerkmalen.
- 11 Geräte-Kategorien (Natural Key name).
- upsert.ts: ausschließlich onConflictDoUpdate auf Natural Keys
  (slug/code/name + Verknüpfungs-PKs); index.ts seedet in EINER Transaktion
  (Merkmale -> Optionen -> Vorlagen -> Vorlagen-Merkmale -> Aliasse ->
  Kategorien) via Slug->ID-Map, sequenzielle Awaits.
- Reiner Offline-Unit-Test (seed.test.ts) prüft alle fachlichen Invarianten
  ohne DB; package.json-Script db:seed ergänzt.

Verifikation offline: tsc --noEmit (0), drizzle-kit check (0),
next build (0), vitest run (191 passed, 7 DB-Tests skipped).
Seed-Ausführung selbst deferred (kein Postgres im Sandbox).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 12:07:39 +02:00