Workstream 8: Detailseiten & Kontakt (Phase 5)
Drei serverseitige Lese-Detailseiten (Fahrzeug, Gerät, Wehr), default-deny:
- src/lib/detail/merkmale.ts: formatMerkmal (de-AT Tausenderpunkt + NBSP,
Ja/Nein, enum-Label, „–"), toEckdaten. ICU-unabhängige Zahl-Formatierung
(formatToParts -> Punkt/Komma), da de-AT je nach ICU-Build U+202F gruppiert.
- src/lib/detail/queries.ts: read-only, wehrübergreifend; loadMerkmalRows
(Join merkmal_values↔merkmale↔merkmal_optionen via wert=value_text),
getFahrzeugDetail (+Beladung, +WehrCard), getGeraetDetail (Fahrzeug-Link
oder „im Gerätehaus"), getWehrDetail (Fuhrpark + Geräte im Haus),
getBrigadeCard. UUID-IDs.
- Komponenten: detail/{DetailHeader,EckdatenGrid,BeladungListe,StatusBadge},
kontakt/{KontaktButton (tel:/mailto:, Telefon ohne Leerzeichen, subject;
Empty-State),WehrCard}.
- Seiten (app)/{fahrzeuge,geraete,wehren}/[id]/page.tsx mit requireSession()
als erster Zeile (Default-deny in der Tiefe) + fahrzeuge/[id]/not-found.tsx.
- i18n-Keys (detail/kontakt/wehr) ergänzt; keine hartkodierten Strings.
Tests: merkmale.test.ts (11), queries.test.ts (3, gemockte DB für
„im Gerätehaus" + not-found). Playwright detail-auth.spec.ts geschrieben
(deferred: kein Server/DB in Sandbox); Detailrouten ins Gating-Manifest
aufgenommen.
Offline verifiziert: vitest src/lib/detail grün; tsc --noEmit ok; eslint
ok; next build erfolgreich (alle drei [id]-Routen vorhanden).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -55,7 +55,29 @@ export const de = {
|
||||
eckdaten: "Eckdaten",
|
||||
beladung: "Beladung",
|
||||
keineEckdaten: "Keine Eckdaten erfasst.",
|
||||
keineBeladung: "Keine Beladung zugeordnet.",
|
||||
imGeraetehaus: "im Gerätehaus",
|
||||
leerWert: "–",
|
||||
ja: "Ja",
|
||||
nein: "Nein",
|
||||
zugeordnetesFahrzeug: "Zugeordnetes Fahrzeug",
|
||||
kategorie: "Kategorie",
|
||||
fahrzeuge: "Fahrzeuge",
|
||||
keineFahrzeuge: "Keine Fahrzeuge erfasst.",
|
||||
geraeteImHaus: "Geräte im Gerätehaus",
|
||||
keineGeraeteImHaus: "Keine Geräte im Gerätehaus.",
|
||||
nichtGefunden: "Nicht gefunden.",
|
||||
},
|
||||
kontakt: {
|
||||
titel: "Kontakt",
|
||||
anrufen: "Anrufen",
|
||||
email: "E-Mail schreiben",
|
||||
keine: "Keine Kontaktdaten hinterlegt.",
|
||||
betreff: "FlorianNetz – Anfrage",
|
||||
},
|
||||
wehr: {
|
||||
wehrfuehrer: "Wehrführer",
|
||||
adresse: "Adresse",
|
||||
},
|
||||
fehler: {
|
||||
allgemein: "Es ist ein Fehler aufgetreten.",
|
||||
|
||||
Reference in New Issue
Block a user