This commit is contained in:
ValueOn AG 2026-04-13 00:38:44 +02:00
parent 5de8aa0558
commit 4e6977ef96
6 changed files with 99 additions and 94 deletions

View file

@ -1,5 +1,5 @@
<!-- status: canonical -->
<!-- lastReviewed: 2026-04-06 -->
<!-- lastReviewed: 2026-04-12 -->
# Themen-Index für AI-Kontext
@ -21,7 +21,7 @@ Lade immer zuerst diese Datei. Dann gezielt die passende(n) Referenz-Datei(en).
| Gateway-Architektur | b-reference/gateway/architecture.md | Backend-Module, Services, Interfaces |
| AI Agent & Tools | b-reference/gateway/ai-agent.md | Agent-Verhalten, Tool-Registrierung, RAG |
| Workflow-Engine | b-reference/gateway/workflow.md | Methoden, Aktionen, WorkflowManager |
| Automation | b-reference/gateway/automation.md | Automation v1+v2, Templates, Flow-Editor |
| Automation | b-reference/gateway/automation.md | Graphical Editor, Scheduler, System-Automatisierung (`/automations`, `/api/system/workflow-runs/*`) |
| Billing & Subscriptions | b-reference/gateway/billing.md | Abrechnung, Prepaid, State Machine |
| Frontend Nyla | b-reference/frontend-nyla/architecture.md | UI-Seiten, Komponenten, Hooks, Routing |
| Private LLM | b-reference/private-llm/architecture.md | Internes LLM, Neutralisierung |
@ -42,6 +42,7 @@ Lade immer zuerst diese Datei. Dann gezielt die passende(n) Referenz-Datei(en).
| Thema | Datei | Wann laden |
|-------|-------|------------|
| Automation Unification | c-work/1-plan/2026-04-automation-unification.md | Refactoring v1/v2/Workspace |
| Zentrale Workflow-Admin (Meine Sicht) | c-work/1-plan/2026-04-automation-central-admin.md | `/automations` Tabs Dashboard + Workflows, `GET .../workflow-runs/workflows` |
| Web Image Search | c-work/1-plan/2026-03-web-image-search.md | WEB_SEARCH_MEDIA Feature |
| UI i18n / Sprachsets (done) | c-work/3-validate/2026-04-ui-i18n-dynamic-language-sets.md | Mehrsprachigkeit, `t()`, Sprachset-API, Admin-UI, AI-Übersetzung |
| Gateway i18n Unified | c-work/3-validate/2026-04 gateway-i18n-unified.md | `@i18nModel`, `t()` Backend, Boot-Sync, TextMultilingual dynamisch |

View file

