From 4e6977ef9609432efd80ac67216a9f1d59cf9e44 Mon Sep 17 00:00:00 2001
From: ValueOn AG
Date: Mon, 13 Apr 2026 00:38:44 +0200
Subject: [PATCH] progress
---
TOPICS.md | 5 +-
b-reference/gateway/automation.md | 25 ++-
...26-04-customer-trustee-demo-enablement.md} | 0
...rustee-quick-actions-feature-dashboard.md} | 0
.../2026-04-investor-demo-tuesday.md | 145 ++++++++----------
.../2026-04-automation-central-admin.md | 18 +--
6 files changed, 99 insertions(+), 94 deletions(-)
rename c-work/1-plan/{2026-04-customer-demo-enablement.md => 2026-04-customer-trustee-demo-enablement.md} (100%)
rename c-work/{1-plan/2026-04-quick-actions-feature-dashboard.md => 2-build/2026-04-customer-trustee-quick-actions-feature-dashboard.md} (100%)
rename c-work/{1-plan => 2-build}/2026-04-investor-demo-tuesday.md (78%)
rename c-work/{1-plan => 4-done}/2026-04-automation-central-admin.md (85%)
diff --git a/TOPICS.md b/TOPICS.md
index 84ff188..93c99b9 100644
--- a/TOPICS.md
+++ b/TOPICS.md
@@ -1,5 +1,5 @@
-
+
# 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 |
diff --git a/b-reference/gateway/automation.md b/b-reference/gateway/automation.md
index bb53623..e7a116e 100644
--- a/b-reference/gateway/automation.md
+++ b/b-reference/gateway/automation.md
@@ -1,5 +1,5 @@
-
+
# 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`) |
diff --git a/c-work/1-plan/2026-04-customer-demo-enablement.md b/c-work/1-plan/2026-04-customer-trustee-demo-enablement.md
similarity index 100%
rename from c-work/1-plan/2026-04-customer-demo-enablement.md
rename to c-work/1-plan/2026-04-customer-trustee-demo-enablement.md
diff --git a/c-work/1-plan/2026-04-quick-actions-feature-dashboard.md b/c-work/2-build/2026-04-customer-trustee-quick-actions-feature-dashboard.md
similarity index 100%
rename from c-work/1-plan/2026-04-quick-actions-feature-dashboard.md
rename to c-work/2-build/2026-04-customer-trustee-quick-actions-feature-dashboard.md
diff --git a/c-work/1-plan/2026-04-investor-demo-tuesday.md b/c-work/2-build/2026-04-investor-demo-tuesday.md
similarity index 78%
rename from c-work/1-plan/2026-04-investor-demo-tuesday.md
rename to c-work/2-build/2026-04-investor-demo-tuesday.md
index 7c530e4..cca1795 100644
--- a/c-work/1-plan/2026-04-investor-demo-tuesday.md
+++ b/c-work/2-build/2026-04-investor-demo-tuesday.md
@@ -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 |
diff --git a/c-work/1-plan/2026-04-automation-central-admin.md b/c-work/4-done/2026-04-automation-central-admin.md
similarity index 85%
rename from c-work/1-plan/2026-04-automation-central-admin.md
rename to c-work/4-done/2026-04-automation-central-admin.md
index 2197819..9729b6a 100644
--- a/c-work/1-plan/2026-04-automation-central-admin.md
+++ b/c-work/4-done/2026-04-automation-central-admin.md
@@ -1,4 +1,4 @@
-
+
@@ -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)