7.1 KiB
7.1 KiB
Trustee Budget Comparison Refactor (Excel-only, Prompt-Klarheit)
Beschreibung und Kontext
Der Trustee-Service "Budget-Vergleich"
(gateway/modules/features/trustee/mainTrustee.py 430-461) liefert heute
ein Word-Dokument mit teils kaputten Bildern in Tabellenzellen und mit
Charts pro Konto statt einem Uebersichts-Chart. Ursachen:
- Workflow-Template hat kein
resultType-- das Ausgabeformat wird vom Modell entschieden, oft DOCX. - Prompt (Z. 442-454) ist mehrdeutig: "Erstelle ein Abweichungs-Chart" steht direkt neben "pro Konto" -- das LLM waehlt mal Lesart A, mal B.
- Bilder-in-Tabellenzellen sind im Markdown->JSON-Pfad
(
gateway/modules/serviceCenter/services/serviceAgent/coreTools/_mediaTools.py72-86, 108-127) nicht vorgesehen: Tabellenzellen sind reine Strings, Bilder muessen eine eigene Markdown-Zeile sein. python-docx koennte Bilder in Zellen, aber unsere MD-Pipeline kann es nicht ausdruecken.
User-Entscheid: Excel ist der natuerliche Container fuer einen Soll/Ist-Konten-Vergleich (tabellarische Daten, eingebettete Charts, sortier-/filterbar). Word-Pfad fuer diesen Workflow weg.
Fokus und kritische Details
- Format-Festlegung darf NICHT vom LLM ueberschrieben werden -- Workflow
muss
resultType: "xlsx"hart setzen. - Prompt-Refactor: ein Chart, ueber alle Konten. Few-Shot-Beispiel mit Zielstruktur direkt im Prompt einbauen.
- "Bild in Tabellenzelle"-Thema gehoert zum generellen Renderer-Refactor
(siehe
2026-04-ai-reports-theming-and-pipeline.md); hier nur den Budget-spezifischen Effekt heilen, indem das Layout Tabelle-darunter-Chart ist (kein Bild in Zelle noetig).
Ziel und Nicht-Ziele
- Ziel: Budget-Vergleich liefert konsistent EINE .xlsx mit Tabelle (alle Konten) + 1 Uebersichts-Chart + Management-Summary.
- NICHT: Bilder-in-Tabellenzellen technisch loesen (gehoert zu D).
- NICHT: native XLSX-Charts via openpyxl (Default bleibt PNG-Embed). Kann in spaeteren Iteration nachgezogen werden.
- NICHT: Aenderungen am
refreshAccountingData-Node oderai.process-Action.
Betroffene Module
- Gateway:
gateway/modules/features/trustee/mainTrustee.py-- Budget-Template Z. 430-461 (Prompt +resultType+ Output-Schema-Hinweis).
- Frontend:
frontend_nyla/src/pages/views/trustee/TrusteeAnalyseView.tsx-- File-Karten korrekt rendern (xlsx-Icon).
- DB-Migration: nein (nur Template-Aenderung; bei naechstem
_copyTemplateWorkflows-Lauf greift es).
Entscheidungen
| Datum | Entscheidung | Begruendung |
|---|---|---|
| 2026-04-29 | Excel ist primaeres Format, Word-Pfad fuer Budget-Vergleich entfernt | Daten-tabellarisch, Charts in Excel native passend |
| 2026-04-29 | Charts via PNG-Embed (kein openpyxl-native), 1 Chart ueber alle Konten | Schon implementiert, kein neuer Renderer-Pfad noetig |
| 2026-04-29 | Bilder-in-Zellen wird NICHT in diesem Plan geloest | Layout Tabelle-darunter-Chart reicht; generischer Fix in D |
Umsetzungs-Checkliste
Phase 1 -- Workflow-Template
- In
mainTrustee.pyBudget-Template: - ParameterresultType: "xlsx"setzen. - ParameterdocumentTheme: "finance"setzen (Vorbereitung fuer Plan D, hat heute noch keinen Effekt). _copyTemplateWorkflows(interfaceFeatures.py269-338) prueft idempotent ob bestehende User-Workflows mit IDtrustee-budget- comparisonaktualisiert werden -- falls nicht, separates Migrations-Skript-Stub anlegen.
Phase 2 -- Prompt klarziehen
- Neuer Prompt-Text in
mainTrustee.py:
Fuehre einen Budget-Soll/Ist-Vergleich durch und liefere EIN Excel-Dokument
mit folgender Struktur:
1. Tabelle "Konten-Vergleich" -- EINE Tabelle, EINE Zeile pro Konto:
Spalten: Konto-Nr | Konto-Name | Soll | Ist | Abweichung absolut |
Abweichung % | Status (OK / Warnung / Kritisch).
2. EINE Visualisierung "Soll vs. Ist gesamt" -- ein einziges
Balkendiagramm UNTER der Tabelle, das ALLE Konten in einer Grafik
gegenueberstellt (gruppierte Balken: Soll und Ist je Konto).
3. Kurzer Management-Summary-Absatz (3-5 Saetze) UNTER dem Chart
mit den 3 groessten Abweichungen (>10%) und einer fachlichen
Einschaetzung.
Verwende die uebergebene Budget-Datei als Soll-Quelle und die im
Kontext bereitgestellten Buchhaltungsdaten als Ist-Quelle.
WICHTIG: Erstelle KEINEN separaten Chart pro Konto. Nur EIN
Uebersichts-Chart ueber alle Konten ist gewuenscht.
- Few-Shot-Beispiel als zweites System-Block-Append: minimaler
JSON-Stub mit
metadata.documents[0].sections = [table, image, paragraph].
Phase 3 -- Excel-Renderer-Sicht
- Verifizieren dass
rendererXlsxPNG-Bilder unter Tabellen korrekt rendert (vorhanden,_renderJsonImage-Pfad). - Default-Bildbreite checken (heute hardcoded
maxWidth=800ingateway/modules/serviceCenter/services/serviceGeneration/renderers/rendererXlsx.py~ 1427-1428) -- ok fuer A4-druckbares Diagramm; spaeter via Theme-System (Plan D) konfigurierbar.
Phase 4 -- Frontend
TrusteeAnalyseView.tsxBudget-Tab: Hinweistext "Excel-Bericht" statt generisch "Datei", File-Icondescriptionstatt generisch.- Wenn Plan A2 vorher gemerged ist: "Im Workspace ansehen"-Button.
Phase 5 -- Test
- Smoke-Test: 1 Run mit Demo-Budget-File -> 1 .xlsx mit
genau einer
table-Section + einerimage-Section + einerparagraph-Section. - Snapshot des produzierten .xlsx in
gateway/tests/features/trustee/snapshots/.
Akzeptanzkriterien
| # | Kriterium (Given-When-Then) | Prio |
|---|---|---|
| 1 | Given Budget-Vergleich-Run, When er fertig ist, Then liefert er genau eine .xlsx (kein .docx) | must |
| 2 | Given die .xlsx wird geoeffnet, When User die erste Tabelle sieht, Then sind alle Konten als Zeilen vorhanden | must |
| 3 | Given die .xlsx, When User runter scrollt, Then findet er EIN Uebersichts-Chart (nicht eines pro Konto) | must |
| 4 | Given die .xlsx, When User zum Ende scrollt, Then steht ein Management-Summary-Absatz | should |
| 5 | Given Budget-Vergleich-Karte im Trustee-Dashboard, When der File-Link erscheint, Then zeigt das UI ein Excel-Icon und Label "Excel-Bericht" | should |
Testplan
| ID | AC | Art | Automatisiert | Repo-Pfad | Status |
|---|---|---|---|---|---|
| T1 | 1 | integration | ja | gateway/tests/features/trustee/test_budget_comparison_format.py | pending |
| T2 | 2,3,4 | integration | ja | gateway/tests/features/trustee/test_budget_comparison_structure.py | pending |
| T3 | 5 | unit | ja | frontend_nyla/src/pages/views/trustee/tests/TrusteeAnalyseView.test.tsx | pending |
Links
- Workflow-Definition:
gateway/modules/features/trustee/mainTrustee.py430-461. - Renderer-Pipeline:
gateway/modules/serviceCenter/services/serviceGeneration/. - Verwandter Plan:
wiki/c-work/1-plan/2026-04-ai-reports-theming-and-pipeline.md. - Audit-Quelle: Subagent-Report 2026-04-29.
Abschluss
wiki/b-reference/gateway/features/trustee.mdBudget-Service-Sektion aktualisieren- Dieses Dokument ->
z-archive/verschoben