# 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 `frontend_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; } 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: ``` 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=` → Füllt Prompt-Feld vor - `&autoStart=true` → Startet den Agent automatisch nach dem Laden - `&sourceFeature=trustee` → Optional: Kontext-Hinweis woher der User kommt - `&sourceInstanceId=` → 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 | `gateway/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): `frontend_nyla/src/pages/views/trustee/TrusteeDashboardView.tsx` - Trustee Feature (Gateway): `gateway/modules/features/trustee/mainTrustee.py` - Trustee Routes (Gateway): `gateway/modules/features/trustee/routeFeatureTrustee.py` - Workspace Routes (Gateway): `gateway/modules/features/workspace/routeFeatureWorkspace.py` - Workspace Page (Frontend): `frontend_nyla/src/pages/views/workspace/WorkspacePage.tsx` - FeatureView Registry (Frontend): `frontend_nyla/src/pages/FeatureView.tsx` - Quick Action Board (Frontend, neu): `frontend_nyla/src/components/QuickActionBoard/` - Navigation API: `wiki/b-reference/platform/navigation.md` ## Abschluss - [ ] b-reference/ aktualisiert (`b-reference/gateway/features/trustee.md` — neu anlegen mit Quick Actions) - [ ] b-reference/frontend-nyla/architecture.md aktualisiert (QuickActionBoard-Komponente) - [ ] TOPICS.md aktualisiert (neues Thema "Quick Actions") - [ ] Dieses Dokument → z-archive/ verschoben