wiki/c-work/4-done/2026-04-customer-trustee-quick-actions-feature-dashboard.md
2026-06-02 09:42:12 +02:00

436 lines
26 KiB
Markdown

<!-- status: build -->
<!-- started: 2026-04-09 -->
<!-- component: gateway | ui-nyla | platform -->
# Quick Actions — Feature-Dashboard mit One-Click-Aktionen
## Beschreibung und Kontext
Treuhandbüros (Bling, PWG) und andere Kunden wünschen sich ein **Cockpit**, von dem aus sie ihre häufigsten Aufgaben per Knopfdruck starten können — Budget-Vergleich, Belegverarbeitung, KPI-Dashboard, Cashflow etc. Heute müssen sie dafür den Workspace öffnen und den richtigen Prompt manuell eintippen.
**Business-Treiber:** Das Feature-Dashboard (z.B. Trustee Dashboard) ist aktuell eine passive Statistik-Seite (Anzahl Positionen, Dokumente, Sync-Status). Mit Quick Actions wird es zum **aktiven Cockpit** — der Einstiegspunkt für produktive Arbeit. Das macht den Unterschied zwischen "generischem AI-Chat" und "Branchenlösung für Treuhänder".
**Abhängigkeiten:**
- Trustee Agent-Tools müssen funktionieren (`c-work/1-plan/2026-04-trustee-tooling-and-demo-prep.md`)
- Workspace SSE-Streaming muss stabil laufen (`c-work/1-plan/2026-04-gateway-int-stability-and-bugfixes.md`)
- Prompt-Templates aus `c-work/1-plan/2026-04-customer-demo-enablement.md`
**Risiko bei Nicht-Umsetzung:** Kunden sehen PORTA als "noch ein Chat-Tool" statt als branchenspezifische Plattform. Die Hürde vom Login zum Mehrwert bleibt hoch.
## Fokus und kritische Details
### Ist-Zustand: Trustee Dashboard
`ui-nyla/src/pages/views/trustee/TrusteeDashboardView.tsx` zeigt aktuell:
- **Stats-Grid:** 4 Kacheln (Positionen, Dokumente, Buchhaltungs-Sync, Rollen)
- **Info-Sektion:** Instanz-Label, Mandant, Buchhaltungssystem
Kein Weg zu einer Aktion — keine Buttons, keine Links zum Workspace, keine Workflows.
### Architektur-Entscheid: Zwei Dispatch-Typen
Quick Actions dispatchen zu **bestehender Infrastruktur** — es wird keine zweite AI-Oberfläche gebaut:
| Typ | Dispatch-Ziel | Wann nutzen |
|-----|--------------|-------------|
| **`agentPrompt`** | Workspace mit vorgefülltem Prompt → Agent startet automatisch | Analyse-Aufgaben (Budget, KPIs, Cashflow, Prognosen, Jahresabschluss) |
| **`workflow`** | Graph-Editor System-Template wird direkt getriggert | Automatisierungs-Aufgaben (Belegimport, Daten-Sync, Spesen-Import) |
| **`link`** | Navigation zu einer bestehenden Seite | Schnellzugriff (Scan/Upload, Dokumente, Einstellungen) |
### Kritische Stellen
- **Workspace Pre-Fill:** Der Workspace (`WorkspacePage.tsx`) hat aktuell **keinen** Mechanismus für URL-Parameter `?prompt=...`. Das muss ergänzt werden.
- **Cross-Feature-Navigation:** Eine Trustee Quick Action muss den User zur Workspace-Instanz des gleichen Mandanten navigieren. Das erfordert Auflösung: Trustee-InstanceId → MandateId → Workspace-InstanceId.
- **RBAC-Filterung:** Quick Actions müssen nach Rolle gefiltert werden. Ein `trustee-client` soll "Belege hochladen" sehen, aber nicht "Jahresabschluss prüfen".
- **i18n:** Alle Labels müssen mehrsprachig sein (bestehendes `TextMultilingual`-Pattern nutzen).
### Warum kein eigenes AI-Rendering auf dem Dashboard?
Der Workspace hat bereits: Chat-Rendering, Chart-Anzeige, Datei-Handling, SSE-Streaming, Progressive Summarization, Tool-Ergebnisse. Das zu duplizieren wäre enormer Aufwand. Stattdessen nutzen wir den Workspace als "Execution Engine" und das Dashboard als "Launchpad".
## Ziel und Nicht-Ziele
**Ziel:**
- Feature-Dashboards (Trustee als Pilot, danach CommCoach, Workspace) zeigen kontextspezifische Quick Action Cards
- Klick auf eine `agentPrompt`-Card öffnet Workspace mit vorgefülltem Prompt und startet den Agent
- Klick auf eine `workflow`-Card triggert einen Graph-Editor Workflow
- Actions sind RBAC-gefiltert, i18n-ready und per Feature-Instanz konfigurierbar
- Wiederverwendbare `QuickActionBoard`-Komponente für alle Features
**Explizit NICHT:**
- Kein AI-Rendering auf dem Dashboard selbst (kein Chat, keine Charts auf der Trustee-Seite)
- Keine neuen DB-Tabellen — Quick Actions leben im Code (wie `UI_OBJECTS`) + optional in `FeatureInstance.config`
- Keine neuen API-Verträge für Workflow-Execution (nutzt bestehenden `POST /{instanceId}/execute`)
- Kein Prompt-Editor für Endnutzer (kommt ggf. später)
## Betroffene Module
- **Gateway:** `features/trustee/mainTrustee.py` (Quick Action Definitionen), `features/trustee/routeFeatureTrustee.py` (API-Endpoint), ggf. `features/workspace/routeFeatureWorkspace.py` (Pre-Fill-Support)
- **Frontend:** `pages/views/trustee/TrusteeDashboardView.tsx` (Quick Action Board einbinden), neue Komponente `components/QuickActionBoard/`, `pages/views/workspace/WorkspacePage.tsx` (URL-Param-Support)
- **DB-Migration:** nein
- **Andere Komponenten:** Prompt-Templates (Markdown-Dateien, getrennt gepflegt)
## Entscheidungen
| Datum | Entscheidung | Begründung |
|-------|-------------|------------|
| 2026-04-09 | Quick Actions im Code definieren (wie `UI_OBJECTS`), nicht in einer DB-Tabelle | Einfach, versioniert, kein Migrations-Aufwand. Custom-Actions später über `FeatureInstance.config` |
| 2026-04-09 | Dispatch zu Workspace statt Inline-Rendering auf dem Dashboard | Workspace hat die komplette AI-Infrastruktur (Chat, Charts, Streaming). Kein Sinn in Duplizierung |
| 2026-04-09 | `QuickActionBoard` als generische Plattform-Komponente, nicht Trustee-spezifisch | CommCoach, Workspace, RealEstate können dieselbe Komponente nutzen |
| 2026-04-09 | Workspace bekommt URL-Parameter `?prompt=...&autoStart=true` | Einfachster Weg für Cross-Feature-Dispatch. Kein Backend-Spezialweg nötig |
| 2026-04-09 | Prompt-Templates als Konfigurationswert in der Quick Action, nicht als separate Dateien | Prompt gehört zur Aktion — eine Quelle der Wahrheit. Kein File-Lookup zur Laufzeit |
---
## Umsetzungs-Checkliste
### Phase 1: Backend — Quick Action Definitionen & API (Gateway)
- [x] **`QUICK_ACTIONS` in `mainTrustee.py` definieren**
Gleiches Pattern wie `UI_OBJECTS`, `TEMPLATE_ROLES`:
```python
QUICK_ACTIONS = [
{
"id": "trustee-process-receipts",
"label": {"de": "Belege verarbeiten", "en": "Process Receipts", "fr": "Traiter les justificatifs"},
"description": {"de": "Belege aus SharePoint importieren, klassifizieren und verbuchen", "en": "Import receipts from SharePoint, classify and book", "fr": "Importer les justificatifs depuis SharePoint, classer et comptabiliser"},
"icon": "mdi-file-document-check-outline",
"color": "#4CAF50",
"category": "import",
"actionType": "workflow",
"config": {
"workflowTemplateCode": "trustee-receipt-import"
},
"requiredRoles": ["trustee-user", "trustee-accountant", "trustee-admin"],
"sortOrder": 1
},
{
"id": "trustee-sync-accounting",
"label": {"de": "Daten synchronisieren", "en": "Sync Accounting Data", "fr": "Synchroniser les données"},
"description": {"de": "Buchhaltungsdaten aus dem externen System aktualisieren", "en": "Refresh accounting data from external system", "fr": "Actualiser les données du système externe"},
"icon": "mdi-sync",
"color": "#FF9800",
"category": "import",
"actionType": "agentPrompt",
"config": {
"prompt": "Aktualisiere die Buchhaltungsdaten aus dem verbundenen Buchhaltungssystem. Nutze refreshTrusteeData mit forceRefresh=true. Zeige mir danach eine Zusammenfassung: Anzahl Konten, Buchungen, Kontakte und den Zeitraum der Daten."
},
"requiredRoles": ["trustee-accountant", "trustee-admin"],
"sortOrder": 2
},
{
"id": "trustee-budget-comparison",
"label": {"de": "Budget-Vergleich", "en": "Budget Comparison", "fr": "Comparaison budgétaire"},
"description": {"de": "Soll/Ist-Vergleich der Buchhaltung mit Budget-Excel", "en": "Compare actuals vs. budget from Excel", "fr": "Comparer les données réelles avec le budget Excel"},
"icon": "mdi-chart-bar",
"color": "#2196F3",
"category": "analyse",
"actionType": "agentPrompt",
"config": {
"prompt": "Ich möchte einen Budget-Soll/Ist-Vergleich durchführen. Bitte:\n1. Frage mich nach der Budget-Datei (Excel) oder suche im Workspace nach einer Datei mit 'Budget' im Namen\n2. Lade die aktuellen Buchhaltungsdaten (refreshTrusteeData falls nötig)\n3. Vergleiche die Soll-Werte aus dem Budget mit den Ist-Werten aus der Buchhaltung pro Konto\n4. Berechne die Abweichung (absolut und prozentual)\n5. Erstelle ein Abweichungs-Chart (Balkendiagramm: Soll vs. Ist pro Konto)\n6. Markiere kritische Abweichungen (>10%) und gib eine kurze Einschätzung",
"suggestFileUpload": true,
"uploadHint": {"de": "Budget-Excel hochladen", "en": "Upload budget Excel"}
},
"requiredRoles": ["trustee-accountant", "trustee-admin"],
"sortOrder": 3
},
{
"id": "trustee-kpi-dashboard",
"label": {"de": "KPI-Dashboard", "en": "KPI Dashboard", "fr": "Tableau de bord KPI"},
"description": {"de": "Kennzahlen berechnen und visualisieren", "en": "Calculate and visualize key metrics", "fr": "Calculer et visualiser les indicateurs clés"},
"icon": "mdi-view-dashboard-outline",
"color": "#9C27B0",
"category": "analyse",
"actionType": "agentPrompt",
"config": {
"prompt": "Erstelle ein KPI-Dashboard basierend auf den aktuellen Buchhaltungsdaten. Berechne und visualisiere:\n1. **Bruttogewinn** und Bruttogewinnmarge\n2. **EBIT** (Betriebsergebnis)\n3. **Gewinnmarge** (Reingewinn / Umsatz)\n4. **Eigenkapitalquote** und Check auf hälftigen Kapitalverlust (OR Art. 725)\n5. **Liquiditätsgrad 1-3** (Cash Ratio, Quick Ratio, Current Ratio)\n6. **Überschuldungs-Check**\n\nErstelle für jede Kennzahl einen kurzen Kommentar (gut/kritisch/Handlungsbedarf). Erstelle mindestens 2 Charts: ein Übersichts-Chart der Margen und ein Liquiditäts-Chart."
},
"requiredRoles": ["trustee-accountant", "trustee-admin"],
"sortOrder": 4
},
{
"id": "trustee-cashflow",
"label": {"de": "Cashflow-Rechnung", "en": "Cash Flow Statement", "fr": "Tableau des flux de trésorerie"},
"description": {"de": "Cashflow berechnen und analysieren", "en": "Calculate and analyze cash flow", "fr": "Calculer et analyser le flux de trésorerie"},
"icon": "mdi-cash-multiple",
"color": "#009688",
"category": "analyse",
"actionType": "agentPrompt",
"config": {
"prompt": "Erstelle eine Cashflow-Rechnung basierend auf den aktuellen Buchhaltungsdaten:\n1. **Operativer Cashflow:** Starte vom Reingewinn, bereinige um nicht-cash-wirksame Positionen (Abschreibungen, Rückstellungen, Wertberichtigungen)\n2. **Investitions-Cashflow:** Investitionen in Sachanlagen, Finanzanlagen\n3. **Finanzierungs-Cashflow:** Darlehensaufnahmen/-rückzahlungen, Dividenden, Kapitalerhöhungen\n4. **Netto-Cashflow** und Veränderung der liquiden Mittel\n\nWarne bei kritischen Werten. Erstelle ein Wasserfall-Chart oder gestapeltes Balkendiagramm der drei Cashflow-Bereiche."
},
"requiredRoles": ["trustee-accountant", "trustee-admin"],
"sortOrder": 5
},
{
"id": "trustee-year-end-check",
"label": {"de": "Jahresabschluss prüfen", "en": "Year-End Review", "fr": "Contrôle de clôture annuelle"},
"description": {"de": "Automatische Prüfungen für den Jahresabschluss", "en": "Automated year-end review checks", "fr": "Contrôles automatisés de clôture"},
"icon": "mdi-clipboard-check-outline",
"color": "#795548",
"category": "abschluss",
"actionType": "agentPrompt",
"config": {
"prompt": "Führe eine automatische Jahresabschluss-Prüfung durch:\n1. **Saldovalidierung:** Prüfe alle Bilanzkonten auf Plausibilität (negative Saldi wo nicht erwartet, ungewöhnlich hohe Saldi)\n2. **Vorjahresvergleich:** Vergleiche Bilanz- und ER-Positionen mit dem Vorjahr, markiere Abweichungen >20%\n3. **Abgrenzungen:** Identifiziere potenzielle transitorische Aktiven/Passiven (regelmässige Aufwände ohne Dezember-Buchung, Erträge im Voraus)\n4. **Gesetzliche Prüfungen:** Hälftiger Kapitalverlust (OR 725), Überschuldung, Mindestkapital\n5. **MWST-Plausibilisierung:** Vorsteuer vs. geschätzter Aufwand, Umsatzsteuer vs. Umsatz\n\nErstelle eine Checkliste mit Status (OK / Warnung / Kritisch) pro Prüfpunkt."
},
"requiredRoles": ["trustee-accountant", "trustee-admin"],
"sortOrder": 6
},
{
"id": "trustee-forecast",
"label": {"de": "Prognose erstellen", "en": "Create Forecast", "fr": "Créer une prévision"},
"description": {"de": "Trend-Analyse und Prognose der nächsten Monate", "en": "Trend analysis and forecast for coming months", "fr": "Analyse de tendance et prévision"},
"icon": "mdi-chart-timeline-variant",
"color": "#E91E63",
"category": "analyse",
"actionType": "agentPrompt",
"config": {
"prompt": "Erstelle eine Finanzprognose basierend auf den historischen Buchhaltungsdaten:\n1. Analysiere die Umsatz- und Aufwandsentwicklung der letzten 6 Monate (monatliche Aggregation)\n2. Identifiziere Trends und Saisonalitäten\n3. Prognostiziere Umsatz, Aufwand und Gewinn für die nächsten 3 Monate\n4. Erstelle ein Chart mit Ist-Werten und Prognose-Korridor (Best/Expected/Worst Case)\n5. Markiere Risiken: \"Wenn der Trend anhält, passiert X\"\n\nNutze eine einfache lineare Extrapolation mit Saisonalitätskorrektur wo sinnvoll."
},
"requiredRoles": ["trustee-accountant", "trustee-admin"],
"sortOrder": 7
},
{
"id": "trustee-upload-receipt",
"label": {"de": "Beleg hochladen", "en": "Upload Receipt", "fr": "Télécharger un justificatif"},
"description": {"de": "Beleg scannen oder als Datei hochladen", "en": "Scan or upload a receipt", "fr": "Scanner ou télécharger un justificatif"},
"icon": "mdi-camera-document-outline",
"color": "#607D8B",
"category": "schnellzugriff",
"actionType": "link",
"config": {
"targetView": "scan-upload"
},
"requiredRoles": ["trustee-user", "trustee-client", "trustee-accountant", "trustee-admin"],
"sortOrder": 8
},
]
```
- [x] **`getQuickActions()` Funktion in `mainTrustee.py`** analog zu `getUiObjects()`, `getTemplateRoles()`
- [x] **API-Endpoint `GET /api/trustee/{instanceId}/quick-actions`** in `routeFeatureTrustee.py`
- Liest `QUICK_ACTIONS` + optional `FeatureInstance.config.get("quickActions", [])`
- Filtert nach User-Rollen (RBAC): nur Actions deren `requiredRoles` mit den Rollen des Users auf dieser Instanz übereinstimmen
- Sortiert nach `sortOrder`
- Gruppiert nach `category` (optional, Frontend kann auch selbst gruppieren)
- Response: `{ "actions": [...], "categories": [{ "id": "import", "label": {...} }, ...] }`
### Phase 2: Frontend — QuickActionBoard Komponente
- [x] **Neue Komponente `components/QuickActionBoard/QuickActionBoard.tsx`**
Generische, wiederverwendbare Komponente:
```typescript
interface QuickAction {
id: string;
label: string; // bereits in User-Sprache aufgelöst
description: string;
icon: string;
color: string;
category: string;
actionType: 'agentPrompt' | 'workflow' | 'link';
config: Record<string, any>;
}
interface QuickActionBoardProps {
actions: QuickAction[];
onDispatch: (action: QuickAction) => void;
loading?: boolean;
}
```
UI:
- Responsive Card-Grid (`grid-template-columns: repeat(auto-fill, minmax(220px, 1fr))`)
- Jede Card: Icon (farbig) + Titel + Beschreibung (1-Zeiler) + Hover-Effekt
- Kategorien als optionale Section-Header
- Loading-Skeleton während API-Call
- Dark-Theme Support (bestehende CSS-Variablen nutzen)
- Kein eigener State — rein präsentational mit `onDispatch`-Callback
- [x] **CSS in `components/QuickActionBoard/QuickActionBoard.module.css`**
- Konsistentes Design mit bestehenden `TrusteeViews.module.css` Kacheln (`.statCard` Pattern)
- Hover: leichter Scale + Shadow-Verstärkung
- Active/Clicked: kurzer visueller Feedback (Pulse oder Farb-Flash)
- Icon-Rendering: `mdi-*` Icons aus bestehender Icon-Library oder als Unicode/SVG Fallback
### Phase 3: Frontend — Dashboard-Integration
- [x] **`TrusteeDashboardView.tsx` erweitern**
Unter dem bestehenden `statsGrid` und `infoSection`:
```tsx
// Nach der infoSection:
<QuickActionBoard
actions={quickActions}
onDispatch={_handleQuickAction}
loading={actionsLoading}
/>
```
Dispatch-Handler:
```tsx
const _handleQuickAction = (action: QuickAction) => {
switch (action.actionType) {
case 'agentPrompt':
_navigateToWorkspaceWithPrompt(action.config);
break;
case 'workflow':
_triggerWorkflow(action.config);
break;
case 'link':
_navigateToView(action.config.targetView);
break;
}
};
```
- [~] **API-Hook `useTrusteeQuickActions(instanceId)`** in `hooks/useTrustee.ts` *(Logik inline im View implementiert — separater Hook ist optional/nice-to-have, kein Blocker)*
- Fetcht `GET /api/trustee/{instanceId}/quick-actions` — erledigt (inline in `TrusteeDashboardView`)
- Resolved `label`/`description` in die aktive Sprache — erledigt (API liefert aufgelöst)
- [x] **Trustee API Funktion `fetchQuickActions()`** in `api/trusteeApi.ts`
### Phase 4: Frontend — Workspace Pre-Fill (Cross-Feature-Dispatch)
- [x] **URL-Parameter-Support in `WorkspacePage.tsx`**
Workspace erkennt URL-Suchparameter:
- `?prompt=<encodedText>` → Füllt Prompt-Feld vor
- `&autoStart=true` → Startet den Agent automatisch nach dem Laden
- `&sourceFeature=trustee` → Optional: Kontext-Hinweis woher der User kommt
- `&sourceInstanceId=<id>` → Optional: Trustee-Instanz für Feature-Data-Zugriff
Implementierung:
```tsx
useEffect(() => {
const params = new URLSearchParams(window.location.search);
const prompt = params.get('prompt');
const autoStart = params.get('autoStart') === 'true';
if (prompt) {
setInputText(decodeURIComponent(prompt));
// URL bereinigen (Params entfernen, damit Reload nicht erneut startet)
window.history.replaceState({}, '', window.location.pathname);
if (autoStart) {
// Kurze Verzögerung damit UI gerendert ist
setTimeout(() => _handleSend(), 300);
}
}
}, []);
```
- [x] **Workspace-Instanz-Auflösung** für Cross-Feature-Navigation
Helper-Funktion in Trustee Dashboard:
```typescript
const _navigateToWorkspaceWithPrompt = async (config: QuickActionConfig) => {
// 1. Workspace-Instanz des gleichen Mandanten finden
const workspaceInstance = instances.find(
i => i.featureCode === 'workspace' && i.mandateId === currentMandateId
);
if (!workspaceInstance) { /* Fehlerbehandlung */ }
// 2. Navigation mit Prompt-Parametern
const params = new URLSearchParams({
prompt: config.prompt,
autoStart: 'true',
sourceFeature: 'trustee',
sourceInstanceId: instanceId,
});
navigate(`/features/workspace/${workspaceInstance.id}/dashboard?${params}`);
};
```
### Phase 5: Workflow-Dispatch (für `actionType: "workflow"`)
> **Implementierungs-Entscheid:** Statt direktem Workflow-Trigger vom Dashboard navigieren die Analyse-/Abschluss-Actions
> als `actionType: "link"` zu `TrusteeAnalyseView` bzw. `TrusteeAbschlussView` mit `?tab=...` Parameter.
> Diese Views laden den zugehörigen Template-Workflow (via `templateTag`) und bieten eine dedizierte UI
> mit Eingabemöglichkeiten, Workflow-Ausführung und Ergebnis-Anzeige. Das ist besser als ein direkter
> One-Click-Trigger, weil der User Kontext sieht und Parameter eingeben kann.
- [x] **Navigation zu Analyse/Abschluss-Views** mit Tab-Parameter implementiert
- Quick Actions nutzen `targetView: "analyse"` / `"abschluss"` + `tab: "budget"` / `"kpi"` / etc.
- `TrusteeAnalyseView` und `TrusteeAbschlussView` laden Workflows via `templateTag`-Matching
- [x] **Template-Workflows** in `TEMPLATE_WORKFLOWS` definiert mit korrekten Tags
- `template:trustee-budget-comparison`, `template:trustee-kpi-dashboard`, `template:trustee-cashflow`, `template:trustee-forecast`, `template:trustee-year-end-check`
- [x] **Workflow-Kopierung** bei Instanz-Erstellung via `_copyTemplateWorkflows`
- [x] **Nachträgliche Sync-Möglichkeit** via `POST /api/admin/features/instances/{id}/sync-workflows` (Admin UI Button)
**Hinweis:** Direkter `actionType: "workflow"` Dispatch (One-Click-Trigger ohne Zwischen-UI) bleibt als spätere Erweiterung möglich, wird aber aktuell nicht benötigt.
### Querschnitt-Checks
- [x] API-Endpunkte: `GET /api/trustee/{instanceId}/quick-actions` — implementiert in `routeFeatureTrustee.py`
- [x] DB-Schema / Migration: nein (keine DB-Änderung nötig)
- [x] Frontend-Komponenten: `QuickActionBoard` (neu, generisch), `TrusteeDashboardView` (erweitert)
- [x] RBAC / Permissions: Filterung über `requiredRoles` im API-Endpoint
- [x] Neutralisierung betroffen? nein (Prompts gehen durch normale Workspace-Pipeline)
- [x] Navigation / Routing: Workspace URL-Parameter-Support (`?prompt=`, `?autoStart=`)
- [x] Billing-Impact? nein (Agent-Calls laufen über bestehende Billing-Pipeline)
- [x] i18n: Alle Labels in `QUICK_ACTIONS` nutzen `TextMultilingual`-Format
---
## Akzeptanzkriterien
| # | Kriterium (Given-When-Then) | Prio |
|---|---------------------------|------|
| 1 | Given Trustee Dashboard, When ein User mit Rolle `trustee-accountant` die Seite öffnet, Then sieht er mindestens 6 Quick Action Cards (Belege, Sync, Budget, KPIs, Cashflow, Jahresabschluss) in einem Card-Grid unterhalb der Statistiken | must |
| 2 | Given Quick Action "Budget-Vergleich" (Typ `agentPrompt`), When der User auf die Card klickt, Then wird er zum Workspace navigiert mit dem vorgefüllten Prompt und der Agent startet automatisch | must |
| 3 | Given Quick Action "Belege verarbeiten" (Typ `workflow`), When der User auf die Card klickt, Then wird der zugehörige Graph-Editor Workflow getriggert und der User erhält eine Bestätigung | must |
| 4 | Given Quick Action "Beleg hochladen" (Typ `link`), When der User auf die Card klickt, Then wird er zur Scan/Upload-Seite der aktuellen Trustee-Instanz navigiert | must |
| 5 | Given ein User mit Rolle `trustee-client`, When er das Trustee Dashboard öffnet, Then sieht er nur die Quick Actions für seine Rolle (z.B. "Beleg hochladen"), nicht die Accountant-Aktionen (Budget, KPIs etc.) | must |
| 6 | Given Dark Theme aktiv, When das Dashboard mit Quick Actions gerendert wird, Then sind alle Cards visuell korrekt (Farben, Kontraste, Hover-Effekte) im Dark Mode | should |
| 7 | Given Workspace geöffnet via Quick Action mit `autoStart=true`, When der Agent gestartet wird, Then enthält der System-Prompt Kontext über die Trustee-Instanz und der Agent kann sofort auf Trustee-Daten zugreifen | should |
| 8 | Given schmales Viewport (< 768px), When das Dashboard angezeigt wird, Then sind die Quick Action Cards in einem 1-2 Spalten Grid und weiterhin klickbar | should |
## Testplan
| ID | AC | Art | Automatisiert | Repo-Pfad / Methode | Status |
|----|----|-----|--------------|---------------------|--------|
| T1 | 1, 5 | api | ja | `platform-core/tests/features/trustee/test_quick_actions_api.py` Endpoint liefert gefilterte Actions pro Rolle | pending |
| T2 | 2 | e2e | nein | Manuell: Card klicken Workspace öffnet mit Prompt Agent startet | pending |
| T3 | 3 | e2e | nein | Manuell: Workflow-Card klicken Workflow läuft Bestätigung sichtbar | pending |
| T4 | 4 | e2e | nein | Manuell: Link-Card klicken korrekte Navigation | pending |
| T5 | 6 | visual | nein | Manuell: Dark/Light Mode vergleichen | pending |
| T6 | 7 | e2e | nein | Manuell: Budget-Vergleich aus Quick Action Agent nutzt Trustee-Daten korrekt | pending |
| T7 | 8 | visual | nein | Manuell: Browser-Fenster schmaler als 768px | pending |
## Spätere Erweiterungen (nicht in Scope)
| Idee | Beschreibung |
|------|-------------|
| **Custom Quick Actions pro Mandant** | Admin kann eigene Actions definieren (in `FeatureInstance.config.quickActions`), die mit den System-Actions gemergt werden |
| **Workspace Empty State** | Quick Actions des aktiven Features im Workspace Empty State anzeigen (wenn kein Chat offen) |
| **Inline-Ergebnis-Preview** | Nach Agent-Ausführung: Zusammenfassung und Charts auf dem Dashboard selbst anzeigen (statt nur im Workspace) |
| **Favoriten / Pinned Actions** | User kann Actions pinnen; gepinnte Actions erscheinen zuoberst oder auf einer persönlichen "Home"-Seite |
| **CommCoach Quick Actions** | "Mietergespräch üben", "Nebenkostenfragen trainieren" etc. auf dem CommCoach Dashboard |
| **Prompt-Editor** | Power-User können Prompts der Quick Actions anpassen (Mandanten-spezifisch) |
## Links
- Kundenwünsche: `local/notes/use-cases-inputs-customers.md`
- Customer Demo Enablement: `c-work/1-plan/2026-04-customer-demo-enablement.md`
- Trustee Tooling: `c-work/1-plan/2026-04-trustee-tooling-and-demo-prep.md`
- Trustee Dashboard (Frontend): `ui-nyla/src/pages/views/trustee/TrusteeDashboardView.tsx`
- Trustee Feature (Gateway): `platform-core/modules/features/trustee/mainTrustee.py`
- Trustee Routes (Gateway): `platform-core/modules/features/trustee/routeFeatureTrustee.py`
- Workspace Routes (Gateway): `platform-core/modules/features/workspace/routeFeatureWorkspace.py`
- Workspace Page (Frontend): `ui-nyla/src/pages/views/workspace/WorkspacePage.tsx`
- FeatureView Registry (Frontend): `ui-nyla/src/pages/FeatureView.tsx`
- Quick Action Board (Frontend, neu): `ui-nyla/src/components/QuickActionBoard/`
- Navigation API: `wiki/b-reference/platform/navigation.md`
## Abschluss
- [ ] b-reference/ aktualisiert (`b-reference/platform-core/features/trustee.md` neu anlegen mit Quick Actions)
- [ ] b-reference/ui-nyla/architecture.md aktualisiert (QuickActionBoard-Komponente)
- [ ] TOPICS.md aktualisiert (neues Thema "Quick Actions")
- [ ] Dieses Dokument z-archive/ verschoben