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]