progress
This commit is contained in:
parent
5de8aa0558
commit
4e6977ef96
6 changed files with 99 additions and 94 deletions
|
|
@ -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 |
|
||||
|
|
|
|||
|
|
@ -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`) |
|
||||
|
|
|
|||
|
|
@ -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 |
|
||||
|
||||
|
|
@ -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)
|
||||
Loading…
Reference in a new issue