UX-09: Prüfprotokoll
CI / Web-Barrierefreiheitspruefung (axe, Tastatur, Reflow, Textabstaende) (push) Canceled after 0s
CI / Web-Barrierefreiheitspruefung (axe, Tastatur, Reflow, Textabstaende) (pull_request) Canceled after 0s
CI / Core-Modul (Build/Vet/Test) (push) Canceled after 0s
CI / DMS Security-Test-Gate (AC5, Merge-Gate) (push) Canceled after 0s
CI / DMS-Modul Supply-Chain-Scan (govulncheck) (push) Canceled after 0s
CI / Web (dms-browser) (push) Canceled after 0s
CI / Web (pdf-viewer) (push) Canceled after 0s
CI / Web (shl) (push) Canceled after 0s
Archive-Schnittstellen-Vertragstests / contract-tests (pull_request) Canceled after 0s
Archive-Pflichttest-Gate / pflichttest-gate (pull_request) Canceled after 0s
CI / Core-Modul (Build/Vet/Test) (pull_request) Canceled after 0s
CI / DMS Security-Test-Gate (AC5, Merge-Gate) (pull_request) Canceled after 0s
CI / DMS-Modul Supply-Chain-Scan (govulncheck) (pull_request) Canceled after 0s
CI / Web (dms-browser) (pull_request) Canceled after 0s
CI / Web (pdf-viewer) (pull_request) Canceled after 0s
CI / Web (shl) (pull_request) Canceled after 0s
Core-Schnittstellen-Vertragstests / contract-tests (pull_request) Canceled after 0s
Supply-Chain-Scan (Go) / govulncheck (pull_request) Canceled after 0s
Mail-Pflichttest-Gate / pflichttest-gate (pull_request) Canceled after 0s
Supply-Chain-Scan (npm) / npm-audit (pull_request) Canceled after 0s
Core-Pflichttest-Gate / pflichttest-gate (pull_request) Canceled after 0s
RBAC-Rollenhierarchie-Pflichtgate / rbac-policy-invariant (pull_request) Canceled after 0s
CI / DMS-Modul (Lint/Build/Test/Coverage/Artefakt) (push) Canceled after 0s
CI / DMS-Modul (Lint/Build/Test/Coverage/Artefakt) (pull_request) Canceled after 0s
CI / Web-Barrierefreiheitspruefung (axe, Tastatur, Reflow, Textabstaende) (push) Canceled after 0s
CI / Web-Barrierefreiheitspruefung (axe, Tastatur, Reflow, Textabstaende) (pull_request) Canceled after 0s
CI / Core-Modul (Build/Vet/Test) (push) Canceled after 0s
CI / DMS Security-Test-Gate (AC5, Merge-Gate) (push) Canceled after 0s
CI / DMS-Modul Supply-Chain-Scan (govulncheck) (push) Canceled after 0s
CI / Web (dms-browser) (push) Canceled after 0s
CI / Web (pdf-viewer) (push) Canceled after 0s
CI / Web (shl) (push) Canceled after 0s
Archive-Schnittstellen-Vertragstests / contract-tests (pull_request) Canceled after 0s
Archive-Pflichttest-Gate / pflichttest-gate (pull_request) Canceled after 0s
CI / Core-Modul (Build/Vet/Test) (pull_request) Canceled after 0s
CI / DMS Security-Test-Gate (AC5, Merge-Gate) (pull_request) Canceled after 0s
CI / DMS-Modul Supply-Chain-Scan (govulncheck) (pull_request) Canceled after 0s
CI / Web (dms-browser) (pull_request) Canceled after 0s
CI / Web (pdf-viewer) (pull_request) Canceled after 0s
CI / Web (shl) (pull_request) Canceled after 0s
Core-Schnittstellen-Vertragstests / contract-tests (pull_request) Canceled after 0s
Supply-Chain-Scan (Go) / govulncheck (pull_request) Canceled after 0s
Mail-Pflichttest-Gate / pflichttest-gate (pull_request) Canceled after 0s
Supply-Chain-Scan (npm) / npm-audit (pull_request) Canceled after 0s
Core-Pflichttest-Gate / pflichttest-gate (pull_request) Canceled after 0s
RBAC-Rollenhierarchie-Pflichtgate / rbac-policy-invariant (pull_request) Canceled after 0s
CI / DMS-Modul (Lint/Build/Test/Coverage/Artefakt) (push) Canceled after 0s
CI / DMS-Modul (Lint/Build/Test/Coverage/Artefakt) (pull_request) Canceled after 0s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
319144fbeb
commit
143c9f32a3
1 file changed
+42
@@ -0,0 +1,42 @@
|
||||
# UX-09 – Prüfprotokoll: Akten-/Vorgangsanzeige im Mail-Kontext
|
||||
|
||||
Stand: 2026-09-25. Entwicklungshost 192.168.1.204 (Node.js v24.18.0). Frischer Klon des gepushten Branches `feature/ux-09-akten-vorgangsanzeige-im-mail-kontext`.
|
||||
|
||||
## Hinweis zur Ausgangslage
|
||||
|
||||
Der Ticketkopf setzt `UX-02` (vollständige E-Mail-Detailansicht mit Thread-Darstellung) als bereits fertiggestellt voraus. Tatsächlich existiert in `web/mail-search/app/mail/[messageId]/page.tsx` bisher nur die aus SRC-04 stammende Minimalansicht (Betreff-/Text-Snippet aus dem Suchtreffer, kein vollständiger Mail-Abruf, kein Thread) — der Kommentar im Code selbst vermerkt das ausdrücklich ("vollständige Mail-Ansicht wird von einer späteren Kachel ergänzt"). `UX-02` ist somit nicht real umgesetzt, nur die Ticket-Ausgangslage behauptet es.
|
||||
|
||||
Entscheidung: kein Blocker für dieses Ticket, da UX-09 laut eigenem Auftrag nur die Akte-Anzeige *innerhalb* der Detailansicht ist, unabhängig von deren sonstigem Ausbaustand. Die neue Komponente (`CaseContextPanel`) ist in die bestehende Minimalansicht eingehängt und funktioniert unverändert weiter, sobald `UX-02` den restlichen Seiteninhalt ausbaut. Keine Annahme über eine nicht existierende Thread-Struktur getroffen.
|
||||
|
||||
## Ergebnis auf einen Blick
|
||||
|
||||
| Akzeptanzkriterium | Ergebnis |
|
||||
|---|---|
|
||||
| AK1: Detailansicht zeigt Akte-Zugehörigkeit, Vermerke, offene Wiedervorlagen, falls vorhanden | erfüllt |
|
||||
| AK2: kein eigenes Akte-Datenmodell in Mail, ausschließlich Anzeige über externe API | erfüllt |
|
||||
| AK3: Ausfall des Workflow-Boards blockiert die Mailanzeige nicht, Akte-Bereich zeigt "vorübergehend nicht verfügbar" | erfüllt |
|
||||
|
||||
## Architektur
|
||||
|
||||
- `web/mail-search/lib/caseContext.ts`: dünner Client, ruft ausschließlich die eigene BFF-Route auf (Konvention wie `lib/search.ts`/`lib/facets.ts` aus SRC-04/SRC-06). `fetchCaseContext` wirft nie — liefert immer ein `CaseContextResult` mit `status: "ok" | "none" | "unavailable"`.
|
||||
- `web/mail-search/app/api/case-context/route.ts`: Backend-for-Frontend-Route, ruft die externe Workflow-Rückkanal-API (`GET /objects/{module}/{type}/{id}/context`, VOR-04) auf. Reicht die Antwort unverändert durch (AK2) — kein eigenes Feld, keine eigene Tabelle. Netzwerkfehler zum Workflow-Board werden als `502` durchgereicht (AK3), `401`/`403` unverändert weitergegeben.
|
||||
- `web/mail-search/app/mail/[messageId]/CaseContextPanel.tsx`: Client-Komponente, in die bestehende Detailseite eingehängt. Rendert `null` ohne Akte-Verknüpfung (kein leerer Rahmen), zeigt bei `unavailable` den vorgeschriebenen Hinweistext, sonst Akte-Referenz, Vermerke, offene Wiedervorlagen.
|
||||
- Env-Variable `WORKFLOW_BACKCHANNEL_URL` (Basis-URL der Workflow-Rückkanal-API) — keine Zugangsdaten im Code.
|
||||
|
||||
## Durchgeführte Prüfungen
|
||||
|
||||
| # | Prüfung | Ergebnis |
|
||||
|---|---|---|
|
||||
| 1 | E-Mail mit verknüpfter Akte zeigt Akte-Informationen korrekt an | **Bestanden.** `caseContext.test.ts` ("liefert Akte, Vermerke und Wiedervorlagen..."), `route.test.ts` ("reicht die Antwort des Workflow-Boards unverändert durch"), `CaseContextPanel.test.tsx` ("zeigt Akte-Referenz und Vermerke..."). |
|
||||
| 2 | E-Mail ohne Akte-Verknüpfung zeigt Bereich nicht/leer an, kein Fehler | **Bestanden.** `caseContext.test.ts` ("liefert 'none' ohne Fehler..."), `CaseContextPanel.test.tsx` ("zeigt keinen Bereich, wenn die Mail zu keiner Akte gehört") — Komponente rendert `null`, kein DOM-Element mit `aria-label="Akte"`. |
|
||||
| 3 | Simulierter Ausfall der Workflow-API blockiert die übrige Mailanzeige nicht | **Bestanden.** `caseContext.test.ts` ("liefert 'unavailable' statt zu werfen..."), `route.test.ts` ("liefert 502 bei nicht erreichbarem Workflow-Board"), `CaseContextPanel.test.tsx` ("zeigt Hinweis statt zu werfen...") — `fetchCaseContext` wirft in keinem Pfad, die Detailseite selbst bleibt unverändert bedienbar. |
|
||||
|
||||
## Automatisierte Tests
|
||||
|
||||
Vollständiger Testlauf (`npm test`, vitest) auf Host 204, frischer Klon: **40/40 Tests grün, 8/8 Testdateien**, keine Regression in den bestehenden Suiten (`search`, `facets`, `highlight`, `shortcuts`, `filterState`). Neue Tests: `lib/caseContext.test.ts` (4), `app/api/case-context/route.test.ts` (4), `app/mail/[messageId]/CaseContextPanel.test.tsx` (3).
|
||||
|
||||
`npx tsc --noEmit`: keine Fehler.
|
||||
|
||||
## Nicht Bestandteil (laut Ticket, nicht umgesetzt)
|
||||
|
||||
Akte-Datenmodell, Vermerke-Erfassung, Wiedervorlage-Erfassung — alle bereits in VOR-01/02/03 auf der Workflow-Seite umgesetzt, hier nur konsumiert.
|
||||
Reference in new issue
Block a user