feat(approvals): Freigaben-UI — Review-Queue mit Approve/Reject (UI-Modul 1/16) #369

Closed
opened 2026-09-08 21:32:26 +00:00 by Leopoldadmin · 0 comments
Owner

Modul 1/16: Approvals-UI (Frontend-Backend-Gap-Backlog)

Kontext: Frontend-Backend-Gegenüberstellung (2026-09-01): 16 Backend-Module ohne UI. User-Entscheidung: Module einzeln mit UI ausstatten. Priorisierung nach Business-Nutzen.

Umsetzung

Backend-Fix:

  • Phantom-Permission-Bug behoben: approvals:read/write/approve fehlten in CORE_PERMISSIONS — Rollen konnten die Permission nie zugewiesen bekommen (gleiche Fehlerklasse wie dashboard:read in M2)

Frontend (komplett neue Oberfläche):

  • api/approvals.ts: TanStack-Query-Hooks (list/detail/approve/reject/expire/create)
  • pages/Approvals.tsx: Review-Queue mit Status-Tabs (Offen/Alle/Genehmigt/Abgelehnt/Abgelaufen), Karten mit Aktion/Entity/Requester-Typ/Metadata/Zeitstempeln, Approve/Reject mit optionalem Kommentar-Modal, Permission-Gating (approvals:approve entscheidet Button-Sichtbarkeit), Empty-/Error-States, ARIA
  • Route /approvals mit PermissionRoute approvals:read, Sidebar-Eintrag (order 91), i18n approvals.* + nav.approvals (de/en)

Verifikation (live gemessen 2026-09-01)

  • Vitest 10/10: Rendering, Tabs, Approve/Reject-Flow mit Kommentar, Empty-Comment-Flow, Permission-Gating (mit/ohne approvals:approve), Resolved-Zustände ohne Buttons, Metadata-Anzeige
  • RBAC-Regression 102/102 (Permission-Registry intakt)
  • tsc clean, Production-Build OK
  • Produktion live (Full-Deploy): /api/v1/approvals 401→200-mit-Session, /approvals liefert SPA (200), Prod-Bundle enthält Approvals-UI, Health healthy
## Modul 1/16: Approvals-UI (Frontend-Backend-Gap-Backlog) **Kontext:** Frontend-Backend-Gegenüberstellung (2026-09-01): 16 Backend-Module ohne UI. User-Entscheidung: Module einzeln mit UI ausstatten. Priorisierung nach Business-Nutzen. ### Umsetzung **Backend-Fix:** - Phantom-Permission-Bug behoben: approvals:read/write/approve fehlten in CORE_PERMISSIONS — Rollen konnten die Permission nie zugewiesen bekommen (gleiche Fehlerklasse wie dashboard:read in M2) **Frontend (komplett neue Oberfläche):** - api/approvals.ts: TanStack-Query-Hooks (list/detail/approve/reject/expire/create) - pages/Approvals.tsx: Review-Queue mit Status-Tabs (Offen/Alle/Genehmigt/Abgelehnt/Abgelaufen), Karten mit Aktion/Entity/Requester-Typ/Metadata/Zeitstempeln, Approve/Reject mit optionalem Kommentar-Modal, Permission-Gating (approvals:approve entscheidet Button-Sichtbarkeit), Empty-/Error-States, ARIA - Route /approvals mit PermissionRoute approvals:read, Sidebar-Eintrag (order 91), i18n approvals.* + nav.approvals (de/en) ### Verifikation (live gemessen 2026-09-01) - Vitest **10/10**: Rendering, Tabs, Approve/Reject-Flow mit Kommentar, Empty-Comment-Flow, Permission-Gating (mit/ohne approvals:approve), Resolved-Zustände ohne Buttons, Metadata-Anzeige - RBAC-Regression **102/102** (Permission-Registry intakt) - tsc clean, Production-Build OK - **Produktion live (Full-Deploy)**: /api/v1/approvals 401→200-mit-Session, /approvals liefert SPA (200), Prod-Bundle enthält Approvals-UI, Health healthy
Leopoldadmin added the task label 2026-09-08 21:33:03 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Leopoldadmin/leocrm#369