From 244726a7167096a5f348ac93cc31abc3197cac4b Mon Sep 17 00:00:00 2001
From: ValueOn AG
Date: Tue, 2 Jun 2026 09:42:12 +0200
Subject: [PATCH] upd
---
README.md | 17 +-
TOPICS.md | 26 +--
.../market/langdock-markteinschaetzung.md | 4 +-
a-strategy/roadmap.md | 2 +-
.../platform-core/agent-file-bridge.md | 8 +-
b-reference/platform-core/ai-agent.md | 70 +++---
b-reference/platform-core/architecture.md | 56 ++---
b-reference/platform-core/automation.md | 4 +-
b-reference/platform-core/billing.md | 8 +-
b-reference/platform-core/features/trustee.md | 40 ++--
.../platform-core/fk-label-resolution.md | 12 +-
b-reference/platform-core/voice-google.md | 2 +-
b-reference/platform-core/workflow.md | 16 +-
b-reference/platform/database-architecture.md | 51 ++--
b-reference/platform/infrastructure.md | 8 +
b-reference/platform/mandate.md | 12 +-
b-reference/platform/navigation.md | 4 +-
b-reference/platform/neutralization.md | 2 +-
b-reference/platform/platform-diagrams.md | 10 +-
b-reference/platform/rbac.md | 18 +-
b-reference/platform/unified-data-bar.md | 2 +-
b-reference/product.md | 1 +
.../service-llm-private/architecture.md | 98 +++++++-
b-reference/teams-bot/architecture.md | 16 +-
b-reference/ui-nyla/architecture.md | 6 +-
b-reference/ui-nyla/formgenerator.md | 6 +-
c-work/0-ideas/2026-03-pm-web-image-search.md | 10 +-
...4-pm-consolidated-customer-requirements.md | 16 +-
.../2026-05-depoformance-api-integration.md | 220 ++++++++++++++++++
c-work/1-plan/2026-05-lawyer-feature.md | 22 +-
.../2026-05-udb-sources-recovery.md | 34 +--
c-work/4-done/2026-03-codeeditor-phase1.md | 46 ++--
c-work/4-done/2026-04 gateway-i18n-unified.md | 26 +--
.../4-done/2026-04-adapter-drift-cleanup.md | 16 +-
...2026-04-ai-reports-theming-and-pipeline.md | 82 +++----
.../2026-04-automation-central-admin.md | 4 +-
.../4-done/2026-04-automation-unification.md | 22 +-
.../2026-04-bootstrap-migrations-cleanup.md | 36 +--
.../4-done/2026-04-comcoach-greenfield-ia.md | 74 +++---
...nce-audit-view-and-navigation-overviews.md | 28 +--
...026-04-customer-trustee-demo-enablement.md | 12 +-
...trustee-quick-actions-feature-dashboard.md | 24 +-
...-customer-trustee-tooling-and-demo-prep.md | 48 ++--
...6-04-demo2-merged-customer-trustee-plan.md | 24 +-
...-feature-instance-ref-adapter-migration.md | 12 +-
.../4-done/2026-04-formgenerator-grouping.md | 14 +-
.../2026-04-gateway-duplicate-class-names.md | 2 +-
...-04-gateway-i18n-phase-7-implementation.md | 16 +-
...6-04-gateway-int-stability-and-bugfixes.md | 16 +-
c-work/4-done/2026-04-generic-graph-editor.md | 130 +++++------
...-unified-knowledge-indexing-rag-concept.md | 30 +--
c-work/4-done/2026-04-infomaniak-connector.md | 4 +-
.../4-done/2026-04-investor-demo-tuesday.md | 14 +-
.../2026-04-mandate-name-label-logic.md | 44 ++--
.../2026-04-msft-google-calendar-contacts.md | 2 +-
...4-period-picker-billing-audit-migration.md | 68 +++---
...6-04-porta-ui-enhancements-team-meeting.md | 26 +--
...pwg-pilot-mietzinsbestaetigung-workflow.md | 78 +++----
c-work/4-done/2026-04-redmine-feature.md | 52 ++---
.../2026-04-sysadmin-authority-split.md | 116 ++++-----
.../2026-04-teamsbot-director-prompts.md | 10 +-
...-teamsbot-greenfield-ia-and-live-update.md | 38 +--
...2026-04-trustee-account-balances-import.md | 32 +--
...ctionresult-schema-and-datapicker-crash.md | 22 +-
...6-04-trustee-budget-comparison-refactor.md | 26 +--
...-04-trustee-cleanup-positions-documents.md | 48 ++--
.../2026-04-trustee-data-tables-page.md | 62 ++---
...rustee-workflow-audit-and-run-workspace.md | 40 ++--
.../2026-04-typed-action-architecture.md | 48 ++--
.../4-done/2026-04-typed-action-followups.md | 40 ++--
.../4-done/2026-04-typed-generic-handover.md | 66 +++---
c-work/4-done/2026-04-udb-action-system.md | 30 +--
.../2026-04-ui-i18n-dynamic-language-sets.md | 12 +-
c-work/4-done/2026-04-ui-polish-bundle.md | 44 ++--
.../4-done/2026-05-enterprise-subscription.md | 2 +-
...-feature-data-agent-ontology-and-repair.md | 60 ++---
...-formgenerator-tree-and-folder-recovery.md | 38 +--
...05-int-environment-infomaniak-migration.md | 12 +-
.../2026-05-postgres-connection-pool.md | 28 +--
...-rag-consent-and-control-implementation.md | 68 +++---
...-05-rag-consent-and-control-unification.md | 52 ++---
c-work/4-done/2026-05-udb-cascade-inherit.md | 8 +-
.../4-done/2026-05-udb-datasource-settings.md | 20 +-
.../2026-05-udb-generic-tree-refactor.md | 14 +-
c-work/_CHANGELOG.md | 28 ++-
c-work/_TEMPLATE.md | 4 +-
d-guides/coding-conventions.md | 8 +-
d-guides/dev-setup.md | 22 +-
d-guides/encrypt-env-secrets.md | 18 +-
d-guides/google-oauth-setup.md | 4 +-
d-guides/google-oauth-verification.md | 4 +-
d-guides/google-registration-checklist.md | 18 +-
.../microsoft-entra-registration-checklist.md | 14 +-
d-guides/stripe-ch-vat.md | 2 +-
d-guides/testing-strategy.md | 10 +-
95 files changed, 1585 insertions(+), 1234 deletions(-)
create mode 100644 c-work/0-ideas/2026-05-depoformance-api-integration.md
diff --git a/README.md b/README.md
index 955c7a7..ad0a308 100644
--- a/README.md
+++ b/README.md
@@ -7,11 +7,12 @@
PowerOn PORTA ist eine Multi-Tenant SaaS-Plattform mit Feature-Store-Modell, AI-Agent-Workspace und mandantenweiter Datenneutralisierung.
-| Komponente | Repository | Technologie | Beschreibung |
+| Komponente | Repository (Forgejo: git.poweron.swiss/PowerOn) | Technologie | Beschreibung |
|-----------|-----------|-------------|-------------|
-| Frontend Nyla | `frontend_nyla` | React/TypeScript, Vite | Zentrales UI für alle Features |
-| Gateway | `gateway` | FastAPI, Python, PostgreSQL | Backend REST-API, Services, AI-Core |
-| Private LLM | `private-llm` | Python | Internes LLM für Neutralisierung + sensitive Daten |
+| Frontend Nyla | `ui-nyla` | React/TypeScript, Vite | Zentrales UI für alle Features |
+| Platform Core | `platform-core` | FastAPI, Python, PostgreSQL | Backend REST-API, Services, AI-Core |
+| Private LLM | `service-llm-private` | Python | Internes LLM für Neutralisierung + sensitive Daten |
+| Preprocessing | `service-preprocessing` | Python | Datenvorverarbeitung Power BI → SQLite, SQL-Query-Service |
| Teams Bot | `service-teams-browser-bot` | TypeScript/Node.js | Bot für Teams-Meeting-Teilnahme |
| Wiki | `wiki` | Markdown | Dokumentation (dieses Repo) |
@@ -53,7 +54,7 @@ PowerOn PORTA ist eine Multi-Tenant SaaS-Plattform mit Feature-Store-Modell, AI-
```
b-reference/
├── product.md Komponentenübersicht, Repo-Map, Tech-Stack
-├── gateway/ Backend-Komponente
+├── platform-core/ Backend-Komponente
│ ├── architecture.md Module, Services, Interfaces
│ ├── ai-agent.md Agent Core, Tools, Knowledge/RAG
│ ├── workflow.md Workflow-Engine, Methoden, Aktionen
@@ -61,9 +62,9 @@ b-reference/
│ ├── billing.md Billing, Subscriptions
│ ├── voice-google.md Google STT/TTS (VoiceObjects, Streaming-WS, Feature-Mapping)
│ └── features/ trustee.md, commcoach.md, chatbot.md, ...
-├── frontend-nyla/ Frontend-Komponente
+├── ui-nyla/ Frontend-Komponente
│ └── architecture.md Seiten, Komponenten, Hooks, Routing
-├── private-llm/ Internes LLM
+├── service-llm-private/ Internes LLM
│ └── architecture.md Setup, Modelle, Gateway-Integration
├── teams-bot/ Teams Meeting Bot
│ └── architecture.md Service, WebSocket, Architektur
@@ -90,5 +91,5 @@ b-reference/
```
-
+
```
diff --git a/TOPICS.md b/TOPICS.md
index d5b6eef..2f06c88 100644
--- a/TOPICS.md
+++ b/TOPICS.md
@@ -18,16 +18,16 @@ Lade immer zuerst diese Datei. Dann gezielt die passende(n) Referenz-Datei(en).
| Thema | Datei | Wann laden |
|-------|-------|------------|
| Komponentenübersicht | b-reference/product.md | Repo-übergreifende Fragen, Tech-Stack |
-| Gateway-Architektur | b-reference/gateway/architecture.md | Backend-Module, Services, Interfaces |
-| AI Agent & Tools | b-reference/gateway/ai-agent.md | Agent-Verhalten, Tool-Registrierung, RAG |
-| Agent-Tool File Bridge | b-reference/gateway/agent-file-bridge.md | Wie Agent-Tool-Outputs (download / writeFile / renderDocument / generateImage / createChart) als ChatDocument im Workflow landen, `docItem:`-Pattern, runAgent Workflow-Propagation |
-| Workflow-Engine | b-reference/gateway/workflow.md | Methoden, Aktionen, WorkflowManager |
-| Automation | b-reference/gateway/automation.md | Graphical Editor, Scheduler, System-Automatisierung (`/automations`, `/api/system/workflow-runs/*`) |
-| Billing & Subscriptions | b-reference/gateway/billing.md | Abrechnung, Prepaid, State Machine |
-| Google Voice (STT/TTS) | b-reference/gateway/voice-google.md | VoiceObjects, ConnectorGoogleSpeech, `/voice-google/stt/*`, CommCoach vs Teamsbot vs Agent |
-| Frontend Nyla | b-reference/frontend-nyla/architecture.md | UI-Seiten, Komponenten, Hooks, Routing |
-| FormGenerator (Table, Form, Tree, Report) | b-reference/frontend-nyla/formgenerator.md | Generische UI-Komponenten, Provider-Pattern, API-Anbindung |
-| Private LLM | b-reference/private-llm/architecture.md | Internes LLM, Neutralisierung |
+| Gateway-Architektur | b-reference/platform-core/architecture.md | Backend-Module, Services, Interfaces |
+| AI Agent & Tools | b-reference/platform-core/ai-agent.md | Agent-Verhalten, Tool-Registrierung, RAG |
+| Agent-Tool File Bridge | b-reference/platform-core/agent-file-bridge.md | Wie Agent-Tool-Outputs (download / writeFile / renderDocument / generateImage / createChart) als ChatDocument im Workflow landen, `docItem:`-Pattern, runAgent Workflow-Propagation |
+| Workflow-Engine | b-reference/platform-core/workflow.md | Methoden, Aktionen, WorkflowManager |
+| Automation | b-reference/platform-core/automation.md | Graphical Editor, Scheduler, System-Automatisierung (`/automations`, `/api/system/workflow-runs/*`) |
+| Billing & Subscriptions | b-reference/platform-core/billing.md | Abrechnung, Prepaid, State Machine |
+| Google Voice (STT/TTS) | b-reference/platform-core/voice-google.md | VoiceObjects, ConnectorGoogleSpeech, `/voice-google/stt/*`, CommCoach vs Teamsbot vs Agent |
+| Frontend Nyla | b-reference/ui-nyla/architecture.md | UI-Seiten, Komponenten, Hooks, Routing |
+| FormGenerator (Table, Form, Tree, Report) | b-reference/ui-nyla/formgenerator.md | Generische UI-Komponenten, Provider-Pattern, API-Anbindung |
+| Private LLM | b-reference/service-llm-private/architecture.md | Internes LLM, Neutralisierung |
| Teams Bot | b-reference/teams-bot/architecture.md | Meeting-Bot, Browser-Bot WebSocket, Director Prompts (Hybrid Agent-Routing), MeetingModule + 5-Tab-UI, Dashboard-SSE, Live-Session-SSE + MFA |
## Cross-Cutting (repo-übergreifend)
@@ -41,7 +41,7 @@ Lade immer zuerst diese Datei. Dann gezielt die passende(n) Referenz-Datei(en).
| Datenbank-Architektur | b-reference/platform/database-architecture.md | Interface-Pattern, Connector, Auto-Init, DB-Liste, Database Health, Orphan-Scanner |
| Navigation | b-reference/platform/navigation.md | Menü-Struktur, Admin-Seiten, API |
| Compliance & AI-Audit | b-reference/platform/audit.md | AI-Datenfluss-Log, Security-Audit, Statistiken, RBAC |
-| i18n / Mehrsprachigkeit | b-reference/gateway/architecture.md (Abschnitt i18n), d-guides/coding-conventions.md (Backend i18n), b-reference/frontend-nyla/architecture.md (Routing/i18n) | `t()`, `@i18nModel`, UiLanguageSet, TextMultilingual, AI-Uebersetzung, Boot-Sync |
+| i18n / Mehrsprachigkeit | b-reference/platform-core/architecture.md (Abschnitt i18n), d-guides/coding-conventions.md (Backend i18n), b-reference/ui-nyla/architecture.md (Routing/i18n) | `t()`, `@i18nModel`, UiLanguageSet, TextMultilingual, AI-Uebersetzung, Boot-Sync |
## Aktive Arbeiten (c-work)
@@ -62,11 +62,11 @@ Lade immer zuerst diese Datei. Dann gezielt die passende(n) Referenz-Datei(en).
| Gateway Duplicate Class Names (done) | c-work/3-validate/2026-04-gateway-duplicate-class-names.md | TaskResult, AiResponse, TableData, Token Umbenennungen |
| Generic Graph Editor (Typed Nodes, done) | c-work/3-validate/2026-04-generic-graph-editor.md | Port-Typen, Extraktoren, FrontendType-Renderer, System-Variablen |
| Typed Generic Handover (Pick-not-Push, done) | c-work/4-done/2026-04-typed-generic-handover.md | DataRef-only runtime, `validateGraph` Port-Hard-Fail, upstream-paths API, `bindNodeParameter` / `listUpstreamPaths` Tools, graph-defined FormPayload, Migrationsskript |
-| Unified Document Model (UDM) & Workflows (done) | z-archive/2026-04-unified-document-model.md, b-reference/gateway/workflow.md (Abschnitt UDM) | UDM-Baum, Extract-Node, Loop/Consolidate, Agent-UDM-Tools |
+| Unified Document Model (UDM) & Workflows (done) | z-archive/2026-04-unified-document-model.md, b-reference/platform-core/workflow.md (Abschnitt UDM) | UDM-Baum, Extract-Node, Loop/Consolidate, Agent-UDM-Tools |
| i18n Static Text Elimination (Ph. 1–2 done) | c-work/2-build/2026-04-i18n-static-text-elimination.md | Gateway Feature+Nodes: Dicts → de-Keys; Ph. 3–5 offen |
| Database Health & Data Cleanup (done) | z-archive/2026-04-database-health-and-data-cleanup.md | DB-Registry, FK-Discovery, Orphan-Scanner, Admin-Seite |
| Teamsbot Director Prompts (done) | c-work/4-done/2026-04-teamsbot-director-prompts.md | Private Operator-Prompts (One-Shot/Persistent), Hybrid SPEECH_TEAMS+Agent (`needsAgent`), `_activeServices`-Registry, Reconnect-Persistenz, 26 Backend-Tests |
-| **Typed Action Architecture** (canonical) | b-reference/gateway/architecture.md (Abschnitt 4-Schichten), b-reference/gateway/workflow.md (Abschnitt Typed Action Architecture), b-reference/gateway/ai-agent.md (Tool-Generierung aus Catalog), b-reference/gateway/features/trustee.md, b-reference/frontend-nyla/architecture.md (FlowEditor), c-work/3-validate/2026-04-typed-action-architecture.md, c-work/1-plan/2026-04-typed-action-followups.md | Catalog → Methods → Adapter → Runtime; FeatureInstanceRef-Envelope; Pick-not-Push; `*`-Wildcard; Save-with-errors (AC-9); DB-CLI `script_migrate_feature_instance_refs.py`; Vitest+RTL FE-Tests |
+| **Typed Action Architecture** (canonical) | b-reference/platform-core/architecture.md (Abschnitt 4-Schichten), b-reference/platform-core/workflow.md (Abschnitt Typed Action Architecture), b-reference/platform-core/ai-agent.md (Tool-Generierung aus Catalog), b-reference/platform-core/features/trustee.md, b-reference/ui-nyla/architecture.md (FlowEditor), c-work/3-validate/2026-04-typed-action-architecture.md, c-work/1-plan/2026-04-typed-action-followups.md | Catalog → Methods → Adapter → Runtime; FeatureInstanceRef-Envelope; Pick-not-Push; `*`-Wildcard; Save-with-errors (AC-9); DB-CLI `script_migrate_feature_instance_refs.py`; Vitest+RTL FE-Tests |
## Infrastruktur & Deployment
diff --git a/a-strategy/market/langdock-markteinschaetzung.md b/a-strategy/market/langdock-markteinschaetzung.md
index ddd52f1..5824724 100644
--- a/a-strategy/market/langdock-markteinschaetzung.md
+++ b/a-strategy/market/langdock-markteinschaetzung.md
@@ -2,7 +2,7 @@
**Dokument:** Markt- und Wettbewerbsanalyse mit strategischer Empfehlung
**Stand:** 23. Maerz 2026
-**Bezug:** poweron.swiss, langdock.com, Codebase (`frontend_nyla`, `gateway`)
+**Bezug:** poweron.swiss, langdock.com, Codebase (`ui-nyla`, `platform-core`)
---
@@ -218,7 +218,7 @@ Der Code enthaelt bereits Treuhand, Immobilien und CommCoach. Diese Module gehoe
## 9. Quellen und Methodik
-- **PowerOn:** Homepage poweron.swiss (Stand Maerz 2026) sowie Codeanalyse gateway und frontend_nyla.
+- **PowerOn:** Homepage poweron.swiss (Stand Maerz 2026) sowie Codeanalyse gateway und ui-nyla.
- **Langdock:** Oeffentliche Website langdock.com und Produktunterseiten, Presseartikel (Stand Maerz 2026).
- Keine vertraulichen Materialien verwendet. Fuer verbindliche Pricing- und SLA-Vergleiche ist Herstellerkontakt noetig.
diff --git a/a-strategy/roadmap.md b/a-strategy/roadmap.md
index 4c9da3f..515ce39 100644
--- a/a-strategy/roadmap.md
+++ b/a-strategy/roadmap.md
@@ -62,7 +62,7 @@ PowerOn ist eine **Multi-Mandanten-Plattform**:
---
-## 3. Feature-Übersicht (`gateway/modules/features`)
+## 3. Feature-Übersicht (`platform-core/modules/features`)
### 3.1 Chatbot
diff --git a/b-reference/platform-core/agent-file-bridge.md b/b-reference/platform-core/agent-file-bridge.md
index d2dba3d..9710452 100644
--- a/b-reference/platform-core/agent-file-bridge.md
+++ b/b-reference/platform-core/agent-file-bridge.md
@@ -1,6 +1,6 @@
-
+
# Agent-Tool File Bridge
@@ -56,7 +56,7 @@ flowchart LR
### `_attachFileAsChatDocument` (Single Source of Truth)
-Datei: `gateway/modules/serviceCenter/services/serviceAgent/coreTools/_helpers.py`
+Datei: `platform-core/modules/serviceCenter/services/serviceAgent/coreTools/_helpers.py`
```python
def _attachFileAsChatDocument(
@@ -101,7 +101,7 @@ documentList-Pfad braucht Workflow-Kontext sowieso.
### Workflow-Propagation in `runAgent`
-Datei: `gateway/modules/serviceCenter/services/serviceAgent/mainServiceAgent.py`
+Datei: `platform-core/modules/serviceCenter/services/serviceAgent/mainServiceAgent.py`
`runAgent(workflowId=...)` setzt das Workflow-Objekt jetzt in
`self.services.workflow` UND in `_context.workflow` aller Services
@@ -139,7 +139,7 @@ die einzige Luecke.
## Tolerante `documentList`-Parsing-Schicht
Komplementaer dazu: `coerceDocumentReferenceList` in
-`gateway/modules/datamodels/datamodelDocref.py` parst das, was der LLM
+`platform-core/modules/datamodels/datamodelDocref.py` parst das, was der LLM
am anderen Ende reinschickt -- typischerweise
* `["docItem:", "docItem:"]` (kanonisch),
diff --git a/b-reference/platform-core/ai-agent.md b/b-reference/platform-core/ai-agent.md
index c202edc..fc1d71b 100644
--- a/b-reference/platform-core/ai-agent.md
+++ b/b-reference/platform-core/ai-agent.md
@@ -1,6 +1,6 @@
-
+
# AI Agent & Knowledge Store
@@ -10,7 +10,7 @@ Der **AI-Agent** ist der Service `serviceAgent` (`AgentService`) im **ServiceCen
Darunter liegt **`serviceAi`** als Low-Level-Gateway (Billing-Preflight, Provider-/Modellwahl, Neutralisierung vor Modellaufruf). **`serviceKnowledge`** liefert **RAG**: Indexierung extrahierter Inhalte, semantische Suche (pgvector) und **`buildAgentContext`** für kontextuelle Injektion vor jeder Agent-Runde.
-Der **AI-Core** (`gateway/modules/aicore/`) kapselt Provider-Plugins und die Modellwahl; der Agent nutzt ihn indirekt über `serviceAi` (u. a. `OperationTypeEnum.AGENT`, Embeddings für den Knowledge Store).
+Der **AI-Core** (`platform-core/modules/aicore/`) kapselt Provider-Plugins und die Modellwahl; der Agent nutzt ihn indirekt über `serviceAi` (u. a. `OperationTypeEnum.AGENT`, Embeddings für den Knowledge Store).
---
@@ -52,7 +52,7 @@ Pro Request propagiert der **ServiceCenterContext** u. a. `userId`, `mandateId`,
Datenfluss der Zeitzone:
1. **Browser**: `Intl.DateTimeFormat().resolvedOptions().timeZone` (z. B. `"Europe/Zurich"`).
-2. **Frontend**: `frontend_nyla/src/api.ts` Axios-Interceptor sendet den IANA-Namen als `X-User-Timezone`-Header.
+2. **Frontend**: `ui-nyla/src/api.ts` Axios-Interceptor sendet den IANA-Namen als `X-User-Timezone`-Header.
3. **Gateway**: `_requestContextMiddleware` (`app.py`) liest den Header und schreibt ihn via `_setRequestTimezone` in eine `ContextVar`.
4. **Konsumenten**: `getRequestNow()` / `getRequestTimezone()` aus `modules/shared/timeUtils.py` liefern die Werte für den Prompt-Block (gleiche Pattern wie `_setLanguage` / `_getLanguage`).
5. **Fallback**: Header fehlt oder ist ungültig → `UTC`. Niemals server-seitige Hardcoded-TZ.
@@ -98,7 +98,7 @@ Keine separate Tool-Level-RBAC: Zugriff wird über **Datenbank-RBAC** (z. B. Fil
## FeatureDataAgent: Query-Repair-Loop + Ontologie (ab 2026-05)
-Der Feature Data Sub-Agent (`gateway/modules/serviceCenter/services/serviceAgent/featureDataAgent.py`) ist die Spezialisten-Schicht hinter dem `queryFeatureInstance`-Tool. Er hat seinen eigenen ReAct-Loop und drei Tools (`browseTable`, `queryTable`, `aggregateTable`) gegen jede Feature-Datentabelle. Ab Mai 2026 verhindern zwei Schichten Halluzinationen deterministisch:
+Der Feature Data Sub-Agent (`platform-core/modules/serviceCenter/services/serviceAgent/featureDataAgent.py`) ist die Spezialisten-Schicht hinter dem `queryFeatureInstance`-Tool. Er hat seinen eigenen ReAct-Loop und drei Tools (`browseTable`, `queryTable`, `aggregateTable`) gegen jede Feature-Datentabelle. Ab Mai 2026 verhindern zwei Schichten Halluzinationen deterministisch:
### 1. Pre-execute Validator (`queryValidator.py`)
@@ -127,7 +127,7 @@ Statt freier `_AGENT_DOMAIN_HINTS`-Strings exportieren Features einen **struktur
### 3. Eval-Harness (Phase 1.5)
-`gateway/tests/eval/runTrusteeBenchmark.py` ist ein standalone Runner (kein pytest), der jede Frage des Goldstandards (`tests/fixtures/trusteeBenchmark/questions.yaml`, derzeit 19) gegen einen `FakeFeatureDataProvider` mit synthetischen aber realistischen Trustee-Daten fährt. Drei Modi werden parallel gemessen:
+`platform-core/tests/eval/runTrusteeBenchmark.py` ist ein standalone Runner (kein pytest), der jede Frage des Goldstandards (`tests/fixtures/trusteeBenchmark/questions.yaml`, derzeit 19) gegen einen `FakeFeatureDataProvider` mit synthetischen aber realistischen Trustee-Daten fährt. Drei Modi werden parallel gemessen:
| Mode | Validator | Ontologie | Prompt-Block |
|-----------|-----------|-----------|-----------------------------------------------|
@@ -256,7 +256,7 @@ Zusätzlich zu den unten genannten **Kern-Tools** existieren **dynamische Tools*
| **Model Registry** | `aicoreModelRegistry.py` — registriert Provider-Plugins und Modelle |
| **Model Selector** | `aicoreModelSelector.py` — Auswahl nach Operationstyp, Promptgrösse, Restriktionen, Ranking |
-### Provider-Plugins (Dateien unter `gateway/modules/aicore/`)
+### Provider-Plugins (Dateien unter `platform-core/modules/aicore/`)
| Plugin-Modul | Typische Rolle |
|--------------|----------------|
@@ -414,7 +414,7 @@ Das gleiche Modal wird auf der `RagInventoryPage` aus dem Partial-Banner (`stopp
## Teamsbot-Integration (Hybrid-Routing, kein eigenes Toolset)
-Der Teamsbot ruft den **selben** `AgentService.runAgent` über das ServiceCenter auf — es gibt **kein** Teamsbot-spezifisches Toolset. Aufrufer ist `gateway/modules/features/teamsbot/service.py::_runAgentForMeeting` mit `AgentConfig(maxRounds=5, maxCostCHF=0.10, toolSet="core", initialToolboxes=["core","web"], excludeActionTools=True)`.
+Der Teamsbot ruft den **selben** `AgentService.runAgent` über das ServiceCenter auf — es gibt **kein** Teamsbot-spezifisches Toolset. Aufrufer ist `platform-core/modules/features/teamsbot/service.py::_runAgentForMeeting` mit `AgentConfig(maxRounds=5, maxCostCHF=0.10, toolSet="core", initialToolboxes=["core","web"], excludeActionTools=True)`.
| Trigger | Pfad | Wer ruft `runAgent`? |
|---|---|---|
@@ -435,34 +435,34 @@ Siehe [`b-reference/teams-bot/architecture.md`](../teams-bot/architecture.md) f
| Datei | Rolle |
|-------|--------|
-| `gateway/modules/serviceCenter/registry.py` | Registrierung `agent`, `knowledge`, Dependencies, `objectKey` |
-| `gateway/modules/serviceCenter/services/serviceAgent/mainServiceAgent.py` | `AgentService`, `runAgent`, Prompt-Enrichment, Registry-Orchestrierung |
-| `gateway/modules/serviceCenter/services/serviceAgent/coreTools/registerCore.py` | Orchestrator: delegiert Tool-Registrierung an Domänen-Module |
-| `gateway/modules/serviceCenter/services/serviceAgent/coreTools/_workspaceTools.py` | Dateien, Ordner, Web, Übersetzung |
-| `gateway/modules/serviceCenter/services/serviceAgent/coreTools/_connectionTools.py` | Externe Connections, Upload, Mail |
-| `gateway/modules/serviceCenter/services/serviceAgent/coreTools/_dataSourceTools.py` | DataSource Browse/Search/Download |
-| `gateway/modules/serviceCenter/services/serviceAgent/coreTools/_documentTools.py` | Container, Content-Objects, Vision |
-| `gateway/modules/serviceCenter/services/serviceAgent/coreTools/_mediaTools.py` | Rendering, TTS, STT, Bildgenerierung, Charts, Neutralize, Code |
-| `gateway/modules/serviceCenter/services/serviceAgent/coreTools/_featureSubAgentTools.py` | Feature Data Sub-Agent (queryFeatureInstance) |
-| `gateway/modules/serviceCenter/services/serviceAgent/coreTools/_crossWorkflowTools.py` | Workflow-Historie, Messages, `_CORE_ONLY_TOOLS`-Tagging |
-| `gateway/modules/serviceCenter/services/serviceAgent/agentLoop.py` | ReAct-Loop, Budget, RAG-Injektion, Tool-Dispatch, Summaries |
-| `gateway/modules/serviceCenter/services/serviceAgent/toolRegistry.py` | Registrierung, Dispatch, `readOnly`, Function-Calling-Format |
-| `gateway/modules/serviceCenter/services/serviceAgent/conversationManager.py` | Kontextfenster, Summarization, Systemprompt |
-| `gateway/modules/serviceCenter/services/serviceAgent/datamodelAgent.py` | `AgentConfig`, Events, Trace-Modelle |
-| `gateway/modules/serviceCenter/services/serviceAgent/actionToolAdapter.py` | Workflow-Actions → Agent-Tools (Schema-Generierung; Param-Validierung erfolgt zentral im `ActionExecutor`) |
-| `gateway/modules/workflows/processing/shared/parameterValidation.py` | Universelle Action-Parameter-Validierung + Coercion (Required-Enforcement, Ref-Schema → id-String, Primitive-Coercion); aufgerufen aus `ActionExecutor.executeAction` für **alle** Aufrufpfade (Agent, Workflow-Graph, REST) |
-| `gateway/modules/connectors/connectorDbPostgre.py` | DB-Connector; Read-Methoden raisen `DatabaseQueryError` bei echten Query-Fehlern (Postgres-Adapt, UndefinedTable/Column, OperationalError, …); Empty Result Sets bleiben `[]`/`None` |
-| `gateway/modules/serviceCenter/services/serviceAgent/toolboxRegistry.py` | Toolbox-Definitionen, `requestToolbox` Meta-Tool-Schema |
-| `gateway/modules/serviceCenter/services/serviceAgent/workflowTools.py` | Workflow-Editing-Tools (readWorkflowGraph, addNode, ...) |
-| `gateway/modules/serviceCenter/services/serviceAgent/sandboxExecutor.py` | `executeCode`-Sandbox |
-| `gateway/modules/serviceCenter/services/serviceKnowledge/mainServiceKnowledge.py` | Index, `buildAgentContext`, Workflow-/Round-Memory-Helfer |
-| `gateway/modules/interfaces/interfaceDbKnowledge.py` | DB-Zugriff Knowledge / RAG |
-| `gateway/modules/datamodels/datamodelKnowledge.py` | FileContentIndex, ContentChunk, RoundMemory, WorkflowMemory |
-| `gateway/modules/serviceCenter/services/serviceAi/mainServiceAi.py` | Zentrales Neutralisierungs-Gate vor LLM, Billing, Provider-Aufruf |
-| `gateway/modules/aicore/aicoreModelRegistry.py` | Provider-/Modell-Registry |
-| `gateway/modules/aicore/aicoreModelSelector.py` | Modellauswahl |
-| `gateway/modules/aicore/aicorePlugin*.py` | Provider-Implementierungen |
-| `gateway/modules/datamodels/datamodelAi.py` | `OperationTypeEnum`, `AiCallRequest`, Optionen |
+| `platform-core/modules/serviceCenter/registry.py` | Registrierung `agent`, `knowledge`, Dependencies, `objectKey` |
+| `platform-core/modules/serviceCenter/services/serviceAgent/mainServiceAgent.py` | `AgentService`, `runAgent`, Prompt-Enrichment, Registry-Orchestrierung |
+| `platform-core/modules/serviceCenter/services/serviceAgent/coreTools/registerCore.py` | Orchestrator: delegiert Tool-Registrierung an Domänen-Module |
+| `platform-core/modules/serviceCenter/services/serviceAgent/coreTools/_workspaceTools.py` | Dateien, Ordner, Web, Übersetzung |
+| `platform-core/modules/serviceCenter/services/serviceAgent/coreTools/_connectionTools.py` | Externe Connections, Upload, Mail |
+| `platform-core/modules/serviceCenter/services/serviceAgent/coreTools/_dataSourceTools.py` | DataSource Browse/Search/Download |
+| `platform-core/modules/serviceCenter/services/serviceAgent/coreTools/_documentTools.py` | Container, Content-Objects, Vision |
+| `platform-core/modules/serviceCenter/services/serviceAgent/coreTools/_mediaTools.py` | Rendering, TTS, STT, Bildgenerierung, Charts, Neutralize, Code |
+| `platform-core/modules/serviceCenter/services/serviceAgent/coreTools/_featureSubAgentTools.py` | Feature Data Sub-Agent (queryFeatureInstance) |
+| `platform-core/modules/serviceCenter/services/serviceAgent/coreTools/_crossWorkflowTools.py` | Workflow-Historie, Messages, `_CORE_ONLY_TOOLS`-Tagging |
+| `platform-core/modules/serviceCenter/services/serviceAgent/agentLoop.py` | ReAct-Loop, Budget, RAG-Injektion, Tool-Dispatch, Summaries |
+| `platform-core/modules/serviceCenter/services/serviceAgent/toolRegistry.py` | Registrierung, Dispatch, `readOnly`, Function-Calling-Format |
+| `platform-core/modules/serviceCenter/services/serviceAgent/conversationManager.py` | Kontextfenster, Summarization, Systemprompt |
+| `platform-core/modules/serviceCenter/services/serviceAgent/datamodelAgent.py` | `AgentConfig`, Events, Trace-Modelle |
+| `platform-core/modules/serviceCenter/services/serviceAgent/actionToolAdapter.py` | Workflow-Actions → Agent-Tools (Schema-Generierung; Param-Validierung erfolgt zentral im `ActionExecutor`) |
+| `platform-core/modules/workflows/processing/shared/parameterValidation.py` | Universelle Action-Parameter-Validierung + Coercion (Required-Enforcement, Ref-Schema → id-String, Primitive-Coercion); aufgerufen aus `ActionExecutor.executeAction` für **alle** Aufrufpfade (Agent, Workflow-Graph, REST) |
+| `platform-core/modules/connectors/connectorDbPostgre.py` | DB-Connector; Read-Methoden raisen `DatabaseQueryError` bei echten Query-Fehlern (Postgres-Adapt, UndefinedTable/Column, OperationalError, …); Empty Result Sets bleiben `[]`/`None` |
+| `platform-core/modules/serviceCenter/services/serviceAgent/toolboxRegistry.py` | Toolbox-Definitionen, `requestToolbox` Meta-Tool-Schema |
+| `platform-core/modules/serviceCenter/services/serviceAgent/workflowTools.py` | Workflow-Editing-Tools (readWorkflowGraph, addNode, ...) |
+| `platform-core/modules/serviceCenter/services/serviceAgent/sandboxExecutor.py` | `executeCode`-Sandbox |
+| `platform-core/modules/serviceCenter/services/serviceKnowledge/mainServiceKnowledge.py` | Index, `buildAgentContext`, Workflow-/Round-Memory-Helfer |
+| `platform-core/modules/interfaces/interfaceDbKnowledge.py` | DB-Zugriff Knowledge / RAG |
+| `platform-core/modules/datamodels/datamodelKnowledge.py` | FileContentIndex, ContentChunk, RoundMemory, WorkflowMemory |
+| `platform-core/modules/serviceCenter/services/serviceAi/mainServiceAi.py` | Zentrales Neutralisierungs-Gate vor LLM, Billing, Provider-Aufruf |
+| `platform-core/modules/aicore/aicoreModelRegistry.py` | Provider-/Modell-Registry |
+| `platform-core/modules/aicore/aicoreModelSelector.py` | Modellauswahl |
+| `platform-core/modules/aicore/aicorePlugin*.py` | Provider-Implementierungen |
+| `platform-core/modules/datamodels/datamodelAi.py` | `OperationTypeEnum`, `AiCallRequest`, Optionen |
---
diff --git a/b-reference/platform-core/architecture.md b/b-reference/platform-core/architecture.md
index 04b39a0..85e05f9 100644
--- a/b-reference/platform-core/architecture.md
+++ b/b-reference/platform-core/architecture.md
@@ -10,7 +10,7 @@ Das Gateway ist das Python-Backend der PowerOn-Plattform (FastAPI, PostgreSQL).
## Modulstruktur
-Unter `gateway/modules/` (Kontext-Audit):
+Unter `platform-core/modules/` (Kontext-Audit):
| Modul | Zweck |
|-------|-------|
@@ -82,26 +82,26 @@ Weitere Interface-Dateien im Ordner (z. B. Voice, Tickets, Messaging, Bootstrap)
| Datei / Pfad | Rolle |
|--------------|-------|
-| `gateway/app.py` | FastAPI-Anwendung (generischer Entry-Point), Routen, Middleware, EventManager, Scheduler-MainLoop |
-| `gateway/modules/serviceCenter/__init__.py` | Service Center: `getService`, `preWarm`, RBAC-Registrierung für Service-Objekte |
-| `gateway/modules/serviceCenter/context.py` | `ServiceCenterContext` pro Request |
-| `gateway/modules/serviceCenter/registry.py` | Service-Registry (CORE / IMPORTABLE) |
-| `gateway/modules/serviceCenter/resolver.py` | Auflösung von Service-Instanzen inkl. Cache |
-| `gateway/modules/serviceHub/__init__.py` | Hub / DI, `PublicService`-Wrapper für kontrollierte Oberflächen |
-| `gateway/modules/routes/*.py` | HTTP-Endpunkte, Aufruf in Richtung Service Center / Features (inkl. `routeI18n.py` für DB-backed i18n mit AI-Übersetzung) |
-| `gateway/modules/interfaces/*.py` | Stabile Verträge und DB-Zugriffe (keine direkte Vendor-Logik in Services) |
-| `gateway/modules/connectors/*.py` | Vendor-spezifische Adapter (Auth, Transport, Mapping) |
-| `gateway/modules/security/*` | RBAC-Auswertung, RBAC-Katalog, Root-Access |
-| `gateway/modules/auth/*` | CSRF, Token-Refresh-Middleware, JWT, OAuth |
-| `gateway/modules/shared/*` | Querschnitt: Konfiguration, Audit-Logging, Events, Utilities |
-| `gateway/modules/system/registry.py` | Feature-Discovery, Router-Laden, Katalog-Registrierung beim App-Start |
-| `gateway/modules/workflows/workflowManager.py` | Zentrale Workflow-Steuerung (Workspace/Chat Workflows) |
-| `gateway/modules/workflows/automation2/executionEngine.py` | Graph-Execution-Engine: topoSort, Transit-Routing, `_normalizeToSchema` nach Execute, `flow.merge`-Wait, Resume-Schema-Validierung |
-| `gateway/modules/workflows/scheduler/mainScheduler.py` | Konsolidierter Workflow-Scheduler |
-| `gateway/modules/interfaces/interfaceBootstrap.py` | System-Bootstrap (Templates, Billing, Stripe) |
-| `gateway/modules/interfaces/interfaceVoiceObjects.py` | Fassade Google STT/TTS, Billing-Callback Streaming |
-| `gateway/modules/connectors/connectorVoiceGoogle.py` | Google Speech v1 + Translation + TTS-Client |
-| `gateway/modules/routes/routeVoiceGoogle.py` | `/voice-google/*` inkl. STT-Streaming-WebSocket |
+| `platform-core/app.py` | FastAPI-Anwendung (generischer Entry-Point), Routen, Middleware, EventManager, Scheduler-MainLoop |
+| `platform-core/modules/serviceCenter/__init__.py` | Service Center: `getService`, `preWarm`, RBAC-Registrierung für Service-Objekte |
+| `platform-core/modules/serviceCenter/context.py` | `ServiceCenterContext` pro Request |
+| `platform-core/modules/serviceCenter/registry.py` | Service-Registry (CORE / IMPORTABLE) |
+| `platform-core/modules/serviceCenter/resolver.py` | Auflösung von Service-Instanzen inkl. Cache |
+| `platform-core/modules/serviceHub/__init__.py` | Hub / DI, `PublicService`-Wrapper für kontrollierte Oberflächen |
+| `platform-core/modules/routes/*.py` | HTTP-Endpunkte, Aufruf in Richtung Service Center / Features (inkl. `routeI18n.py` für DB-backed i18n mit AI-Übersetzung) |
+| `platform-core/modules/interfaces/*.py` | Stabile Verträge und DB-Zugriffe (keine direkte Vendor-Logik in Services) |
+| `platform-core/modules/connectors/*.py` | Vendor-spezifische Adapter (Auth, Transport, Mapping) |
+| `platform-core/modules/security/*` | RBAC-Auswertung, RBAC-Katalog, Root-Access |
+| `platform-core/modules/auth/*` | CSRF, Token-Refresh-Middleware, JWT, OAuth |
+| `platform-core/modules/shared/*` | Querschnitt: Konfiguration, Audit-Logging, Events, Utilities |
+| `platform-core/modules/system/registry.py` | Feature-Discovery, Router-Laden, Katalog-Registrierung beim App-Start |
+| `platform-core/modules/workflows/workflowManager.py` | Zentrale Workflow-Steuerung (Workspace/Chat Workflows) |
+| `platform-core/modules/workflows/automation2/executionEngine.py` | Graph-Execution-Engine: topoSort, Transit-Routing, `_normalizeToSchema` nach Execute, `flow.merge`-Wait, Resume-Schema-Validierung |
+| `platform-core/modules/workflows/scheduler/mainScheduler.py` | Konsolidierter Workflow-Scheduler |
+| `platform-core/modules/interfaces/interfaceBootstrap.py` | System-Bootstrap (Templates, Billing, Stripe) |
+| `platform-core/modules/interfaces/interfaceVoiceObjects.py` | Fassade Google STT/TTS, Billing-Callback Streaming |
+| `platform-core/modules/connectors/connectorVoiceGoogle.py` | Google Speech v1 + Translation + TTS-Client |
+| `platform-core/modules/routes/routeVoiceGoogle.py` | `/voice-google/*` inkl. STT-Streaming-WebSocket |
## Google Voice (STT / TTS)
@@ -116,7 +116,7 @@ Das Gateway nutzt ein DB-basiertes Sprachsystem (`UiLanguageSet`). Alle UI-sicht
| `i18nRegistry.py` | `modules/shared/` | `t()`, `resolveText()`, `@i18nModel` Decorator, `_REGISTRY`, `_CACHE`, `_setLanguage`, Boot-Sync |
| `attributeUtils.py` | `modules/shared/` | `getModelLabels()` / `getModelLabel()` lesen aus `i18nRegistry.MODEL_LABELS`, nutzen `resolveText()` |
| `routeI18n.py` | `modules/routes/` | Admin-API: Sprachset-CRUD, AI-Uebersetzung, xx-Sync, TextMultilingual-Batch-Uebersetzung |
-| `app.py` | `gateway/` | Boot-Hooks (`_syncRegistryToDb`, `_loadCache`), Request-Middleware (`_setLanguage`) |
+| `app.py` | `platform-core/` | Boot-Hooks (`_syncRegistryToDb`, `_loadCache`), Request-Middleware (`_setLanguage`) |
### Architektur-Regeln
@@ -167,7 +167,7 @@ Felder vom Typ `TextMultilingual` speichern Benutzertexte mehrsprachig. `xx` ist
Hintergrundjobs laufen ausserhalb des Request-Kontexts und haben deshalb keinen `_CURRENT_LANGUAGE`-Wert. Walker schreiben deshalb einen **strukturierten i18n-Payload** in die DB und der Route-Handler uebersetzt server-side beim Read -- der Frontend ruft `t()` nie auf Backend-supplied Werten auf (Regel #2).
-**1. Walker schreibt strukturiert** (`gateway/modules/serviceCenter/.../subConnectorSync*.py`):
+**1. Walker schreibt strukturiert** (`platform-core/modules/serviceCenter/.../subConnectorSync*.py`):
```python
progressCb(
@@ -222,14 +222,14 @@ UI-seitig sind diese Endpunkte unter `/mandates/{m}/trustee/{i}/data-tables[?tab
## Typed Action Architecture (4-Schichten)
-Seit Phase 1-5 (April 2026) folgt jede Workflow-Aktion einem strikten 4-Schichten-Modell. Quellen: `wiki/c-work/3-validate/2026-04-typed-action-architecture.md`, Tests in `gateway/tests/unit/workflows/`, `gateway/tests/integration/trustee/`.
+Seit Phase 1-5 (April 2026) folgt jede Workflow-Aktion einem strikten 4-Schichten-Modell. Quellen: `wiki/c-work/3-validate/2026-04-typed-action-architecture.md`, Tests in `platform-core/tests/unit/workflows/`, `platform-core/tests/integration/trustee/`.
| Schicht | Modul / Verantwortung | Type-Anker |
|---------|-----------------------|------------|
-| **1. Editor (Frontend)** | `frontend_nyla/src/components/FlowEditor/nodes/shared/` -- `RequiredAttributePicker`, `DataPicker` (strict-mode + Object-Drill-Down mit `*`-Wildcard), `paramValidation.ts` | Action-Signaturen aus dem Catalog (`/api/automation2/catalog`) |
-| **2. Action / Method** | `gateway/modules/workflows/methods/method/actions/*.py` (`extractFromFiles`, `processDocuments`, `syncToAccounting`, ...) | Typisierte Pydantic-Eingabe + `ActionResult`-Output, `FeatureInstanceRef` als Discriminator-Envelope |
-| **3. Adapter** | `gateway/modules/features/graphicalEditor/nodeDefinitions/registerNodeWithMethod` -- leitet Node-Definitions aus Action-Signaturen ab, liefert Snapshot fuer den Editor (`adapter_validator`) | Snapshot-Test `test_staticNodesHaveNoDriftAgainstLiveMethods` (`_KNOWN_ADAPTER_DRIFTS = frozenset()`) |
-| **4. Runtime** | `gateway/modules/workflows/automation2/executionEngine.py` -- `executeGraph` mit `materializeFeatureInstanceRefs` + `materializeConnectionRefs`, `_unwrapTypedRef` fuer Action-Calls | Migrations-Helper in `automation2/featureInstanceRefMigration.py` + DB-CLI `scripts/script_migrate_feature_instance_refs.py` |
+| **1. Editor (Frontend)** | `ui-nyla/src/components/FlowEditor/nodes/shared/` -- `RequiredAttributePicker`, `DataPicker` (strict-mode + Object-Drill-Down mit `*`-Wildcard), `paramValidation.ts` | Action-Signaturen aus dem Catalog (`/api/automation2/catalog`) |
+| **2. Action / Method** | `platform-core/modules/workflows/methods/method/actions/*.py` (`extractFromFiles`, `processDocuments`, `syncToAccounting`, ...) | Typisierte Pydantic-Eingabe + `ActionResult`-Output, `FeatureInstanceRef` als Discriminator-Envelope |
+| **3. Adapter** | `platform-core/modules/features/graphicalEditor/nodeDefinitions/registerNodeWithMethod` -- leitet Node-Definitions aus Action-Signaturen ab, liefert Snapshot fuer den Editor (`adapter_validator`) | Snapshot-Test `test_staticNodesHaveNoDriftAgainstLiveMethods` (`_KNOWN_ADAPTER_DRIFTS = frozenset()`) |
+| **4. Runtime** | `platform-core/modules/workflows/automation2/executionEngine.py` -- `executeGraph` mit `materializeFeatureInstanceRefs` + `materializeConnectionRefs`, `_unwrapTypedRef` fuer Action-Calls | Migrations-Helper in `automation2/featureInstanceRefMigration.py` + DB-CLI `scripts/script_migrate_feature_instance_refs.py` |
Konsequenzen:
diff --git a/b-reference/platform-core/automation.md b/b-reference/platform-core/automation.md
index 048996d..c799b8b 100644
--- a/b-reference/platform-core/automation.md
+++ b/b-reference/platform-core/automation.md
@@ -185,7 +185,7 @@ Rollen werden beim Feature-Start via `_syncTemplateRolesToDb()` synchronisiert (
## System-Automatisierung (Meine Sicht)
-Mandatsuebergreifende Uebersicht im Frontend: Route **`/automations`** (`frontend_nyla` → `AutomationsDashboardPage`), Eintrag unter **Meine Sicht** in der Navigation.
+Mandatsuebergreifende Uebersicht im Frontend: Route **`/automations`** (`ui-nyla` → `AutomationsDashboardPage`), Eintrag unter **Meine Sicht** in der Navigation.
| Tab | Inhalt |
|-----|--------|
@@ -207,7 +207,7 @@ Instanzspezifische Verwaltung unveraendert unter **`/api/workflows/{instanceId}/
## Schluessel-Dateien
-| Bereich | Pfade (`gateway/modules/`) |
+| Bereich | Pfade (`platform-core/modules/`) |
|---------|--------------------------|
| Feature-Definition | `features/graphicalEditor/mainGraphicalEditor.py` |
| API-Routes | `features/graphicalEditor/routeFeatureGraphicalEditor.py` |
diff --git a/b-reference/platform-core/billing.md b/b-reference/platform-core/billing.md
index 1fa678c..e675b26 100644
--- a/b-reference/platform-core/billing.md
+++ b/b-reference/platform-core/billing.md
@@ -1,4 +1,4 @@
-
+
@@ -161,9 +161,9 @@ Typische Trigger: Stripe-Webhooks (`checkout.session.completed`, `invoice.paymen
| `features/workspace/routeFeatureWorkspace.py` | Pattern für Billing-/Fehlerantworten an UI |
| `aicore/aicoreModelSelector.py` | Filter nach erlaubten Providern |
| `aicore/*Plugin*.py` | `connectorType`, Preislogik CHF |
-| `frontend_nyla/src/pages/billing/*` | Dashboard, Admin, Stripe-Flow, Subscription-UI |
-| `frontend_nyla/src/hooks/useBilling.ts` | Billing-Settings / Subscription-Daten |
-| `frontend_nyla/src/pages/views/workspace/useWorkspace.ts` | `billingUiPath` / User-Actions — gleiches Muster für Subscription-Pfade |
+| `ui-nyla/src/pages/billing/*` | Dashboard, Admin, Stripe-Flow, Subscription-UI |
+| `ui-nyla/src/hooks/useBilling.ts` | Billing-Settings / Subscription-Daten |
+| `ui-nyla/src/pages/views/workspace/useWorkspace.ts` | `billingUiPath` / User-Actions — gleiches Muster für Subscription-Pfade |
---
diff --git a/b-reference/platform-core/features/trustee.md b/b-reference/platform-core/features/trustee.md
index c2887d0..9685704 100644
--- a/b-reference/platform-core/features/trustee.md
+++ b/b-reference/platform-core/features/trustee.md
@@ -1,6 +1,6 @@
-
+
# Feature: Trustee
@@ -31,10 +31,10 @@ Alle drei Actions konsumieren `featureInstanceId` als typisierten **`FeatureInst
| Modul | Pfad | Verantwortung |
|-------|------|---------------|
-| Method (Workflow) | `gateway/modules/workflows/methods/methodTrustee/` | `MethodTrustee` registriert die fuenf Actions; jede Action liegt in `actions/.py` mit eigener typisierter Eingabe + `ActionResult`-Output. |
-| Feature-Domain | `gateway/modules/features/trustee/` | Datenmodell (`datamodelTrustee.py`), Interface (`interfaceTrustee.py`), Route-Module (`routeFeatureTrustee*.py`), `AccountingBridge` (`accountingBridge.py`). |
-| Editor-Adapter | `gateway/modules/features/graphicalEditor/nodeDefinitions/trustee.py` | Bindet die fuenf Actions als Editor-Nodes (`trustee.extractFromFiles`, ...) -- Ports + Pflicht-Felder werden via `registerNodeWithMethod` aus den Action-Signaturen abgeleitet. |
-| Frontend | `frontend_nyla/src/components/Trustee/` + `TrusteeDataTablesView` | UI fuer Document/Position-Verwaltung, Daten-Tabellen, Connector-Konfiguration. |
+| Method (Workflow) | `platform-core/modules/workflows/methods/methodTrustee/` | `MethodTrustee` registriert die fuenf Actions; jede Action liegt in `actions/.py` mit eigener typisierter Eingabe + `ActionResult`-Output. |
+| Feature-Domain | `platform-core/modules/features/trustee/` | Datenmodell (`datamodelTrustee.py`), Interface (`interfaceTrustee.py`), Route-Module (`routeFeatureTrustee*.py`), `AccountingBridge` (`accountingBridge.py`). |
+| Editor-Adapter | `platform-core/modules/features/graphicalEditor/nodeDefinitions/trustee.py` | Bindet die fuenf Actions als Editor-Nodes (`trustee.extractFromFiles`, ...) -- Ports + Pflicht-Felder werden via `registerNodeWithMethod` aus den Action-Signaturen abgeleitet. |
+| Frontend | `ui-nyla/src/components/Trustee/` + `TrusteeDataTablesView` | UI fuer Document/Position-Verwaltung, Daten-Tabellen, Connector-Konfiguration. |
---
@@ -48,7 +48,7 @@ Alle drei Actions konsumieren `featureInstanceId` als typisierten **`FeatureInst
| `trustee.refreshAccountingData` | `featureInstanceId` | `ActionResult` (`success`, `error`) | Refresht Kontenplan + Saldo + Kontakte aus dem Buchhaltungssystem. |
| `trustee.queryData` | `featureInstanceId`, freie Filter-Argumente | `ActionResult` mit Query-Resultat | Read-only Zugriff fuer den AI-Agent (`dynamicMode=True`). |
-> Schemas leben in `gateway/modules/datamodels/datamodelWorkflowActions.py` + `gateway/modules/features/trustee/datamodelTrustee.py`. **Single source of truth** fuer Editor + AI-Agent + Adapter ist die Action-Signatur (`/api/automation2/catalog`).
+> Schemas leben in `platform-core/modules/datamodels/datamodelWorkflowActions.py` + `platform-core/modules/features/trustee/datamodelTrustee.py`. **Single source of truth** fuer Editor + AI-Agent + Adapter ist die Action-Signatur (`/api/automation2/catalog`).
---
@@ -77,7 +77,7 @@ Seit Phase 5 ist `featureInstanceId` ueberall als **typisierter Envelope** persi
"featureCode": "trustee" }
```
-- **Schreiben:** `materializeFeatureInstanceRefs` (`automation2/featureInstanceRefMigration.py`) wandelt rohe UUIDs **bei jedem Run** automatisch ins Envelope-Format. Optional persistiert `gateway/scripts/script_migrate_feature_instance_refs.py` die Aenderung in der DB (`--dry-run` Default).
+- **Schreiben:** `materializeFeatureInstanceRefs` (`automation2/featureInstanceRefMigration.py`) wandelt rohe UUIDs **bei jedem Run** automatisch ins Envelope-Format. Optional persistiert `platform-core/scripts/script_migrate_feature_instance_refs.py` die Aenderung in der DB (`--dry-run` Default).
- **Lesen:** `_unwrapTypedRef` (`graphUtils`) entpackt den Envelope vor dem Action-Call -- Trustee-Actions sehen weiterhin `featureInstanceId: ""` und brauchen keinen Patch.
- **Discriminator:** `featureCode = "trustee"` macht die Trustee-Variante eindeutig (Editor zeigt `[trustee]