@ -1,5 +1,5 @@
<!-- status: canonical -->
<!-- lastReviewed: 2026-04-07 -->
<!-- lastReviewed: 2026-04-12 -->
<!-- verifiedAgainst: gateway (codebase audit 2026-04-07, post Automation Unification) -->
# Automation (Graphical Editor)
@ -182,6 +182,28 @@ Rollen werden beim Feature-Start via `_syncTemplateRolesToDb()` synchronisiert (
---
## System-Automatisierung (Meine Sicht)
Mandatsuebergreifende Uebersicht im Frontend: Route **`/automations`** (`frontend_nyla` → `AutomationsDashboardPage`), Eintrag unter **Meine Sicht** in der Navigation.
| Tab | Inhalt |
|-----|--------|
| **Dashboard** | Metriken (`GET /api/system/workflow-runs/metrics`), Runs-Tabelle mit Backend-Paginierung (`GET /api/system/workflow-runs`) |
| **Workflows** | Liste aller nicht-Template-Workflows aus der Greenfield-DB, gefiltert nach Mandatszugehoerigkeit; Enrichment mit Mandats- und Instanz-Label; pro Zeile **`canEdit` / `canDelete` / `canExecute`** (Sysadmin: alles; Mandats-Admin fuer betroffenes Mandat: alles; sonst keine Mutationsaktionen im UI) |
**Gateway:** `routes/routeWorkflowDashboard.py`, Router-Prefix **`/api/system/workflow-runs`**.
| Methode | Pfad | Beschreibung |
|---------|------|--------------|
| GET | `/api/system/workflow-runs` | Runs (offset/limit, RBAC) |
| GET | `/api/system/workflow-runs/metrics` | Aggregierte Kennzahlen |
| GET | `/api/system/workflow-runs/{runId}/steps` | Step-Logs fuer einen Run |
| GET | `/api/system/workflow-runs/workflows` | Workflows mandatsuebergreifend (Query: `active`, `mandateId`, `pagination` als JSON) |
Instanzspezifische Verwaltung unveraendert unter **`/api/workflows/{instanceId}/...`** (`routeFeatureGraphicalEditor.py`).
---
## Schluessel-Dateien
| Bereich | Pfade (`gateway/modules/`) |
@ -192,6 +214,7 @@ Rollen werden beim Feature-Start via `_syncTemplateRolesToDb()` synchronisiert (
| Datenmodell | `features/graphicalEditor/datamodelFeatureGraphicalEditor.py` |
| Node-Definitionen | `features/graphicalEditor/nodeDefinitions/` |
| Execution Engine | `workflows/automation2/executionEngine.py` |
| System-Runs / zentrale Workflow-Liste | `routes/routeWorkflowDashboard.py` |
| Scheduler | `workflows/scheduler/mainScheduler.py` |
| Toolbox Registry | `serviceCenter/services/serviceAgent/toolboxRegistry.py` |
| Action Library | `workflows/methods/`, `workflows/processing/` (`ActionExecutor`, `methodDiscovery`) |

View file

@ -45,7 +45,7 @@
| UC1 | **Treuhand: Automatisierte Spesenverarbeitung** | 6 Min | Beleg → OCR → Kontierung → Export in Sekunden | Trustee-Feature, Graph-Editor Workflow, SharePoint-Nodes |
| UC2 | **Immobilien: Automatisierte Machbarkeitsstudie** | 4 Min | Grundstück eingeben → 6 Min statt 4 Std. Recherche | RealEstate-Feature, Agent + webSearch + readUrl |
| UC3 | **Enterprise: AI Knowledge Chatbot** | 4 Min | Frage stellen → sofortige Antwort mit Quellenangabe | Chatbot-Feature, RAG, Neutralisierung |
| UC4 | **Sprach-Deployment: Neue Sprache in 5 Minuten** | 3 Min | Sprache anlegen → AI übersetzt → UI sofort mehrsprachig | i18n-System, AI-Batch-Translation, Admin-UI |
| UC4 | **Sprach-Deployment: Neue Sprache in 5 Minuten** | 3 Min | Sprache anlegen → AI uebersetzt → UI sofort mehrsprachig | i18n-System, AI-Batch-Translation, Admin-UI |
| UC5 | **Integrationen: Architektur-Visualisierung** | 1 Min | Komplette Integrationslandschaft auf einen Blick | Neue Systemseite, Custom React-Komponente |
| — | **Neutralisierung (Querschnitt)** | 3 Min | PII live entfernen + Re-Personalisierung | Neutralisierung-Feature, Private LLM |
@ -78,10 +78,11 @@
## Betroffene Module
- **Gateway:** `modules/bootstrap/bootstrapDemo.py` (neu), `modules/system/mainSystem.py` (Nav-Eintrag), `features/trustee/`, `features/realestate/`, `features/chatbot/`, `features/neutralization/`, `features/workspace/`, `features/graphicalEditor/`
- **Frontend:** `pages/system/IntegrationsOverviewPage.tsx` (neu), `config/pageRegistry.tsx` (Eintrag)
- **Gateway:** `modules/demoConfigs/` (neu — Demo-Config-System), `modules/routes/routeAdminDemoConfig.py` (neu), `modules/system/mainSystem.py` (Nav-Eintrag), `features/trustee/`, `features/chatbot/`, `features/neutralization/`, `features/workspace/`, `features/graphicalEditor/`
- **Frontend:** `pages/admin/AdminDemoConfigPage.tsx` (neu), `IntegrationsOverviewPage.tsx` (erledigt), `config/pageRegistry.tsx` (Eintrag), `App.tsx` (Route)
- **DB-Migration:** nein (nur Daten-Seeding)
- **Andere Komponenten:** Testdaten (PDF, Excel, CSV), Demo-Skript (Markdown), Test-Suite (pytest)
- **Config:** `gateway/config.ini` (Demo_RMA_* Credentials)
- **Andere Komponenten:** Testdaten (PDF, Excel, CSV) in `gateway/demoData/`, Demo-Skript (Markdown), Test-Suite (pytest)
---
@ -111,37 +112,39 @@
- [ ] **Demo-Storyline abstimmen:** Reihenfolge, Übergänge, wer was sagt
- [ ] **Fallback-Strategie:** Was wenn ein UC live hängt? (→ vorbereitete Screenshots/Video)
### Phase 1: Bootstrap-Modul `demo` (Mo Vormittag)
### Phase 0.5: Demo-Config System (erledigt ✅)
- [ ] **`gateway/modules/bootstrap/bootstrapDemo.py`** erstellen
- Funktion `bootstrapDemoEnvironment(db)` — idempotent, aufgerufen via CLI-Flag oder API
- Erstellt Demo-Mandant "PowerON Demo" mit allen nötigen Feature-Instanzen
- Seeded Demo-User: `demo@poweron.ch` (Admin), `treuhänder@demo.ch` (Rolle: Mandant)
- Aktiviert Features: workspace, trustee, realestate, chatbot, neutralization, graphicalEditor
- Lädt Demo-Testdaten (PDFs, Excel) in den Workspace
- Konfiguriert Neutralisierung (enabled=true, Demo-Mappings)
- Erstellt Graph-Editor Demo-Workflows aus System-Templates
- Setzt Demo-Billing (Trial-Modus mit genügend Credits)
- [x] **`gateway/modules/demoConfigs/`** — Modulares Demo-Config-System
- `_baseDemoConfig.py` — Abstrakte Basisklasse mit `load()` / `remove()`
- `__init__.py` — Auto-Discovery aller Config-Files im Ordner
- `investorDemo2026.py` — Investor-Demo Konfiguration:
- Mandant **HappyLife AG** (`happylife`): workspace, trustee(RMA), graphicalEditor, chatbot, neutralization
- Mandant **Alpina Treuhand AG** (`alpina-treuhand`): workspace, trustee(RMA), graphicalEditor, neutralization
- User **Patrick Helvetia** (`p.motsch@poweron.swiss`): SysAdmin, Mitglied beider Mandanten
- RMA-Credentials aus `config.ini` (Demo_RMA_*)
- Billing, Neutralization-Config automatisch
- [x] **Admin UI** unter `/admin/demo-config` (SysAdmin-only)
- Listet alle verfuegbaren Demo-Configs
- Pro Config: "Load" + "Remove" Buttons
- API: `GET/POST /api/admin/demo-config`
- [x] **`gateway/demoData/`** — Ordnerstruktur fuer Testdaten (Files manuell bereitstellen)
- `invoices/`, `expenses/`, `knowledge-base/`
- [ ] **CLI-Einstiegspunkt** in `app.py` oder separates Script `scripts/bootstrapDemo.py`
```
python -m scripts.bootstrapDemo --env int --reset
```
- `--reset` löscht bestehenden Demo-Mandant und baut neu auf
- `--env` wählt Zielumgebung (local, int)
### Phase 1: Demo-Daten vorbereiten (Mo Vormittag)
- [ ] **Demo-Testdaten vorbereiten** (Ordner `gateway/demoData/`)
- `invoices/` — 3 Muster-Rechnungen (PDF): Handwerker, Büromaterial, Versicherung
- [ ] **RMA-Credentials** in `gateway/config.ini` eintragen (Demo_RMA_ApiBaseUrl, Demo_RMA_ClientName, Demo_RMA_ApiKey)
- [ ] **Demo-Config laden** via Admin UI → `/admin/demo-config` → "Load"
- [ ] **Demo-Testdaten** in `gateway/demoData/` bereitstellen:
- `invoices/` — 3 Muster-Rechnungen (PDF): Handwerker, Bueromaterial, Versicherung
- `expenses/` — 2 Spesenbelege (PDF): Reisekosten, Bewirtung
- `tenant-dossier.pdf` — Fiktives Mieterdossier (Name, Adresse, Mietzins) für Neutralisierung
- `knowledge-base/` — 3-4 Firmen-Dokumente (Handbuch, FAQ, Prozessbeschreibung) für RAG
- `budget-2026.xlsx` — Budget-Soll-Werte für Trustee-Vergleich
- `tenant-dossier.pdf` — Fiktives Mieterdossier fuer Neutralisierung
- `knowledge-base/` — 3-4 Firmen-Dokumente (Handbuch, FAQ, Prozessbeschreibung) fuer RAG
### Phase 2: Demo-Konfiguration pro Use Case (Mo Nachmittag)
#### UC1: Treuhand — Spesenverarbeitung
- [ ] **Trustee-Instanz konfigurieren** (Connector: Bexio-Sandbox oder Mock)
- [ ] **Trustee-Instanz konfigurieren** (Connector: RMA — Credentials via Demo-Config Bootstrap)
- [ ] **Graph-Editor Workflow erstellen/aktivieren:**
Trigger (manual) → SharePoint listFiles → Loop → downloadFile → extractFromFiles → processDocuments → syncToAccounting
(System-Template "Treuhand: PDF-Klassifizierung & Trustee-Import" als Basis nutzen)
@ -168,47 +171,23 @@
- [ ] **Neutralisierung aktivieren** und in einer Frage live demonstrieren
- [ ] **Erwartetes Ergebnis dokumentieren:** Frage → Antwort mit Quellenangabe + Audit-Trail
#### UC5: Integrationen — Architektur-Visualisierung (neue Seite)
#### UC5: Integrationen — Architektur-Visualisierung (erledigt ✅)
- [ ] **Neue Systemseite `page.system.integrations`** erstellen
- Route: `/integrations` (unter "Meine Sicht" / System-Block)
- Navigation-Eintrag in `mainSystem.py``NAVIGATION_SECTIONS`
- Page-Registry-Eintrag in `pageRegistry.tsx` → Icon: `FaProjectDiagram` oder `FaCubes`
- [ ] **React-Komponente `IntegrationsOverviewPage.tsx`** bauen
- **3-Schichten-Layout (vertikal, von unten nach oben):**
- **Schicht 1 (unten): Datenquellen**
- Box pro OAuth-Connection (Microsoft-Icon, Google-Icon) → persönliche Daten
- Box pro System-Connector (Abacus-Instanz, Bexio-Instanz, RMA, SharePoint, etc.)
- Daten kommen von `GET /api/connections` + Feature-Instanz-Configs
- **Schicht 2 (Mitte): PORTA (PowerON)**
- Zentrale Box mit PowerON-Logo
- Darin: Sub-Boxes für jeden aktiven Workflow (System-Templates + Custom-Workflows)
- Daten kommen von `GET /api/workflows` (Graph-Editor Workflows)
- **Schicht 3 (oben): Services / Mandanten**
- Box pro Mandant mit den aktivierten Features/Services darin
- Daten kommen von Navigation-API (`GET /api/navigation` → dynamic block)
- **Verbindungslinien** zwischen den Schichten (CSS/SVG, kein Canvas)
- **Rendering-Technologie:** Custom React mit CSS Grid + `framer-motion` Animationen
- Kein Mermaid (zu statisch, schwer zu stylen)
- Kein xyflow (Overkill, neue Dependency)
- Bestehende Libs nutzen: `react-icons` (Connector-Icons), `framer-motion` (Hover/Enter-Animationen)
- [ ] **API-Endpoint `GET /api/system/integrations-overview`** (optional)
- Aggregiert: Connections, Feature-Instanzen, Workflows, Mandanten
- Oder: Frontend aggregiert aus bestehenden APIs (einfacher, weniger Backend-Aufwand)
- [ ] **Demo-Daten sicherstellen:** Mindestens 2 Connections (Microsoft, Google), 2 System-Connectors (Abacus, Bexio), 3 Workflows, 2 Mandanten mit Features
- [x] **Systemseite `page.system.integrations`** implementiert
- Route: `/integrations`, Navigation in `mainSystem.py`, Icon `FaProjectDiagram`
- [x] **`IntegrationsOverviewPage.tsx`** mit 3-Schichten-Layout (Daten, PORTA, Organisation)
- [x] **API `GET /api/system/integrations-overview`** aggregiert alle Daten
- [ ] **Demo-Daten sicherstellen:** Mindestens 2 Connections, 2 System-Connectors, 3 Workflows, 2 Mandanten
#### UC4: Sprach-Deployment — Neue Sprache in 5 Minuten
- [ ] **Sicherstellen:** i18n Admin-UI erreichbar unter `/admin/languages`
- [ ] **Bestehende Sprachen prüfen:** DE, EN, FR vorhanden und vollständig
- [ ] **Demo-Sprache vorbereiten:** Italienisch (it) NICHT vorinstalliert lassen — wird live angelegt
- [ ] **AI-Übersetzungs-Pipeline testen:** `POST /api/i18n/sets` mit `code: "it"` → async Translation → Ergebnis in <5 Min
- [ ] **Sprachwechsel im UI testen:** Nach Anlage → Sprachselektor zeigt "it" → UI komplett auf Italienisch
- [ ] **Bestehende Sprachen pruefen:** DE, EN, FR vorhanden und vollstaendig
- [ ] **Demo-Sprache vorbereiten:** Spanisch (es) NICHT vorinstalliert lassen — wird live angelegt
- [ ] **AI-Uebersetzungs-Pipeline testen:** `POST /api/i18n/sets` mit `code: "es"` → async Translation → Ergebnis in <5 Min
- [ ] **Sprachwechsel im UI testen:** Nach Anlage → Sprachselektor zeigt "es" → UI komplett auf Spanisch
- [ ] **Fallback:** Falls AI-Translation zu lang dauert → Sprache vorher anlegen, live nur den Wechsel zeigen
- [ ] **Billing sicherstellen:** Demo-Mandant hat genügend Credits für AI-Batch-Translation
- [ ] **Billing sicherstellen:** Demo-Mandant hat genuegend Credits fuer AI-Batch-Translation
#### Querschnitt: Neutralisierung
@ -250,9 +229,11 @@
### Szene 0: Setup (vor der Demo, nicht sichtbar)
- Browser auf: PORTA Dashboard (Demo-Mandant eingeloggt als `demo@poweron.ch`)
- Demo-Config geladen via Admin UI (`/admin/demo-config` → "Investor Demo April 2026" → Load)
- Browser auf: PORTA Dashboard (eingeloggt als `p.motsch@poweron.swiss` / `patrick.helvetia`)
- Mandanten: HappyLife AG + Alpina Treuhand AG
- Tabs vorbereitet: Dashboard, Workspace, Graph-Editor, Trustee, Chatbot
- SharePoint-Demo-Ordner mit Belegen befüllt
- SharePoint-Demo-Ordner mit Belegen befuellt
- Neutralisierung aktiviert
- Knowledge-Base indexiert
@ -340,19 +321,19 @@
### Szene 6: UC4 — Sprach-Deployment live (17:00 20:00)
**Was zeigen:** Neue Sprache in Minuten — AI übersetzt das komplette UI automatisch
**Was zeigen:** Neue Sprache in Minuten — AI uebersetzt das komplette UI automatisch
**Talking Points:**
- "Europäische Kunden brauchen Mehrsprachigkeit. Deutsch, Französisch, Englisch — und morgen vielleicht Italienisch oder Portugiesisch."
- "Bei PowerON legen Sie eine neue Sprache an, die AI übersetzt alle UI-Texte, und in 5 Minuten ist das System komplett in der neuen Sprache verfügbar. Ohne Code-Änderung, ohne Redeploy."
- "Das ist kein Google Translate. Die AI versteht den Kontext — 'Offen' als Status vs. 'Offen' als Zustand wird korrekt übersetzt."
- "European customers need multi-language support. German, French, English — and tomorrow maybe Spanish or Portuguese."
- "With PowerON you create a new language, AI translates all UI texts, and in 5 minutes the system is fully available in the new language. No code change, no redeploy."
- "This is not Google Translate. The AI understands context — 'Open' as status vs. 'Open' as action is translated correctly."
**Klick-Sequenz:**
1. Administration → System → UI-Sprachen öffnen → bestehende Sprachen zeigen (DE, EN, FR)
2. "Neue Sprache anlegen" klicken → z.B. **Italienisch** (it) wählen
3. AI-Übersetzung startet → Fortschritt zeigen (Batch-Pipeline)
4. Sprache wechseln → komplettes UI ist sofort auf Italienisch
5. "Das hat gerade 5 Minuten gedauert. Für eine komplette Enterprise-Plattform. Kein Entwickler nötig."
6. Optional: "Update All" zeigen — scannt die Codebase, synchronisiert neue Keys, übersetzt automatisch
1. Administration → System → UI-Sprachen oeffnen → bestehende Sprachen zeigen (DE, EN, FR)
2. "Neue Sprache anlegen" klicken → **Spanisch** (es) waehlen
3. AI-Uebersetzung startet → Fortschritt zeigen (Batch-Pipeline)
4. Sprache wechseln → komplettes UI ist sofort auf Spanisch
5. "That just took 5 minutes. For an entire enterprise platform. No developer needed."
6. Optional: "Update All" zeigen — scannt die Codebase, synchronisiert neue Keys, uebersetzt automatisch
**Transition:** "Das war PowerON PORTA — zurück zu den Zahlen."
@ -444,17 +425,17 @@ Then Antwort zeigt an, dass keine relevante Quelle gefunden wurde (kein Halluz
```
Given Demo-Mandant mit i18n Admin-Zugriff und bestehenden Sprachen DE, EN, FR
AND Sprache "it" (Italienisch) existiert NICHT
When POST /api/i18n/sets mit code "it" ausgeführt wird
AND Sprache "es" (Spanisch) existiert NICHT
When POST /api/i18n/sets mit code "es" ausgefuehrt wird
Then AI-Batch-Translation startet
AND nach Abschluss enthält das it-Set alle Keys aus dem de-Master-Set
AND Übersetzungen sind kontextuell korrekt (Stichprobe: "Speichern" → "Salva", "Abbrechen" → "Annulla")
AND nach Abschluss enthaelt das es-Set alle Keys aus dem de-Master-Set
AND Uebersetzungen sind kontextuell korrekt (Stichprobe: "Speichern" -> "Guardar", "Abbrechen" -> "Cancelar")
AND Gesamtdauer < 5 Minuten
Given Sprache "it" vollständig übersetzt
When User die Sprache im UI auf "it" wechselt
Then alle UI-Elemente zeigen italienische Texte
AND kein Fallback auf deutsche Keys sichtbar (ausser bei fehlenden Übersetzungen)
Given Sprache "es" vollstaendig uebersetzt
When User die Sprache im UI auf "es" wechselt
Then alle UI-Elemente zeigen spanische Texte
AND kein Fallback auf deutsche Keys sichtbar (ausser bei fehlenden Uebersetzungen)
```
#### T-NEU: Neutralisierung
@ -502,7 +483,7 @@ pytest tests/demo/ -v -m ""
| 3 | Given Workspace mit Agent, When Machbarkeitsstudie-Prompt, Then strukturierte Analyse mit Quellen in <2 Min | must |
| 4 | Given Chatbot mit Knowledge-Base, When Frage gestellt, Then Antwort mit Quellenangabe in <15s | must |
| 5 | Given Mieterdossier-PDF, When Neutralisierung aktiv + AI-Analyse, Then PII nie an LLM gesendet + Re-Personalisierung korrekt | must |
| 6 | Given i18n Admin-UI, When neue Sprache "it" angelegt wird, Then AI übersetzt alle Keys in <5 Min und UI zeigt Italienisch nach Sprachwechsel | must |
| 6 | Given i18n Admin-UI, When neue Sprache "es" angelegt wird, Then AI uebersetzt alle Keys in <5 Min und UI zeigt Spanisch nach Sprachwechsel | must |
| 7 | Given komplettes Drehbuch, When Demo komplett durchgespielt, Then Timing ≤ 20 Min mit Puffer | must |
| 8 | Given pytest-Suite, When `pytest tests/demo/` ausgeführt, Then alle Tests grün (ohne expensive: Bootstrap + Struktur; mit expensive: Live AI) | should |

View file

@ -1,4 +1,4 @@
<!-- status: build -->
<!-- status: validate -->
<!-- started: 2026-04-12 -->
<!-- component: gateway | frontend-nyla -->
@ -35,7 +35,7 @@ Die Seite "Automatisierung" in "Meine Sicht" zeigt aktuell nur ein Dashboard mit
## Betroffene Module
- Gateway: `routeWorkflowDashboard.py` neuer Endpunkt `GET /api/system/workflows`
- Gateway: `routeWorkflowDashboard.py` — Endpunkt `GET /api/system/workflow-runs/workflows`
- Frontend: `AutomationsDashboardPage.tsx` — Tabs, Backend-Paginierung, WorkflowsTab
- DB-Migration: nein
- Andere Komponenten: keine
@ -51,14 +51,14 @@ Die Seite "Automatisierung" in "Meine Sicht" zeigt aktuell nur ein Dashboard mit
## Umsetzungs-Checkliste
- [x] API-Endpunkt: `GET /api/system/workflow-runs/workflows`
- [ ] DB-Schema / Migration: nicht nötig
- [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
- [ ] Neutralisierung betroffen? Nein
- [ ] Navigation / Routing: keine Änderung (bestehende Route `/automations`)
- [ ] Billing-Impact? Nein
- [x] Neutralisierung betroffen? Nein
- [x] Navigation / Routing: keine Änderung (Route `/automations` unverändert)
- [x] Billing-Impact? Nein
## Akzeptanzkriterien
@ -78,6 +78,6 @@ Die Seite "Automatisierung" in "Meine Sicht" zeigt aktuell nur ein Dashboard mit
## Abschluss
- [ ] b-reference/ aktualisiert (welche Seite?)
- [ ] TOPICS.md aktualisiert (falls neues Thema)
- [ ] Dieses Dokument → z-archive/ verschoben
- [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)