Files
archivmail/features/PROJ-69-admin-tabs-gruppierung.md
sysopsandClaude Sonnet 5 28565f089d docs(PROJ-69,PROJ-70): Deployment-Status auf Deployed setzen
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>
2026-07-07 01:26:37 +02:00

3.1 KiB

id, title, status, created
id title status created
PROJ-69 Admin-Dashboard Tab-Gruppierung (2-Ebenen-Navigation) Deployed 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.