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>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
ba0c519b00
commit
28565f089d
+2
-2
@@ -84,8 +84,8 @@
|
|||||||
| PROJ-66 | Backup-Strategie für Store, Keyfile, PostgreSQL (Produktiv + Teilproduktiv) | Deployed | [PROJ-66](PROJ-66-backup-strategie.md) | 2026-07-04 |
|
| PROJ-66 | Backup-Strategie für Store, Keyfile, PostgreSQL (Produktiv + Teilproduktiv) | Deployed | [PROJ-66](PROJ-66-backup-strategie.md) | 2026-07-04 |
|
||||||
| PROJ-67 | Manticore Search Upgrade 25.0.0 → 27.1.5 + Auto-Upgrade-Pfad | Deployed | [PROJ-67](PROJ-67-manticore-upgrade-25-zu-27.md) | 2026-07-05 |
|
| PROJ-67 | Manticore Search Upgrade 25.0.0 → 27.1.5 + Auto-Upgrade-Pfad | Deployed | [PROJ-67](PROJ-67-manticore-upgrade-25-zu-27.md) | 2026-07-05 |
|
||||||
| PROJ-68 | sudo-Provisionierung für Admin-Dienststeuerung fehlte komplett | Deployed | [PROJ-68](PROJ-68-sudo-provisionierung-dienststeuerung.md) | 2026-07-05 |
|
| PROJ-68 | sudo-Provisionierung für Admin-Dienststeuerung fehlte komplett | Deployed | [PROJ-68](PROJ-68-sudo-provisionierung-dienststeuerung.md) | 2026-07-05 |
|
||||||
| PROJ-69 | Admin-Dashboard Tab-Gruppierung (2-Ebenen-Navigation) | Planned | [PROJ-69](PROJ-69-admin-tabs-gruppierung.md) | 2026-07-06 |
|
| PROJ-69 | Admin-Dashboard Tab-Gruppierung (2-Ebenen-Navigation) | Deployed | [PROJ-69](PROJ-69-admin-tabs-gruppierung.md) | 2026-07-06 |
|
||||||
| PROJ-70 | User-Self-Service IMAP-Rückholung (Archiv-Mail zurück ins Postfach) | In Review | [PROJ-70](PROJ-70-imap-rueckholung-self-service.md) | 2026-07-07 |
|
| PROJ-70 | User-Self-Service IMAP-Rückholung (Archiv-Mail zurück ins Postfach) | Deployed | [PROJ-70](PROJ-70-imap-rueckholung-self-service.md) | 2026-07-07 |
|
||||||
|
|
||||||
<!-- Add features above this line -->
|
<!-- Add features above this line -->
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,74 @@
|
|||||||
|
---
|
||||||
|
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.
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
id: PROJ-70
|
id: PROJ-70
|
||||||
title: User-Self-Service IMAP-Rückholung (Archiv-Mail zurück ins Postfach)
|
title: User-Self-Service IMAP-Rückholung (Archiv-Mail zurück ins Postfach)
|
||||||
status: Planned
|
status: Deployed
|
||||||
created: 2026-07-07
|
created: 2026-07-07
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -132,11 +132,24 @@ Mail- und IMAP-Handler dupliziert):
|
|||||||
`fetch`, um das `error`-JSON-Feld als `Error.message` durchzureichen).
|
`fetch`, um das `error`-JSON-Feld als `Error.message` durchzureichen).
|
||||||
- `npx tsc --noEmit -p .` lief sauber durch (Exit 0).
|
- `npx tsc --noEmit -p .` lief sauber durch (Exit 0).
|
||||||
|
|
||||||
**Noch offen:** QA gegen Acceptance Criteria (insb. Tenant-Isolation-Test,
|
|
||||||
Sichtbarkeits-Gating), Kompilierung/Deploy auf 132.
|
|
||||||
|
|
||||||
## QA Test Results
|
## QA Test Results
|
||||||
_wird nach Umsetzung ergänzt._
|
|
||||||
|
Nur Smoke-Tests, kein vollständiger E2E-Test:
|
||||||
|
- 132: Backend/Frontend kompilieren, Dienste laufen, `imap_restore_enabled`-
|
||||||
|
Spalte vorhanden, `PATCH /api/auth/imap-restore` und
|
||||||
|
`POST /api/mails/{id}/restore` liefern 401 (Auth erforderlich) statt 404 —
|
||||||
|
Endpoints korrekt registriert.
|
||||||
|
- 131: identische Smoke-Test-Ergebnisse.
|
||||||
|
- **Nicht getestet** (bewusst, keine Produktiv-/Test-Zugangsdaten angefasst):
|
||||||
|
echter Login-Flow, Passwort-Bestätigungs-Dialog, Restore-Button-
|
||||||
|
Sichtbarkeit, 422-Fehlermeldung bei Postfach-Ablehnung,
|
||||||
|
Tenant-Isolation-Test (User A → Postfach von User B). Empfehlung: mit
|
||||||
|
dediziertem Testuser nachholen (QA Engineer oder integration-tester-Skill).
|
||||||
|
|
||||||
## Deployment
|
## Deployment
|
||||||
_wird nach Abschluss ergänzt._
|
|
||||||
|
- 2026-07-07, 192.168.1.132 (Test): 2x `update.sh` (Self-Update-Timing,
|
||||||
|
siehe PROJ-67/68), Migration lief, Dienste `active`, Health-Check grün.
|
||||||
|
- 2026-07-07, 192.168.1.131 (Produktiv): identisch, 2x `update.sh`, Migration
|
||||||
|
lief, Dienste `active`, Health-Check grün. Kein Login mit
|
||||||
|
Produktiv-Zugangsdaten durchgeführt.
|
||||||
|
|||||||
Reference in New Issue
Block a user