Beide Features auf 132 und 131 deployed (2026-07-07). PROJ-69/PROJ-70 ohne vollständigen Browser-/E2E-Test, nur Smoke-Tests — offene QA-Punkte in den Spec-Dateien dokumentiert. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
75 lines
3.1 KiB
Markdown
75 lines
3.1 KiB
Markdown
---
|
|
id: PROJ-69
|
|
title: Admin-Dashboard Tab-Gruppierung (2-Ebenen-Navigation)
|
|
status: Deployed
|
|
created: 2026-07-06
|
|
---
|
|
|
|
## Problem
|
|
|
|
`/admin` zeigt 17 flache Tabs in einer Zeile (`src/app/admin/page.tsx:152-175`).
|
|
Für superadmin fast alle sichtbar, unübersichtlich, schlecht skalierbar.
|
|
|
|
## Ziel
|
|
|
|
Zweistufige Navigation: Gruppe → Tab, analog zu bestehenden rollenbasierten
|
|
Sichtbarkeitsregeln (`isSuperAdmin`, `canViewDSGVO`, etc.). Kein neues
|
|
shadcn-Primitive, nur Layout-Umbau.
|
|
|
|
## Gruppen
|
|
|
|
1. **Übersicht** — Dashboard, Dienste (superadmin)
|
|
2. **Benutzer & Zugriff** — Benutzer, LDAP (Global, superadmin), LDAP (Tenant),
|
|
Mandanten (superadmin)
|
|
3. **Compliance** — Audit-Log, DSGVO-Anfragen (canViewDSGVO), Retention
|
|
(superadmin), Archivierungs-Regeln (superadmin)
|
|
4. **Mail-Eingang** — Import, IMAP-Einstellungen, Routing-Regeln, SMTP-Out
|
|
(superadmin), Quotas (superadmin)
|
|
5. **System** — Security (superadmin), Zertifikat (superadmin), Module
|
|
(superadmin)
|
|
|
|
## Acceptance Criteria
|
|
|
|
- [ ] Gruppen-Leiste über der bestehenden `TabsList` (z.B. Button-Segmentleiste
|
|
oder zweite `Tabs`-Ebene), Klick auf Gruppe zeigt nur ihre Sub-Tabs.
|
|
- [ ] Eine Gruppe wird nur angezeigt, wenn mindestens ein Tab darin für die
|
|
aktuelle Rolle sichtbar ist (kein leerer Gruppen-Button).
|
|
- [ ] Bestehende rollenbasierte Sichtbarkeit pro Tab bleibt unverändert
|
|
(`isSuperAdmin`, `canViewDSGVO`, `tenantAccessAllowed()`-Muster etc.).
|
|
- [ ] Für nicht-superadmin-Rollen (admin, domain_admin, domain_auditor):
|
|
nur Gruppen mit sichtbaren Tabs erscheinen — z.B. domain_auditor sieht
|
|
vermutlich nur "Compliance" + evtl. "Benutzer & Zugriff".
|
|
- [ ] Deep-Link/Reload auf einen Tab (z.B. `?tab=users`) bleibt funktionsfähig
|
|
falls das aktuell schon unterstützt wird (prüfen).
|
|
- [ ] Keine Funktionalität der einzelnen Tabs verändert, nur Navigation/Layout.
|
|
- [ ] Responsive: Gruppen-Leiste bricht auf Mobile sinnvoll um (analog
|
|
`.claude/rules/frontend.md` — 375px/768px/1440px).
|
|
|
|
## Non-Goals
|
|
|
|
- Keine neuen Tabs/Features, reine Navigations-Restrukturierung.
|
|
- Keine Backend-/API-Änderungen.
|
|
|
|
## Implementation Notes
|
|
|
|
`src/app/admin/page.tsx` (Commit 3b2a838): 5 Gruppen (Übersicht, Benutzer &
|
|
Zugriff, Compliance, Mail-Eingang, System) als Button-Leiste über der
|
|
bestehenden shadcn `Tabs`. Klick filtert sichtbare `TabsTrigger`,
|
|
`TabsContent` bleibt unverändert im DOM (Radix matched weiter per `value`
|
|
unabhängig von der Gruppen-Filterung). Rollenbasierte Sichtbarkeit pro Tab
|
|
1:1 übernommen, keine Funktionsänderung. `npx tsc --noEmit` lief sauber.
|
|
|
|
## QA Test Results
|
|
|
|
Kein Browser-/E2E-Test mit den 3 Rollen durchgeführt (Testuser-Frage blieb
|
|
ungeklärt, siehe Memory `project_proj69_admin_tabs_status`). Deploy auf
|
|
User-Anweisung trotzdem durchgeführt (2026-07-07): Frontend-Build auf 131
|
|
lief sauber, `/admin` liefert HTTP 200. Funktionale Prüfung der
|
|
Rollen-Filterung steht noch aus.
|
|
|
|
## Deployment
|
|
|
|
- 2026-07-07, 192.168.1.132 (Test) und 192.168.1.131 (Produktiv), je
|
|
`update.sh` (2 Läufe wegen Self-Update-Timing, siehe PROJ-67/68).
|
|
Frontend-Build erfolgreich, `/admin` erreichbar.
|