From b7fc2e03ca8637d44ce141052218cb608323b8fb Mon Sep 17 00:00:00 2001 From: ValueOn AG Date: Thu, 4 Jun 2026 17:48:24 +0200 Subject: [PATCH] kp --- ...tion-connectors-und-datenquellen-seiten.md | 222 ++++++++++++++++++ c-work/_CHANGELOG.md | 4 + d-guides/deployment/poweron-sec.kdbx | Bin 29310 -> 29582 bytes 3 files changed, 226 insertions(+) create mode 100644 c-work/1-plan/2026-06-umsystem-integration-connectors-und-datenquellen-seiten.md diff --git a/c-work/1-plan/2026-06-umsystem-integration-connectors-und-datenquellen-seiten.md b/c-work/1-plan/2026-06-umsystem-integration-connectors-und-datenquellen-seiten.md new file mode 100644 index 0000000..aea6b23 --- /dev/null +++ b/c-work/1-plan/2026-06-umsystem-integration-connectors-und-datenquellen-seiten.md @@ -0,0 +1,222 @@ + + + + +# Umsystem-Integration: generische Connectors + kundenspezifische Workflows + Datenquellen-Seiten + +## Beschreibung und Kontext + +Ein Kunde schreibt seine Rechnungen in einem externen System (**SelectLine**, REST-API vorhanden) und möchte, dass diese Rechnungen **ins RMA (Run My Accounts)** geladen werden. Die Frage des Kunden: «Kann PowerOn dafür einfach eine Schnittstelle machen?» + +Der konkrete Fall ist ein Spezialfall eines generischen Musters: PowerOn soll **proprietäre Umsysteme** (ERP, Fakturierung, Lohn, …) anbinden. Wir haben die Logik dafür im Prinzip schon – im Feature **Trustee** sind Buchhaltungssysteme (ABACUS, Bexio, Banana, **RMA**) über das **AccountingBridge-Connector-Framework** angebunden (`platform-core/modules/features/trustee/accounting/`). RMA ist bereits ein vollwertiger Ziel-Connector (inkl. `pushBooking`, `pushInvoice`, Beleg-Upload). + +**Kern-Architekturvorgabe (Auftrag):** Es soll **keine kundenspezifische Logik im Code** entstehen. Wir trennen sauber in: + +1. **Generische Bausteine** (Code, wiederverwendbar, ohne Kundennamen): Connectors, kanonische Datenmodelle, generische Workflow-Nodes. +2. **Kundenspezifische Logik** (als **Daten** = Workflow-Graph + Config, nicht als Code): die konkrete Verdrahtung «SelectLine → Mapping → RMA» pro Mandant/Instanz im Graphical Editor. + +Business-Treiber: +- Konkreter Kundenwunsch (Termin nächste Woche). +- Wiederverwendbares Muster für jedes weitere Umsystem → Sales-Asset und skalierbare Onboarding-Story. +- Vermeidung von Wartungs-Hölle durch `if kunde == X`-Code. + +**Abgrenzung — NICHT als Personal Source einbinden.** Personal Sources (UDB-`DataSource`-Familie: SharePoint, Drive, Infomaniak) sind **user-privat** und für **unstrukturierte RAG-Daten** gedacht (`wiki/b-reference/platform/unified-data-bar.md`). Eine Debitorenrechnung von SelectLine nach RMA ist ein **transaktionaler Buchungs-Vorgang auf Mandant-/Feature-Ebene** mit Dedup, Sync-Audit und verschlüsselten Credentials pro Mandant. Das gehört in das **Trustee-Connector-Framework** (`featureInstanceId`-scoped), nicht in Personal Sources. + +## Fokus und kritische Details + +- **Trennung Baustein ↔ Kundenlogik ist das eigentliche Ziel.** Jede Versuchung, Kunden-/Systemspezifika fest zu verdrahten (Konten-Mappings, Filter, Belegart-Auswahl), muss in **Config/Workflow-Graph** wandern, nicht in den Connector. +- **Connector = reiner API-Adapter.** Auth, Lesen/Schreiben von Ressourcen, Mapping zwischen nativem API-Format und kanonischem Modell. Keine Geschäftsregeln, keine Kundennamen, keine Konto-Zuordnungen. +- **Richtung.** Bestehende AccountingBridge ist heute **push-orientiert** (lokale `TrusteePosition` → extern). SelectLine ist eine **Quelle** (lesen). Wir brauchen einen sauberen **Import-/Source-Pfad** und eine **Rolle** (`source` / `target`) auf der Config, weil eine Instanz künftig *eine Quelle* **und** *ein Ziel* hat. +- **On-Prem-Erreichbarkeit (grösstes Risiko, extern abhängig).** Die SelectLine-API läuft typischerweise beim Kunden (Doku zeigt `http://localhost/...`). Unsere Cloud muss sie erreichen → VPN / Reverse-Tunnel / fester Endpoint / On-Site-Agent. Klärt Aufwand und Sicherheit. +- **Datenschutz/Neutralisierung.** Rechnungen enthalten Personendaten. Pfade, die durch das LLM laufen (z. B. KI-gestütztes Konten-Mapping), müssen über das Neutralisierungs-Gate (`wiki/b-reference/platform/neutralization.md`). +- **Fragile Stellen:** `accountingBridge.py` (Orchestrierung, Dedup, Sync-Records) ist heute auf Position→Push zugeschnitten; der Source-Pfad muss additiv ergänzt werden, ohne den bestehenden Push-Pfad zu brechen. `TrusteeAccountingConfig` erlaubt heute nur **eine aktive** Config pro Instanz (siehe `getActiveConfig`). + +## Ziel und Nicht-Ziele + +- **Ziel:** Generisches, plugin-basiertes **Umsystem-Connector-Framework** (Erweiterung des bestehenden AccountingBridge-Musters), mit dem ein neues System = **eine Connector-Datei + Config**, ohne Architekturänderung. +- **Ziel:** **SelectLine-Connector** (Quelle): Login, Lesen von Ausgangsrechnungen (`Document`/`DocumentKind`), Kunden, Konten, Steuerschlüssel. +- **Ziel:** **Source→Target-Import** als **generische Workflow-Nodes**, sodass «SelectLine → RMA» ein **Workflow-Graph** ist (kundenspezifisch als Daten), kein Code. +- **Ziel:** **UI-Muster «Datenquelle = Seite»** im Feature Trustee: die Seite «Buchhaltungssystem» existiert; das Muster wird generisch, sodass weitere Kategorien (z. B. «Saläre», «Fakturierung») als eigene Seiten dazukommen können. +- **Explizit NICHT:** kundenspezifische Logik im Code (`if kunde == …`). +- **Explizit NICHT:** SelectLine als Personal Source. +- **Explizit NICHT:** Aufbau eines eigenen ERP/Faktura-Systems – wir konsumieren/transferieren nur. +- **Explizit NICHT (vorerst):** voll generisches «Integrations-Framework für alles». Wir bleiben im Trustee-Kontext und verallgemeinern erst, wenn die zweite Kategorie (Saläre) real wird (YAGNI – siehe «Meine Gedanken»). + +## Architektur: generische Bausteine vs. kundenspezifische Logik + +Vier Schichten. Schicht 1–3 sind **Code (generisch)**, Schicht 4 ist **Daten (kundenspezifisch)**. + +``` +┌─ Schicht 4: WORKFLOW-GRAPH + CONFIG (Daten, pro Instanz, im Graphical Editor) ─┐ +│ "SelectLine → mappe Konto 1100→1100, Belegart=AR, seit lastSync → RMA (GL)" │ +│ Konto-Mappings · Filter · Zeitplan · Quelle/Ziel-Auswahl → KUNDENSPEZIFISCH │ +└─────────────────────────────────────────────────────────────────────────────────┘ + ▲ konsumiert generische Nodes, enthält KEINEN Code +┌─ Schicht 3: WORKFLOW-NODES (generische Typed Actions) ─────────────────────────┐ +│ source.fetchInvoices · transform.mapAccounts · target.pushBooking · attachDoc │ +└─────────────────────────────────────────────────────────────────────────────────┘ + ▲ arbeiten ausschliesslich auf kanonischen Modellen +┌─ Schicht 2: KANONISCHE MODELLE ─────────────────────────────────────────────────┐ +│ AccountingBooking / AccountingBookingLine / Invoice / Contact / Chart … │ +│ (bereits vorhanden in accountingConnectorBase.py) │ +└─────────────────────────────────────────────────────────────────────────────────┘ + ▲ Connectors übersetzen natives API-Format ⇄ kanonisch +┌─ Schicht 1: CONNECTORS (generische API-Adapter, plugin-discovery) ─────────────┐ +│ accountingConnectorRma.py · accountingConnectorSelectline.py · …bexio/abacus │ +│ nur Auth + Lesen/Schreiben + Mapping. KEINE Kundenlogik. │ +└─────────────────────────────────────────────────────────────────────────────────┘ +``` + +### Schicht 1 — Connectors (neu: SelectLine) + +- Neue Datei `platform-core/modules/features/trustee/accounting/connectors/accountingConnectorSelectline.py`, implementiert `BaseAccountingConnector` (`accountingConnectorBase.py`). Auto-Discovery über `accountingRegistry.py` (Pattern `accountingConnector*.py`) → **keine Registrierungs-Änderung nötig**. +- Methoden: `testConnection` (Login + GET), `getChartOfAccounts` (Konten), `getCustomers`/`getVendors`, und die Lese-Seite für Belege (siehe «Source-Capability» unten). +- Config-Felder (`getRequiredConfigFields`): `baseUrl`, `username`, `password` (secret), optional `mandant`. Verschlüsselt wie alle Configs (`_decryptConfig`). +- **Source-Capability:** Da die Base heute primär Push/Read-Journal kennt, ergänzen wir eine schlanke, optionale Lesemethode für Belege, z. B. `getOutgoingInvoices(config, dateFrom, sinceCursor) -> List[Invoice]` (Default `[]` in der Base; nur Source-Connectors überschreiben). Alternativ Wiederverwendung von `getJournalEntries` – Entscheidung siehe «Offene Fragen». + +### Schicht 2 — kanonische Modelle (vorhanden) + +`AccountingBooking`, `AccountingBookingLine`, `AccountingChart`, `SyncResult` etc. in `accountingConnectorBase.py`. Für reine Debitoren-Fakturen ggf. ein kanonisches `Invoice`-Modell ergänzen (Header + Lines + Kunde + Steuer), falls RMA als **AR-Rechnung** (offener Posten) statt GL-Buchung beschrieben werden soll. + +### Schicht 3 — Workflow-Nodes (generisch, Typed Actions) + +Analog zu den bestehenden Trustee-Actions (`trustee.extractFromFiles` → `processDocuments` → `syncToAccounting`). Neue, **system-agnostische** Nodes: + +- `integration.fetchFromSource` — zieht Belege/Buchungen aus dem **konfigurierten Quell-Connector** (Quelle = Config, nicht hartcodiert) → kanonische Liste. +- `integration.mapAccounts` — wendet eine **Mapping-Tabelle** (Config/Daten) auf Konten/Steuercodes an. +- `integration.pushToTarget` — schreibt über den **konfigurierten Ziel-Connector** (`pushBooking`/`pushInvoice` + Beleg-Upload, bereits in RMA vorhanden). + +Diese Nodes erscheinen über den Editor-Adapter (`graphicalEditor/nodeDefinitions/`) als Bausteine im Graphical Editor. Die Pipeline `trigger → fetchFromSource(SelectLine) → mapAccounts → pushToTarget(RMA)` ersetzt damit für strukturierte Quellen den KI-Extraktionsschritt (günstiger + zuverlässiger). + +### Schicht 4 — Workflow-Graph + Config (kundenspezifisch, als Daten) + +- Der konkrete Kundenfluss ist ein **Workflow-Template/Graph** pro Feature-Instanz (persistiert), gebaut im Graphical Editor. Konten-Mappings, Filter (nur Ausgangsrechnungen, nur «seit letztem Sync»), Buchungsart, Zeitplan = **Config-Datensätze**. +- Ergebnis: zwei Kunden mit SelectLine→RMA, aber unterschiedlichem Kontenplan-Mapping = **zwei Graphen/Configs, ein Code**. + +### Datenmodell-Änderung + +`TrusteeAccountingConfig` um **`role`** (`source` | `target`) erweitern, sodass pro Instanz mehrere Connector-Configs koexistieren (eine Quelle + ein Ziel). `getActiveConfig` / `_resolveConnectorAndConfig` entsprechend um `role` filtern. Optional: `connectorCategory` (`accounting` | `payroll` | `invoicing`) für die UI-Seitenzuordnung. + +## SelectLine-API – Befund (Kurz) + +Geprüft anhand hilfe.selectline.ch und der Demo-API (demo.slmobile.de): + +- REST, JSON/XML. Auth: `POST /Login` mit `{username,password}` → `AccessToken`/`LoginId`; danach Header `Authorization: LoginId ` (Session-Token, Re-Login bei Ablauf). +- Relevante Ressourcen: **`Document` / `DocumentKind`** (Belegkette inkl. Ausgangsrechnungen), `Customers`/`Vendors` (Geschäftspartner), `Konten` + `Kontensalden`, `Journale`, `Offene Posten`, `Steuerschlüssel`, `Kostenrechnung`, `Bankassistent` (camt.053-Import). +- Betriebsmodell: i. d. R. **on-premise** beim Kunden → Erreichbarkeit klären (Risiko oben). +- Swagger-/OpenAPI-Beschreibung pro Installation herunterladbar → exaktes Beleg-Schema beim Kunden verifizieren. + +## UI-Konzept: «Datenquelle = Seite» + +Heute ist «Buchhaltungs-Einstellungen» eine eigene Seite im Trustee-Feature: +- Registriert als UI-Object `ui.feature.trustee.settings` (`meta.area="settings"`, `admin_only`) in `mainTrustee.py`. +- Gemappt auf `TrusteeAccountingSettingsView` in `ui-nyla/src/pages/FeatureView.tsx` (`VIEW_COMPONENTS.trustee.settings`). +- Innen bereits Tabs: «Verbindungseinstellungen» + «Buchhaltungsdaten importieren» (Connector wählen → Credentials → Test → Import). + +**Vorschlag:** dieses Muster zu einem **generischen «Datenquellen-Seiten»-Pattern** verallgemeinern – eine Seite pro **Kategorie** von Umsystem: + +| Seite (UI-Area) | Kategorie | Connectors (Beispiele) | Kanonisches Modell | +|---|---|---|---| +| Buchhaltungssystem (existiert) | `accounting` | RMA, Bexio, Abacus, **SelectLine (Quelle)** | AccountingBooking | +| **Saläre** (Idee) | `payroll` | SwissSalary, Abacus Lohn, Swissdec-konform | PayrollEntry (neu) | +| Fakturierung (Idee) | `invoicing` | SelectLine, Bexio | Invoice | + +Pro Seite identischer Aufbau (**eine generische React-Komponente, parametrisiert über `category`**): +1. **Verbindungen** — Connectors der Kategorie listen, Rolle (Quelle/Ziel) wählen, Credentials, Test (wiederverwendet die bestehende `TrusteeAccountingSettingsView`-Mechanik, generalisiert). +2. **Datenfluss/Import** — Workflow-Template wählen/starten (= Schicht-4-Graph), Zeitplan, Status/Audit. +3. **Daten** — eingelesene Datensätze (read-only Spiegel). + +Konkret: +- Generische `IntegrationSettingsView` (aus `TrusteeAccountingSettingsView` extrahiert), die `category` als Prop bekommt. +- Neue UI-Areas in `mainTrustee.py` (z. B. `ui.feature.trustee.payroll`) + Mapping in `FeatureView.tsx` → **gleiche** Komponente, andere `category`. +- «Saläre» ist bewusst **nur ein Platzhalter-Beispiel**, um zu zeigen, dass das Muster skaliert; nicht Teil der ersten Umsetzung. + +## Betroffene Module + +- **Gateway (platform-core):** + - `features/trustee/accounting/connectors/accountingConnectorSelectline.py` (neu). + - `accounting/accountingConnectorBase.py` (optionale Source-Lesemethode, Default `[]`). + - `accounting/accountingBridge.py` (additiver Import-/Source-Pfad; `role`-Auflösung). + - `datamodelFeatureTrustee.py` (`TrusteeAccountingConfig.role` [+ optional `connectorCategory`]) → **DB-Migration: ja**. + - `workflows/methods/methodTrustee/actions/` + `graphicalEditor/nodeDefinitions/` (generische Nodes `integration.fetchFromSource` / `mapAccounts` / `pushToTarget`). + - `mainTrustee.py` (UI-Areas, RBAC-Objekte, Workflow-Templates). +- **Frontend (ui-nyla):** + - `TrusteeAccountingSettingsView` → generische `IntegrationSettingsView` (`category`-Prop). + - `FeatureView.tsx` Registry + `mainTrustee` UI-Areas für weitere Seiten. + - `trusteeApi.ts` (Connector-Listing nach Kategorie, Rolle source/target). +- **DB-Migration:** ja (`role`, optional `connectorCategory`). +- **Andere:** Neutralisierung (falls KI-Mapping), Audit/Billing (Sync-Volumen). + +## Entscheidungen + +| Datum | Entscheidung | Begründung | +|-------|-------------|------------| +| 2026-06-04 | Umsystem als Trustee-Connector, **nicht** als Personal Source | Transaktional, mandant-scoped, Dedup/Audit/verschlüsselte Credentials bereits in AccountingBridge | +| 2026-06-04 | Kundenlogik als Workflow-Graph + Config, nicht im Code | Auftrag: keine kundenspezifische Logik im Code; nutzt bestehende Typed-Action-/Editor-Architektur | +| 2026-06-04 | UI-Muster «Datenquelle = Seite» pro Kategorie, eine generische Komponente | Skaliert auf Saläre/Fakturierung ohne Copy-Paste | + +## Umsetzungs-Checkliste + +- [ ] DB: `TrusteeAccountingConfig.role` (+ optional `connectorCategory`) + Migration +- [ ] Bridge: Source-Auflösung nach `role`, Import-Pfad (additiv, Push-Pfad unverändert) +- [ ] Connector: `accountingConnectorSelectline.py` (Login/Test/Konten/Kunden/Belege lesen) +- [ ] Kanonisch: `Invoice`-Modell prüfen/ergänzen (falls AR-Rechnung in RMA) +- [ ] Workflow-Nodes: `integration.fetchFromSource` / `mapAccounts` / `pushToTarget` + Editor-Adapter +- [ ] Workflow-Template «Source→Target Import» (parametrisierbar) +- [ ] UI: `IntegrationSettingsView` generalisieren (`category`), Quelle/Ziel-Auswahl +- [ ] RBAC / Permissions (neue UI-Areas, admin_only) +- [ ] Neutralisierung betroffen? (nur falls KI-Mapping) +- [ ] Navigation / Routing (UI-Areas + FeatureView-Registry) +- [ ] Billing-Impact? (Sync-Läufe/Volumen) + +## Akzeptanzkriterien + +| # | Kriterium (Given-When-Then) | Prio | +|---|---------------------------|------| +| 1 | Given konfigurierter SelectLine-Source + RMA-Target, When der Import-Workflow läuft, Then erscheinen die SelectLine-Ausgangsrechnungen als Buchungen in RMA (inkl. Beleg-Verlinkung) | must | +| 2 | Given zwei Mandanten mit unterschiedlichem Konten-Mapping, When beide SelectLine→RMA nutzen, Then unterscheiden sie sich nur in Workflow-Graph/Config – **kein** kundenspezifischer Code | must | +| 3 | Given ein neues Umsystem, When ein Connector-File + Config ergänzt wird, Then ist es ohne Änderung an Registry/Bridge/Editor verfügbar | must | +| 4 | Given erneuter Import, When Belege bereits gebucht sind, Then werden sie über die bestehende Dedup-Logik nicht doppelt gebucht | must | +| 5 | Given das UI-Muster, When eine neue Kategorie-Seite («Saläre») registriert wird, Then nutzt sie dieselbe generische Komponente | should | + +## Testplan + +| ID | AC | Art | Automatisiert | Repo-Pfad | Status | +|----|----|-----|--------------|-----------|--------| +| T1 | 1 | unit | ja | platform-core/tests/unit/features/trustee/test_accountingConnectorSelectline.py | pending | +| T2 | 1,4 | integration | ja | platform-core/tests/integration/trustee/test_source_target_import_e2e.py | pending | +| T3 | 3 | unit | ja | platform-core/tests/unit/.../test_adapter_validator.py (Editor-Node-Drift) | pending | +| T4 | 2 | unit | ja | platform-core/tests/unit/.../test_integration_nodes.py (Mapping aus Config) | pending | + +## Offene Fragen (für den Kundentermin) + +1. **Erreichbarkeit:** Wo läuft die SelectLine-API (on-prem/Cloud)? Welcher Zugriffsweg (VPN/Tunnel/Agent)? +2. **Zielart in RMA:** Debitoren-Rechnung (AR, offener Posten) **oder** GL-Buchung? → bestimmt `pushInvoice`-Ausbau vs. `pushBooking`. +3. **Mapping:** Liefert SelectLine pro Rechnung Konto + Steuerschlüssel, oder Kontenplan-Mapping SelectLine→RMA nötig? +4. **Beleg-PDF:** Rechnungs-PDF mit nach RMA (Beleg-Upload vorhanden)? +5. **Delta/Frequenz:** On-demand, Zeitplan oder Event? Cursor = Belegnummer/Datum? +6. **Alternative:** SelectLine `Bankassistent` (camt.053) – relevant oder nur Ausgangsrechnungen? + +## Meine Gedanken / Empfehlungen + +- **Saubere Trennung ist erreichbar, weil die Plattform sie schon vorlebt.** Trustee nutzt bereits Typed Actions + Graphical Editor + Templates. «Kundenlogik als Graph» ist kein neues Paradigma, sondern Anwendung des Bestehenden. Das ist der grösste Hebel gegen kundenspezifischen Code. +- **Nicht zu früh über-generalisieren.** Ein einziges «BaseConnector für alles» mit Capability-Mixins (`AccountingCapable`, `PayrollCapable`) ist elegant, aber bevor «Saläre» real ist, würde ich beim bestehenden `BaseAccountingConnector` bleiben und nur die **Source-Rolle** ergänzen. Die Abstraktion ziehen wir, wenn die zweite Kategorie konkret wird – sonst bauen wir ein Framework für hypothetische Fälle (YAGNI). +- **Namensgebung zur Abgrenzung:** «Personal Sources» = user-privat/RAG. Diese hier sind **«Umsystem-Anbindungen» / «Integrationen»** auf Mandant-Ebene. Klare Begriffe verhindern, dass die zwei Welten wieder vermischt werden. +- **Source vs. Target ist die wichtigste neue Achse.** Sie macht aus dem heutigen Push-Framework ein bidirektionales Integrations-Framework und ist die Voraussetzung für «System A → PowerOn → System B» generell. +- **«Saläre»-Seite** ist ein gutes nächstes Beispiel: Lohnsystem (Swissdec-konform) → Lohnbuchungen → Buchhaltung. Gleicher Mechanismus, neues kanonisches Modell `PayrollEntry`. Bestätigt, dass das Seiten-Muster trägt. +- **Risiko bleibt extern:** On-Prem-Erreichbarkeit von SelectLine ist der kritische Pfad – das ist eher Infrastruktur/Netzwerk als Code. Im Kundentermin zuerst klären. + +## Links + +- Vorgelagerte Analyse (dieser Chat): SelectLine-API-Prüfung + erste Empfehlung +- Referenz Trustee: `wiki/b-reference/platform-core/features/trustee.md` +- Referenz UDB/Personal Sources: `wiki/b-reference/platform/unified-data-bar.md` +- Code: `platform-core/modules/features/trustee/accounting/` (Bridge, Base, Registry, Connectors) +- PR: — +- Issue: — + +## Abschluss + +- [ ] b-reference/ aktualisiert (`features/trustee.md` Abschnitt «Source-Connectors / Integrationen»; ggf. neue `platform/integrations.md`) +- [ ] TOPICS.md aktualisiert (neues Thema «Umsystem-Integrationen») +- [ ] Dieses Dokument → c-work/2-build/ (bei Umsetzungsbeginn), am Ende → z-archive/ diff --git a/c-work/_CHANGELOG.md b/c-work/_CHANGELOG.md index f2cbecf..55e4679 100644 --- a/c-work/_CHANGELOG.md +++ b/c-work/_CHANGELOG.md @@ -12,6 +12,10 @@ type: `feat` `fix` `refactor` `docs` `test` `chore` `build` · scope: `platfor Skip: reine Refactors, Formatting, Lint, Dep-Bumps, Test-only, Wiki-Tippfehler. +## 2026-06-04 + +- 2026-06-04 | docs | wiki | **Plan: Umsystem-Integration (Connectors + Workflows + Datenquellen-Seiten)**: Arbeitsdokument fuer generische Umsystem-Anbindung (SelectLine→RMA als Pilot). Trennung generische Bausteine (Connectors/kanonische Modelle/Workflow-Nodes) vs. kundenspezifische Logik (Workflow-Graph + Config). UI-Muster «Datenquelle = Seite» pro Kategorie (Buchhaltung existiert, Saläre als Idee). (c-work: c-work/1-plan/2026-06-umsystem-integration-connectors-und-datenquellen-seiten.md) + ## 2026-06-03 - 2026-06-03 | fix | platform-core | **Image MIME-Type Pre-Validation in Extraction Pipeline**: Unsupported Bild-Formate (image/bmp, image/tiff, image/x-icon etc.) werden jetzt VOR dem Failover-Loop erkannt und uebersprungen. Magic-Bytes-Sniffing korrigiert falsche MIME-Types. Verhindert 6000+ Error-Storm bei EML-Verarbeitung (vorher: jedes unsupported Bild x 10+ Models = 30+ API-Errors). Safety-Net auch in aicorePluginAnthropic. diff --git a/d-guides/deployment/poweron-sec.kdbx b/d-guides/deployment/poweron-sec.kdbx index ed7be6dd4a5e5db8a77bfe712407d9642e47d106..8227f66f8d40493c48c46d623c3ab7b021876bfe 100644 GIT binary patch literal 29582 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