From 24190f532a204221d0d3c9eb2c412a967ca02699 Mon Sep 17 00:00:00 2001
From: ValueOn AG
Date: Sun, 26 Apr 2026 08:36:33 +0200
Subject: [PATCH] fixes
---
README.md | 4 +-
b-reference/gateway/features/trustee.md | 23 +-
...-feature-instance-ref-adapter-migration.md | 172 ++
...2026-04-trustee-account-balances-import.md | 238 ++
c-work/_CHANGELOG.md | 41 +
d-guides/cursor-doc-sync.md | 3 +-
.../c-work/2026-04-node-typization-audit.md | 18 +-
z-archive/changelog.txt | 2556 +++++++++++++++++
8 files changed, 3043 insertions(+), 12 deletions(-)
create mode 100644 c-work/4-done/2026-04-feature-instance-ref-adapter-migration.md
create mode 100644 c-work/4-done/2026-04-trustee-account-balances-import.md
create mode 100644 c-work/_CHANGELOG.md
create mode 100644 z-archive/changelog.txt
diff --git a/README.md b/README.md
index 287d27c..cf024c9 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
-
+
# PowerOn PORTA -- Dokumentation
@@ -44,6 +44,8 @@ PowerOn PORTA ist eine Multi-Tenant SaaS-Plattform mit Feature-Store-Modell, AI-
**Kernregel:** Während Planung, Umsetzung und Testing pflegst du **nur** das eine Arbeits-Dokument in `c-work/`. Kanon-Seiten in `b-reference/` und `TOPICS.md` werden erst am Ende aktualisiert.
+**Nach jedem Change:** 1 Zeile in [`c-work/_CHANGELOG.md`](c-work/_CHANGELOG.md) (Format dort beschrieben).
+
---
## b-reference/ Aufbau
diff --git a/b-reference/gateway/features/trustee.md b/b-reference/gateway/features/trustee.md
index 396fe3a..0028a5e 100644
--- a/b-reference/gateway/features/trustee.md
+++ b/b-reference/gateway/features/trustee.md
@@ -1,6 +1,6 @@
-
-
+
+
# Feature: Trustee
@@ -107,6 +107,20 @@ trigger.manual -> trustee.extractFromFiles -> trustee.processDocuments -> truste
`trustee.refreshAccountingData` ruft `AccountingBridge.fetchSnapshots` -- die Tabellen `TrusteeDataAccount`, `TrusteeDataJournal*`, `TrusteeDataContact`, `TrusteeDataAccountBalance` werden read-only befuellt.
+### Saldenliste (`TrusteeDataAccountBalance`)
+
+Die Tabelle `TrusteeDataAccountBalance` enthaelt pro Konto + Periode (13 Buckets: Annual `periodMonth=0` + 12 Monate) einen Datensatz mit `openingBalance`, `debitTotal`, `creditTotal`, `closingBalance`.
+
+**Datenquelle (Prioritaet):**
+
+1. **Connector** (`getAccountBalances`): Jeder Accounting-Connector kann ueber die optionale Methode `BaseAccountingConnector.getAccountBalances(config, years, accountNumbers)` echte Salden liefern. `AccountingPeriodBalance` (Pydantic) ist der einheitliche Rueckgabetyp.
+ - **RMA**: Dedizierter Endpunkt `GET /gl/saldo` -- liefert den echten, durch RMA berechneten Schlusssaldo inkl. Vorjahresvortrag und Jahresabschluss-Buchungen. Pro Konto + Stichtag ein API-Call. Wildcard-Pattern (`xxxx`, `xxxxx`) aus Kontenplan abgeleitet fuer Bulk-Abfrage.
+ - **Bexio**: Kein Saldo-Endpunkt verfuegbar; Aggregation aus `GET /3.0/accounting/journal` mit korrekter kumulativer Berechnung (Bilanzkonten 1xxx-2xxx carry-over, Erfolgskonten 3xxx-9xxx jaehrlicher Reset).
+ - **Abacus**: Aggregation aus `GET GeneralJournalEntries` (OData V4). Code-Hinweis fuer optionale `AccountBalances`-Entity (instanzabhaengig).
+2. **Lokaler Fallback** (`_buildLocalBalanceFallback`): Wenn der Connector `[]` zurueckgibt (kein Endpunkt oder Fehler), aggregiert `accountingDataSync` die bereits importierten `TrusteeDataJournalLine`-Zeilen kumulativ. `openingBalance` der ersten Periode = `0` (kein Vortrag aus fehlenden Daten erfindbar).
+
+Quelle wird im Log pro Sync dokumentiert: `source=connector` bzw. `source=local-fallback`.
+
---
## REST-Endpunkte (Auswahl)
@@ -134,6 +148,10 @@ UI-Sichtbarkeit der Daten-Tabellen-Seite haengt am Permission-Eintrag `ui.featur
| FeatureInstanceRef | `gateway/tests/unit/workflows/test_featureInstanceRefMigration.py` | Materialisierung + Auto-Unwrap, Idempotenz. |
| Live-E2E | `gateway/tests/integration/trustee/test_spesenbelege_workflow_e2e.py` | `executeGraph` durch `processDocuments + syncToAccounting` mit In-Memory-Fakes. |
| DB-CLI | `gateway/tests/unit/scripts/test_migrate_feature_instance_refs.py` | Dry-run + Live-Migration des persistierten Graphs. |
+| Balance RMA | `gateway/tests/unit/features/trustee/test_accountingConnectorRma_balances.py` | `getAccountBalances` via gemocktem `/gl/saldo` (BuHa-SoHa-Szenario + ER-Reset). |
+| Balance Bexio | `gateway/tests/unit/features/trustee/test_accountingConnectorBexio_balances.py` | Kumulative Aggregation aus Journal (BS carry-over + ER-Reset). |
+| Balance Abacus | `gateway/tests/unit/features/trustee/test_accountingConnectorAbacus_balances.py` | OData-Aggregation (BS carry-over + ER-Reset). |
+| Balance Sync | `gateway/tests/unit/features/trustee/test_accountingDataSync_balances.py` | Connector-Pfad (verbatim persist) + Local-Fallback (kumulative Berechnung). |
---
@@ -142,3 +160,4 @@ UI-Sichtbarkeit der Daten-Tabellen-Seite haengt am Permission-Eintrag `ui.featur
- Architektur-Plan: [`wiki/c-work/3-validate/2026-04-typed-action-architecture.md`](../../../c-work/3-validate/2026-04-typed-action-architecture.md)
- Folge-Plan: [`wiki/c-work/1-plan/2026-04-typed-action-followups.md`](../../../c-work/1-plan/2026-04-typed-action-followups.md)
- Adapter-Drift-Backlog (abgeschlossen): [`wiki/c-work/4-done/2026-04-adapter-drift-cleanup.md`](../../../c-work/4-done/2026-04-adapter-drift-cleanup.md)
+- Account-Balance-Import (abgeschlossen): [`wiki/c-work/4-done/2026-04-trustee-account-balances-import.md`](../../../c-work/4-done/2026-04-trustee-account-balances-import.md)
diff --git a/c-work/4-done/2026-04-feature-instance-ref-adapter-migration.md b/c-work/4-done/2026-04-feature-instance-ref-adapter-migration.md
new file mode 100644
index 0000000..a7bc0d5
--- /dev/null
+++ b/c-work/4-done/2026-04-feature-instance-ref-adapter-migration.md
@@ -0,0 +1,172 @@
+
+
+
+
+
+
+# FeatureInstanceRef-Adapter-Migration & Graph-Editor UI-Cleanup (2026-04-25)
+
+> Restbestand aus dem Node-Typisierungs-Audit (jetzt z-archiv).
+> Ziel: keine `frontendType: "hidden"` Pflichtfelder mehr, klare UI-Texte,
+> theme-konformer DataPicker, optionale Schema-Ansicht fur Sysadmins.
+
+## Auslosender Befund
+
+Bei der Audit-Umsetzung wurde die _strukturelle_ Korrektur (PORT_TYPE_CATALOG /
+Typed Action Architecture) durchgezogen — die _Anwendung_ in den
+`nodeDefinitions/*.py` jedoch nur teilweise. Trustee + Redmine fuhren
+weiter `featureInstanceId: string, hidden, required=True`, was im Editor
+zu **Phantom-Pflichtfeldern** ("Pflichtfelder ohne Quelle: Trustee Feature-
+Instanz-ID"), unklarer Fehler-Banner und einem nicht-bedienbaren Knoten
+fuhrt.
+
+Zusatzlich zeigte der Screenshot 2026-04-25 zwei UI-Probleme die unabhangig
+mitgenommen werden:
+
+- DataPicker-Modal mit nicht lesbaren Farb-Kombinationen
+- "Schema (Typ-Referenz)" und ausschweifende `description`-Texte
+ (`erarbeitete Dokumentenliste eines Upstream-Producers …`) in der
+ End-User-View
+
+## Anpassungs-Liste (zum Abhaken)
+
+### A. Audit archiviert ✅
+
+- [x] `wiki/c-work/1-plan/2026-04-node-typization-audit.md` ->
+ `wiki/z-archive/c-work/2026-04-node-typization-audit.md`
+- [x] Forward-Link auf Typed Action Architecture + dieses Track-Doc
+- [x] Changelog-Eintrag
+
+### B. Backend — `featureInstanceId` typisieren
+
+#### B1. Neuer Frontend-Type + Endpoint
+
+- [x] `routeFeatureGraphicalEditor.py`: neuer Endpoint
+ `GET /api/workflows/{instanceId}/options/feature.instance?featureCode=&enabledOnly=true`
+ - Antwort: `{ options: [{ value: "", label: "