Unveränderter Stand von certvia/dev (a48c5fb) plus Craftvia-Spezifikation und Brandbook unter docs/craftvia/. ISMS-Module werden im Folgecommit entfernt. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
59 lines
3.4 KiB
Markdown
59 lines
3.4 KiB
Markdown
# Kickoff-Prompt — Lane Betreiber-Konsole-UX + i18n (certvia)
|
|
|
|
> Diesem Prompt einem Entwickler/Claude-Code-Agenten geben. Bootstrapt in certvia + diese Lane.
|
|
|
|
```text
|
|
Du übernimmst die Lane „Betreiber-Konsole-UX + vollständige i18n" am Produkt „certvia" (ISMS-Tool,
|
|
Multi-Tenant Next.js-16 / Prisma-7 / Postgres+RLS / Auth.js-v5). Repo: ~/Projects/ISMS-Tool, Branch `dev`.
|
|
|
|
WICHTIG: certvia ist strikt getrennt von jedem anderen Produkt (insb. „visitvia"). Nichts vermischen.
|
|
|
|
BRANCH/CHECKOUT:
|
|
Arbeits-Branch: `lane-ui-i18n` (KEIN `feature/`-Prefix — origin-Namespace-Konflikt).
|
|
git fetch origin && git checkout dev && git checkout -b lane-ui-i18n.
|
|
Remotes: origin = https://git.certvia.de/msolarczek/certvia.git · local-gitea (intern).
|
|
|
|
1) PFLICHTLEKTÜRE:
|
|
- docs/HANDOVER-DEV.md, docs/SPEC.md, docs/STAND-dev-branch.md
|
|
- docs/KONZEPT-ui-i18n.md ← dein Fahrplan (Bugfix 1+2, Ergänzungen A/B)
|
|
|
|
2) AUFTRAG:
|
|
BUGFIX 1 — Betreiber-Konsole (src/app/(platform)/admin/[id]/page.tsx):
|
|
- Module → Popup (searchParam `?modules=1`, <Modal>); Benutzer → Popup (`?users=1`).
|
|
Muster existiert bereits auf der Seite (?new/?edit/?audit) — analog kapseln.
|
|
- Hauptfenster stattdessen: Stammdaten (aus TenantSettings) + Hauptkontakt sichtbar.
|
|
Offene Kleinentscheidung: Hauptkontakt = neue Felder in TenantSettings vs. Ableitung aus
|
|
tenant-admin — mit PM klären.
|
|
BUGFIX 2 — Vollständige UI-Sprache + per-Mitarbeiter-Umschaltung:
|
|
- BEFUND: messages/en.json existiert (~95%), aber src/i18n/request.ts ist HART auf "de"
|
|
(Zeile 8). TenantSettings.locale steuert nur die Richtlinien-Import-Sprache, NICHT die UI.
|
|
- Neu: Identity.uiLocale (de|en, Default de) — persönliche Präferenz, folgt der Person.
|
|
- request.ts liest uiLocale der aktiven Session-Identity (Fallback de).
|
|
- Umschalter im Nutzer-Menü (Header/Profil) → Server-Action setUiLocale → speichern + reload.
|
|
- messages/en.json auf 100% prüfen/auffüllen; hartkodierte deutsche Strings in Komponenten
|
|
aufspüren und in den Katalog überführen.
|
|
ERGÄNZUNG A — Login: Organisationsfeld (`tenant`) aus src/app/login/page.tsx ENTFERNEN
|
|
(nach Option C überflüssig; Mandant kommt über /select-tenant). login-ticket-Signaturen entschlacken.
|
|
|
|
3) VERBINDLICHE REGELN:
|
|
- UI-Sprache (Identity.uiLocale, Person) und Vorlagen-Import-Sprache (TenantSettings.locale,
|
|
Inhalt) sind ZWEI getrennte Achsen — nicht vermischen.
|
|
- Popups über das bestehende searchParam/<Modal>-Muster, KEINE neue Modal-Infrastruktur.
|
|
- Stammdaten haben EINE Quelle (TenantSettings) — keine Doppelpflege einführen.
|
|
- RLS/Datenpfade unverändert; das ist eine reine UI-/Präferenz-Lane.
|
|
|
|
4) ARBEITSWEISE:
|
|
- Gate vor JEDEM Merge: tsc · lint · build · ALLE scripts/test-*.ts.
|
|
- UI-Verifikation im Browser: Betreiber-Popups (Module/Benutzer), Sprachumschaltung DE↔EN
|
|
(Menü + Beschreibungen wechseln), Login ohne Organisationsfeld, /select-tenant unverändert.
|
|
- DevOps: lane-ui-i18n → git merge --no-ff nach dev → Gate grün → Push auf BEIDE Remotes →
|
|
STAND pflegen.
|
|
|
|
5) NICHT TUN: keine Änderung am Auth-Kern/an /select-tenant-Logik; Identity.uiLocale nur als
|
|
Präferenzfeld ergänzen (keine Auth-Semantik).
|
|
|
|
Erste Schritte: (a) Pflichtlektüre + Fragen (v.a. Hauptkontakt-Feld), (b) PR-Plan je Bugfix
|
|
(Migration Identity.uiLocale, request.ts, Menü-Switcher; Popup-Umbau admin/[id]), (c) umsetzen.
|
|
Warte nach (a)/(b).
|
|
```
|