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: "