# Automatisierung — Zentrale Administration aller Workflows ## Beschreibung und Kontext Die Seite "Automatisierung" in "Meine Sicht" zeigt aktuell nur ein Dashboard mit Workflow-Run-Metriken und einer Runs-Tabelle. Was fehlt, ist eine zentrale Verwaltung ALLER Workflows, auf die der User gemäss RBAC Zugriff hat — über alle Mandanten und Feature-Instanzen hinweg. **Business-Treiber:** Admins und Power-User brauchen eine Übersicht über alle Workflows ohne in jede einzelne graphicalEditor-Instanz navigieren zu müssen. Berechtigungen (View/Edit/Delete/Execute) sollen pro Workflow-Zeile sichtbar sein. **Abhängigkeiten:** - `routeWorkflowDashboard.py` — bestehender System-Dashboard-Endpunkt (nur Runs) - `GraphicalEditorWorkflowsPage.tsx` — Referenz-Implementierung für Instanz-Workflows - `FormGeneratorTable` — Backend-driven Table mit Paginierung - `Tabs`-Komponente — existiert bereits **Risiko bei Nicht-Umsetzung:** Admins müssen manuell durch jede Instanz navigieren, um Workflows zu finden/verwalten. Keine zentrale Kontrolle. ## Fokus und kritische Details - RBAC-Scoping muss konsistent mit bestehender `_scopedRunFilter`-Logik sein - Dashboard-Tabelle nutzt aktuell KEINE Backend-Paginierung (nur Client-seitig) — muss korrigiert werden - AutoWorkflow hat `mandateId` + `featureInstanceId` — Enrichment mit Labels nötig - Per-Workflow RBAC-Permissions (`canEdit`, `canDelete`, `canExecute`) müssen vom Backend geliefert werden - `t()` konsequent für alle Sprachtexte ## Ziel und Nicht-Ziele - Ziel: 2 Tabs auf der Automatisierung-Seite (Dashboard + Workflows), zentraler Workflow-Manager mit RBAC - Ziel: Dashboard-Tabelle auf saubere Backend-Paginierung via `hookData` - Explizit NICHT: Workflow-Editor in der zentralen Ansicht (Edit navigiert zur Instanz) - Explizit NICHT: Neue Workflows erstellen aus der zentralen Ansicht ## Betroffene Module - Gateway: `routeWorkflowDashboard.py` — Endpunkt `GET /api/system/workflow-runs/workflows` - Frontend: `AutomationsDashboardPage.tsx` — Tabs, Backend-Paginierung, WorkflowsTab - DB-Migration: nein - Andere Komponenten: keine ## Entscheidungen | Datum | Entscheidung | Begründung | |-------|-------------|------------| | 2026-04-12 | Neuer Endpunkt unter bestehendem Router `/api/system/workflow-runs` als `/api/system/workflow-runs/workflows` | Konsistenz mit bestehendem Prefix, kein neuer Router nötig | | 2026-04-12 | RBAC-Permissions pro Workflow-Row vom Backend | Frontend muss nicht selbst RBAC-Logik duplizieren | | 2026-04-12 | Bestehende `Tabs`-Komponente verwenden | Bereits vorhanden und getestet | ## Umsetzungs-Checkliste - [x] API-Endpunkt: `GET /api/system/workflow-runs/workflows` - [x] DB-Schema / Migration: nicht nötig (keine Änderung) - [x] Frontend: Tabs-Struktur in AutomationsDashboardPage - [x] Frontend: Dashboard-Tab mit Backend-Paginierung - [x] Frontend: WorkflowsTab mit zentraler Workflow-Verwaltung - [x] RBAC / Permissions: Scoping + per-row Permissions - [x] Neutralisierung betroffen? Nein - [x] Navigation / Routing: keine Änderung (Route `/automations` unverändert) - [x] Billing-Impact? Nein ## Akzeptanzkriterien | # | Kriterium (Given-When-Then) | Prio | |---|---------------------------|------| | 1 | Given User auf /automations, When Seite lädt, Then 2 Tabs sichtbar (Dashboard, Workflows) | must | | 2 | Given Dashboard-Tab aktiv, When Daten laden, Then Metriken + Runs-Tabelle mit Backend-Paginierung | must | | 3 | Given Workflows-Tab aktiv, When Daten laden, Then alle RBAC-berechtigten Workflows mit Mandant/Instanz-Spalten | must | | 4 | Given Workflow mit Edit-Recht, When Zeile angezeigt, Then Edit/Delete/Rename/Execute-Aktionen sichtbar | must | | 5 | Given Workflow ohne Edit-Recht, When Zeile angezeigt, Then nur View-Icon, keine Mutationsaktionen | must | | 6 | Given Filter "Aktiv" gewählt, When Tabelle aktualisiert, Then nur aktive Workflows | should | ## Links - PR: ... - Issue: ... ## Abschluss - [x] b-reference/ aktualisiert — [`b-reference/gateway/automation.md`](../../b-reference/gateway/automation.md) (Abschnitt System-Automatisierung) - [x] TOPICS.md — Verweis unter „Aktive Arbeiten“ ergänzt - [ ] Dieses Dokument → `z-archive/` verschieben (nach Abnahme / wenn kein offenes Follow-up)