wiki/c-work/1-plan/2026-04-investor-demo-tuesday.md
2026-04-12 18:32:37 +02:00

542 lines
27 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!-- status: plan -->
<!-- started: 2026-04-12 -->
<!-- component: gateway | frontend-nyla | platform -->
# Investor-Demo Dienstag — Live Product Demo (20 Min)
## Beschreibung und Kontext
**Was:** 20-Minuten Live-Demo von PowerON PORTA für Investoren und Treuhänder am Dienstag.
**Wer präsentiert:** Kollegen präsentieren Keynotes (Use Cases), Patrick (CTO/CEO) zeigt die Plattform live.
**Publikum:** Investoren (ROI, Skalierbarkeit, Marktdifferenzierung) + Treuhänder (Praxisnutzen, Datenschutz, Zeitersparnis).
**Business-Treiber:** Die Demo muss in 20 Min zeigen, dass PowerON kein Konzept ist, sondern ein funktionierendes Produkt mit echtem Kundennutzen. Investoren wollen Traktion sehen, Treuhänder wollen sich wiedererkennen.
**Abhängigkeiten:**
- Trustee-Tooling-Plan: `c-work/1-plan/2026-04-customer-trustee-tooling-and-demo-prep.md` (Phase 13 erledigt ✅)
- Customer Demo Enablement: `c-work/1-plan/2026-04-customer-demo-enablement.md` (Analyse vorhanden)
- UI-Enhancements: `c-work/1-plan/2026-04-porta-ui-enhancements-team-meeting.md`
**Risiko bei Nicht-Umsetzung:** Demo scheitert live, Investoren sehen nur Slides statt funktionierendes Produkt. Vertrauensverlust.
---
## Fokus und kritische Details
### Was die Audienz überzeugt (Schritt 1 — gemeinsam klären)
**Investoren wollen sehen:**
1. **Funktionierendes Produkt** — kein Mockup, echte Datenverarbeitung
2. **Marktdifferenzierung** — warum nicht ChatGPT/Copilot/Langdock?
3. **Wiederholbarkeit** — keine Einmal-Demo, sondern konfigurierbare Workflows
4. **Skalierbarkeit** — Multi-Tenant, Multi-LLM, Usage-Based
5. **Internationalisierung** — neue Sprache in 5 Min, AI-übersetzt, kein Redeploy
**Treuhänder wollen sehen:**
1. **Zeitersparnis** — vorher 515 Min/Beleg → nachher Sekunden
2. **Datenschutz** — keine Kundendaten an OpenAI/Google
3. **Integration** — Abacus/Bexio/SharePoint ohne Systemwechsel
4. **Kontrolle** — Audit-Trail, Nachvollziehbarkeit
### Drei Live Use Cases (aus Keynote-Deck)
| # | Use Case | Dauer | Wow-Effekt | Technische Basis |
|---|----------|-------|------------|------------------|
| 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 |
| 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 |
### Kritische Stellen
- **Graph-Editor Performance:** Workflow muss flüssig laufen (keine 15s-Wartezeiten)
- **Neutralisierung live zeigen:** Muss am AI-Gate greifen, nicht nur im Playground
- **Stabile Testdaten:** Jeder Demo-Lauf muss identische Ergebnisse liefern
- **Internet-Abhängigkeit:** UC2 (webSearch) braucht stabiles Internet — Fallback vorbereiten
- **LLM-Latenz:** Multi-LLM-Routing muss schnell sein — bevorzugt Azure OpenAI (geringste Latenz)
---
## Ziel und Nicht-Ziele
**Ziel:**
- Drei Use Cases end-to-end live lauffähig auf einer Demo-Instanz
- Bootstrap-Modul `demo` das den kompletten Demo-Zustand idempotent aufbaut
- Detailliertes Drehbuch mit Timing, Talking Points und Fallbacks
- Automatisiertes Testdrehbuch (pytest) das die Demo-Schritte verifiziert
- Alles auf INT-Umgebung deployt und getestet bis Montag Abend
**Explizit NICHT:**
- Keine neuen Features bauen (nutzen was da ist)
- Kein neues Frontend (UI-Enhancements separat)
- Keine neuen Connector-Implementierungen
- Keine Änderung am Billing für die Demo
---
## 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)
- **DB-Migration:** nein (nur Daten-Seeding)
- **Andere Komponenten:** Testdaten (PDF, Excel, CSV), Demo-Skript (Markdown), Test-Suite (pytest)
---
## Entscheidungen
| Datum | Entscheidung | Begründung |
|-------|-------------|------------|
| 2026-04-12 | Bootstrap-Modul statt manuellem Setup | Idempotent, reproduzierbar, jeder kann die Demo aufsetzen |
| 2026-04-12 | UC2 (Immobilien) als Agent-Demo statt RealEstate-Feature voll nutzen | RealEstate-Feature ist noch Shell; Agent + webSearch zeigt dieselbe Story |
| 2026-04-12 | Neutralisierung als Querschnitt in UC1 + UC3 einbauen, nicht als eigenen Block | Natürlicher Flow, keine "Feature-Parade" |
| 2026-04-12 | Testdrehbuch als pytest-Suite unter `gateway/tests/demo/` | Automatisch prüfbar, CI-fähig, reproduzierbar |
| 2026-04-12 | Fallback-Screenshots für UC2 (Internet-abhängig) | Demo darf nicht an WLAN scheitern |
---
## Umsetzungs-Checkliste
### Phase 0: Klärung — Was zeigen wir? (So Abend / Mo Morgen)
- [ ] **Use-Case-Auswahl bestätigen** mit Kollegen (Keynote-Alignment)
- UC1: Treuhand Spesenverarbeitung → zeigt Plug&Play + Workflow
- UC2: Immobilien Machbarkeitsstudie → zeigt AI-Agent-Power + Zeitersparnis
- UC3: Knowledge Chatbot → zeigt RAG + Enterprise-Readiness
- UC4: Sprach-Deployment → zeigt Skalierbarkeit + Enterprise-Readiness (neue Sprache in 5 Min)
- UC5: Integrationen → zeigt Plug&Play-Architektur visuell (Datenquellen → PORTA → Services)
- Querschnitt: Neutralisierung → zeigt Privacy-First
- [ ] **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)
- [ ] **`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)
- [ ] **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)
- [ ] **Demo-Testdaten vorbereiten** (Ordner `gateway/demoData/`)
- `invoices/` — 3 Muster-Rechnungen (PDF): Handwerker, Büromaterial, 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
### Phase 2: Demo-Konfiguration pro Use Case (Mo Nachmittag)
#### UC1: Treuhand — Spesenverarbeitung
- [ ] **Trustee-Instanz konfigurieren** (Connector: Bexio-Sandbox oder Mock)
- [ ] **Graph-Editor Workflow erstellen/aktivieren:**
Trigger (manual) → SharePoint listFiles → Loop → downloadFile → extractFromFiles → processDocuments → syncToAccounting
(System-Template "Treuhand: PDF-Klassifizierung & Trustee-Import" als Basis nutzen)
- [ ] **SharePoint-Demo-Ordner** mit 3 Musterbelegen befüllen (oder lokaler Upload-Pfad)
- [ ] **Demo-Prompt** vorbereiten: "Verarbeite die Belege im Eingangsordner und erstelle die Buchungen"
- [ ] **Erwartetes Ergebnis dokumentieren:** Beleg → extrahierte Positionen → MWST-Code → Kontierung
#### UC2: Immobilien — Machbarkeitsstudie
- [ ] **Workspace-Instanz** mit RealEstate-Kontext konfigurieren
- [ ] **Demo-Prompt** vorbereiten: "Erstelle eine Machbarkeitsstudie für das Grundstück an der Musterstrasse 42, 8001 Zürich. Analysiere Zonierung, Baurecht und Nutzungspotential."
- [ ] **Agent-Tools sicherstellen:** `webSearch`, `readUrl`, `createChart` verfügbar
- [ ] **Fallback:** Vorbereitete Ergebnis-Screenshots falls Internet ausfällt
- [ ] **Erwartetes Ergebnis dokumentieren:** Automatische Datensammlung → BZO-Analyse → Zusammenfassung
#### UC3: Enterprise — Knowledge Chatbot
- [ ] **Chatbot-Instanz konfigurieren** mit Demo-Datenbank (oder Workspace-RAG)
- [ ] **Knowledge-Base befüllen:** 3-4 Dokumente hochladen + RAG-Index aufbauen
- [ ] **Demo-Fragen vorbereiten:**
- "Wie ist unser Reklamationsprozess?" (→ Antwort mit Quellenangabe)
- "Welche Fristen gelten für Nebenkostenabrechnungen?" (→ zeigt domänenspezifisches Wissen)
- "Erstelle eine Zusammenfassung der Q1-Ergebnisse" (→ zeigt Analyse-Fähigkeit)
- [ ] **Neutralisierung aktivieren** und in einer Frage live demonstrieren
- [ ] **Erwartetes Ergebnis dokumentieren:** Frage → Antwort mit Quellenangabe + Audit-Trail
#### UC5: Integrationen — Architektur-Visualisierung (neue Seite)
- [ ] **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
#### 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
- [ ] **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
#### Querschnitt: Neutralisierung
- [ ] **Demo-Flow vorbereiten:**
1. Fiktives Mieterdossier (PDF) im Workspace öffnen
2. Neutralisierung aktivieren PII wird zu Platzhaltern
3. AI-Analyse auf neutralisierten Daten ausführen
4. Re-Personalisierung zeigen (Platzhalter Originaldaten)
- [ ] **NeutralizationPanel** im Frontend vorbereiten (Mappings sichtbar)
### Phase 3: Drehbuch der Demo (Mo Nachmittag)
- [ ] **Detailliertes Drehbuch erstellen** (siehe unten, Abschnitt "Demo-Drehbuch")
- [ ] **Talking Points** für jede Szene (was sagen, was zeigen, was klicken)
- [ ] **Timing-Markers** (Minute 0-20) mit Puffer
### Phase 4: Testdrehbuch — automatisiertes Testing (Mo Abend)
- [ ] **Test-Suite `gateway/tests/demo/`** erstellen
- [ ] **`conftest.py`** mit Demo-Fixtures (Mandant, User, Feature-Instanzen)
- [ ] **`test_demo_uc1_trustee.py`** Trustee-Pipeline end-to-end
- [ ] **`test_demo_uc2_realestate.py`** Agent-basierte Machbarkeitsstudie
- [ ] **`test_demo_uc3_chatbot.py`** Knowledge-Chatbot mit RAG
- [ ] **`test_demo_uc4_i18n.py`** Sprach-Deployment + AI-Translation + UI-Wechsel
- [ ] **`test_demo_neutralization.py`** Neutralisierung roundtrip
- [ ] **`test_demo_bootstrap.py`** Bootstrap idempotent + Demo-Zustand korrekt
- [ ] **Alle Tests grün** auf INT-Umgebung
### Phase 5: Generalprobe (Di Vormittag)
- [ ] **Komplette Demo 1x durchspielen** auf INT mit echtem Browser
- [ ] **Timing messen** muss in 20 Min passen (Ziel: 18 Min mit Puffer)
- [ ] **Edge Cases testen:** Was wenn LLM langsam? Was wenn SharePoint-Timeout?
- [ ] **Backup-Plan:** Browser-Tab mit vorbereiteten Ergebnissen für jeden UC
---
## Demo-Drehbuch (20 Minuten)
### Szene 0: Setup (vor der Demo, nicht sichtbar)
- Browser auf: PORTA Dashboard (Demo-Mandant eingeloggt als `demo@poweron.ch`)
- Tabs vorbereitet: Dashboard, Workspace, Graph-Editor, Trustee, Chatbot
- SharePoint-Demo-Ordner mit Belegen befüllt
- Neutralisierung aktiviert
- Knowledge-Base indexiert
### Szene 1: Intro & Integrationslandschaft (0:00 3:00)
**Was zeigen:** PORTA Dashboard Integrationsseite die Architektur auf einen Blick
**Talking Points:**
- "Das ist PORTA unsere AI Execution Layer. Ein Login, alle AI-Workflows."
- "Jeder Mandant hat seine eigenen Features, Daten, Berechtigungen komplett getrennt."
**Klick-Sequenz:**
1. Dashboard Mandanten-Übersicht
2. Feature-Store aktivierte Features zeigen (Treuhand, Chatbot, Neutralisierung)
3. **Integrationen öffnen** "Hier sehen Sie die komplette Architektur auf einen Blick."
4. **Schicht für Schicht erklären:**
- Unten: "Das sind die Datenquellen Microsoft, Google, Abacus, Bexio. Die stecken wir an wie Stecker."
- Mitte: "Hier laufen die Workflows visuell gebaut, AI-gesteuert. System-Templates und individuelle."
- Oben: "Die Services pro Mandant jeder bekommt nur, was er braucht."
5. "50+ Konnektoren, keine Seat-Lizenzen, Bezahlung pro Workflow-Ausführung."
6. Überleitung: "Schauen wir uns an, wie das konkret funktioniert."
### Szene 2: UC1 — Treuhand Spesenverarbeitung (3:00 9:00)
**Was zeigen:** Beleg OCR KI-Kontierung Export in Sekunden statt Minuten
**Talking Points:**
- "Treuhänder verbringen 5-15 Min pro Beleg mit manueller Erfassung."
- "PowerON automatisiert das: Beleg hochladen oder aus SharePoint holen, KI extrahiert und kontiert."
**Klick-Sequenz:**
1. Graph-Editor öffnen Demo-Workflow "Treuhand: Belegverarbeitung" zeigen
2. "Das ist ein visueller Workflow kein Code nötig. SharePoint Loop Extraktion Kontierung."
3. Workflow manuell starten Live-Ausführung zeigen
4. Trustee-Bereich öffnen extrahierte Positionen zeigen (Beleg, MWST, Konto)
5. "Das lief gerade in Sekunden. Vorher: 15 Minuten pro Beleg. Das ist 98% Zeiteinsparung."
6. Audit-Trail zeigen: "Jeder Schritt ist nachvollziehbar für Revision und Compliance."
**Transition:** "Und das Beste: Die Kundendaten verlassen nie die Schweiz. Schauen wir uns das an."
### Szene 3: Neutralisierung live (9:00 12:00)
**Was zeigen:** PII-Schutz in Echtzeit Daten werden vor dem LLM-Call anonymisiert
**Talking Points:**
- "Treuhänder, Anwälte, Gesundheitssektor die können keine Kundendaten an OpenAI senden."
- "PowerON löst das architektonisch: PII wird entfernt, BEVOR Daten zum Modell gehen."
**Klick-Sequenz:**
1. Workspace öffnen Mieterdossier (PDF) hochladen
2. Neutralisierungs-Panel zeigen: "Hier sehen Sie die Mappings jeder Name, jede Adresse wird durch Platzhalter ersetzt."
3. AI-Analyse starten: "Analysiere das Mieterdossier und erstelle eine Risikobewertung"
4. Ergebnis zeigen: Analyse ist inhaltlich korrekt, aber keine echten Namen im LLM-Call
5. Re-Personalisierung: "Im Ergebnis stehen wieder die echten Namen der Platzhalter-Roundtrip ist transparent."
6. "Das ist keine opt-in Checkbox. Das ist Architektur. PII kann physisch nicht zum Modell-Anbieter gelangen."
**Transition:** "Jetzt zeigen wir, wie die KI auch ausserhalb der Treuhand arbeitet."
### Szene 4: UC2 — Immobilien Machbarkeitsstudie (12:00 15:00)
**Was zeigen:** Grundstück automatische Recherche Analyse in Minuten statt Stunden
**Talking Points:**
- "Immobilienfirmen recherchieren 2-4 Stunden pro Grundstück. Manuell, über verschiedene Quellen."
- "PowerON automatisiert die Recherche und erstellt eine Machbarkeitsstudie."
**Klick-Sequenz:**
1. Workspace öffnen Prompt eingeben: "Erstelle eine Machbarkeitsstudie für Musterstrasse 42, 8001 Zürich"
2. Agent arbeitet live: "Der Agent sucht jetzt automatisch in öffentlichen Quellen swisstopo, Zonenpläne, ÖREB."
3. Ergebnis zeigen: Zusammenfassung mit Zonierung, Baurecht, Nutzungspotential
4. Chart zeigen (falls generiert): Flächenaufteilung, Nutzungsmix
5. "6 Minuten statt 4 Stunden. 92% Zeiteinsparung. Und das funktioniert für jedes Grundstück in der Schweiz."
**Transition:** "Letztes Beispiel wie die KI als Firmen-Wissensbasis funktioniert."
### Szene 5: UC3 — Knowledge Chatbot (15:00 17:00)
**Was zeigen:** Firmenwissen sofort abrufbar mit Quellenangabe
**Talking Points:**
- "Informationssilos sind der Produktivitätskiller Nr. 1. ERP, CRM, SharePoint Daten überall."
- "PowerON gibt ein einheitliches Interface auf alle Datenquellen."
**Klick-Sequenz:**
1. Chatbot öffnen "Wie ist unser Reklamationsprozess?"
2. Antwort zeigen: Strukturiert, mit Quellenangabe (Dokument + Seite)
3. Follow-up: "Welche Fristen gelten für Nebenkostenabrechnungen?"
4. Antwort mit Rechtsgrundlage zeigen
5. "Sofortige Antworten statt 10 Minuten Suche. Rollenbasierter Zugriff jeder sieht nur, was er sehen darf."
### Szene 6: UC4 — Sprach-Deployment live (17:00 20:00)
**Was zeigen:** Neue Sprache in Minuten AI übersetzt 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."
**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
**Transition:** "Das war PowerON PORTA zurück zu den Zahlen."
### Szene 7: Closing (im Keynote-Deck, nicht in PORTA)
- Zurück zu den Keynote-Slides: Pricing, Roadmap, Next Steps
- CTA für Investoren / Treuhänder
---
## Testdrehbuch (automatisiert)
### Architektur
```
gateway/tests/demo/
├── conftest.py # Demo-Fixtures, DB-Setup
├── test_demo_bootstrap.py # Bootstrap idempotent, Demo-Zustand korrekt
├── test_demo_uc1_trustee.py # UC1: Beleg → Extraktion → Kontierung
├── test_demo_uc2_realestate.py # UC2: Agent → Web-Recherche → Analyse
├── test_demo_uc3_chatbot.py # UC3: Frage → RAG → Antwort + Quelle
├── test_demo_uc4_i18n.py # UC4: Sprache anlegen → AI-Translation → UI-Wechsel
├── test_demo_neutralization.py # Neutralisierung: PII → Platzhalter → Roundtrip
└── README.md # Ausführungshinweise
```
### Test-Szenarien (Given-When-Then)
#### T-BOOT: Bootstrap
```
Given keine Demo-Daten in der DB
When bootstrapDemoEnvironment(db) ausgeführt wird
Then Demo-Mandant existiert mit allen Feature-Instanzen
AND Demo-User existiert mit korrekten Rollen
AND Demo-Testdaten sind im Workspace geladen
AND Neutralisierung ist aktiviert
AND Graph-Editor hat Demo-Workflows
Given Demo-Daten bereits vorhanden
When bootstrapDemoEnvironment(db) erneut ausgeführt wird
Then kein Fehler (idempotent)
AND Zustand ist identisch
```
#### T-UC1: Treuhand Spesenverarbeitung
```
Given Demo-Mandant mit Trustee-Instanz und 3 Musterbelegen im Workspace
When Graph-Editor Workflow "Treuhand: Belegverarbeitung" gestartet wird
Then alle 3 Belege werden extrahiert
AND jeder Beleg hat mindestens 1 extrahierte Position
AND jede Position hat: Betrag, MWST-Satz, Konto-Vorschlag
AND Workflow-Status = completed
AND Audit-Trail enthält alle Schritte
Given extrahierte Positionen vorhanden
When syncToAccounting aufgerufen wird
Then Positionen werden an Connector übergeben (Mock: Bexio-Sandbox)
AND Sync-Status = "synced" für alle Positionen
```
#### T-UC2: Immobilien Machbarkeitsstudie
```
Given Demo-Mandant mit Workspace-Instanz
When Agent-Prompt "Erstelle Machbarkeitsstudie für Musterstrasse 42, 8001 Zürich" ausgeführt wird
Then Agent nutzt webSearch und/oder readUrl Tools
AND Ergebnis enthält: Zonierung, Baurecht-Infos, Flächenanalyse
AND Ergebnis ist strukturiert (Abschnitte, ggf. Chart)
AND Antwortzeit < 120 Sekunden
```
#### T-UC3: Knowledge Chatbot
```
Given Demo-Mandant mit Chatbot-Instanz und indexierter Knowledge-Base (3+ Dokumente)
When Frage "Wie ist unser Reklamationsprozess?" gestellt wird
Then Antwort referenziert mindestens 1 Quell-Dokument
AND Antwort ist inhaltlich korrekt (enthält Prozessschritte)
AND Antwortzeit < 15 Sekunden
Given Chatbot mit RAG-Index
When Frage zu Thema ausserhalb der Knowledge-Base gestellt wird
Then Antwort zeigt an, dass keine relevante Quelle gefunden wurde (kein Halluzinieren)
```
#### T-UC4: Sprach-Deployment
```
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
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 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)
```
#### T-NEU: Neutralisierung
```
Given Demo-Mandant mit aktivierter Neutralisierung
AND Mieterdossier-PDF mit PII (Name: "Hans Muster", Adresse: "Bahnhofstrasse 1")
When PDF hochgeladen und Neutralisierung ausgeführt wird
Then neutralisierter Text enthält Platzhalter statt "Hans Muster"
AND Mapping-Tabelle enthält Zuordnung Platzhalter → Original
AND resolveText() stellt Originaldaten korrekt wieder her
Given neutralisierter Text
When AI-Analyse "Erstelle Risikobewertung" ausgeführt wird
Then LLM erhält nur neutralisierten Text (kein PII im Request)
AND Ergebnis nach Re-Personalisierung enthält "Hans Muster"
```
### Ausführung
```bash
cd gateway/
# Alle Demo-Tests:
pytest tests/demo/ -v -m "not expensive"
# Nur Bootstrap:
pytest tests/demo/test_demo_bootstrap.py -v
# Nur UC1:
pytest tests/demo/test_demo_uc1_trustee.py -v
# Mit Live-AI-Calls (expensive, für Generalprobe):
pytest tests/demo/ -v -m ""
```
---
## Akzeptanzkriterien
| # | Kriterium (Given-When-Then) | Prio |
|---|---------------------------|------|
| 1 | Given Demo-Mandant, When Bootstrap ausgeführt wird, Then alle Features aktiv + Testdaten geladen + Neutralisierung an | must |
| 2 | Given 3 Musterbelege, When Trustee-Workflow läuft, Then Belege extrahiert + kontiert + Audit-Trail vorhanden | must |
| 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 |
| 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 |
## Testplan
| ID | AC | Art | Automatisiert | Repo-Pfad | Status |
|----|----|-----|--------------|-----------|--------|
| T1 | 1 | integration | ja | gateway/tests/demo/test_demo_bootstrap.py | pending |
| T2 | 2 | e2e | ja (teilweise, AI=expensive) | gateway/tests/demo/test_demo_uc1_trustee.py | pending |
| T3 | 3 | e2e | ja (expensive) | gateway/tests/demo/test_demo_uc2_realestate.py | pending |
| T4 | 4 | e2e | ja (expensive) | gateway/tests/demo/test_demo_uc3_chatbot.py | pending |
| T5 | 5 | e2e | ja (expensive) | gateway/tests/demo/test_demo_neutralization.py | pending |
| T6 | 6 | e2e | ja (expensive) | gateway/tests/demo/test_demo_uc4_i18n.py | pending |
| T7 | 7 | manual | nein | (Generalprobe Di Morgen) | pending |
| T8 | 8 | ci | ja | `pytest tests/demo/ -v` | pending |
## Links
- Keynote Use Cases: `local/notes/use-cases-DEMO-TUE.md`
- Customer Demo Enablement: `c-work/1-plan/2026-04-customer-demo-enablement.md`
- Trustee Tooling Plan: `c-work/1-plan/2026-04-customer-trustee-tooling-and-demo-prep.md`
- Bootstrap (bestehend): `gateway/modules/interfaces/interfaceBootstrap.py`
- System-Templates (Treuhand): `interfaceBootstrap._buildSystemTemplates()`
- Workflow-Engine: `b-reference/gateway/workflow.md`
- Neutralisierung: `b-reference/platform/neutralization.md`
- Testing-Strategie: `d-guides/testing-strategy.md`
- Trustee-Feature: `gateway/modules/features/trustee/`
- RealEstate-Feature: `gateway/modules/features/realEstate/`
- Chatbot-Feature: `gateway/modules/features/chatbot/`
- Neutralisierung-Feature: `gateway/modules/features/neutralization/`
- Graph-Editor: `gateway/modules/features/graphicalEditor/`
## Abschluss
- [ ] b-reference/ aktualisiert (keine neuen Features, nur Demo-Config)
- [ ] TOPICS.md aktualisiert (falls neues Thema)
- [ ] Dieses Dokument z-archive/ verschoben