# Copyright (c) 2025 Patrick Motsch # Trustee node definitions - map to methodTrustee actions. from modules.shared.i18nRegistry import t TRUSTEE_NODES = [ { "id": "trustee.refreshAccountingData", "category": "trustee", "label": t("Buchhaltungsdaten aktualisieren"), "description": t("Buchhaltungsdaten aus externem System importieren/aktualisieren."), "parameters": [ {"name": "featureInstanceId", "type": "string", "required": True, "frontendType": "hidden", "description": t("Trustee Feature-Instanz-ID")}, {"name": "forceRefresh", "type": "boolean", "required": False, "frontendType": "checkbox", "description": t("Import erzwingen"), "default": False}, {"name": "dateFrom", "type": "string", "required": False, "frontendType": "date", "description": t("Startdatum"), "default": ""}, {"name": "dateTo", "type": "string", "required": False, "frontendType": "date", "description": t("Enddatum"), "default": ""}, ], "inputs": 1, "outputs": 1, "inputPorts": {0: {"accepts": ["Transit"]}}, "outputPorts": {0: {"schema": "ActionResult"}}, "meta": {"icon": "mdi-database-refresh", "color": "#4CAF50", "usesAi": False}, "_method": "trustee", "_action": "refreshAccountingData", }, { "id": "trustee.extractFromFiles", "category": "trustee", "label": t("Dokumente extrahieren"), "description": t("Dokumenttyp und Daten aus PDF/JPG per AI extrahieren."), "parameters": [ {"name": "connectionReference", "type": "string", "required": False, "frontendType": "userConnection", "frontendOptions": {"authority": "msft"}, "description": t("SharePoint-Verbindung"), "default": ""}, {"name": "sharepointFolder", "type": "string", "required": False, "frontendType": "sharepointFolder", "frontendOptions": {"dependsOn": "connectionReference"}, "description": t("SharePoint-Ordnerpfad"), "default": ""}, {"name": "featureInstanceId", "type": "string", "required": True, "frontendType": "hidden", "description": t("Trustee Feature-Instanz-ID")}, {"name": "prompt", "type": "string", "required": False, "frontendType": "textarea", "description": t("AI-Prompt für Extraktion"), "default": ""}, ], "inputs": 1, "outputs": 1, "inputPorts": {0: {"accepts": ["DocumentList", "Transit"]}}, "outputPorts": {0: {"schema": "DocumentList"}}, "meta": {"icon": "mdi-file-document-scan", "color": "#4CAF50", "usesAi": True}, "_method": "trustee", "_action": "extractFromFiles", }, { "id": "trustee.processDocuments", "category": "trustee", "label": t("Dokumente verarbeiten"), "description": t("TrusteeDocument + TrusteePosition aus Extraktionsergebnis erstellen."), "parameters": [ {"name": "documentList", "type": "string", "required": False, "frontendType": "hidden", "description": t("Automatisch via Wire-Verbindung befüllt")}, {"name": "featureInstanceId", "type": "string", "required": True, "frontendType": "hidden", "description": t("Trustee Feature-Instanz-ID")}, ], "inputs": 1, "outputs": 1, "inputPorts": {0: {"accepts": ["DocumentList", "Transit"]}}, "outputPorts": {0: {"schema": "ActionResult"}}, "meta": {"icon": "mdi-file-document-check", "color": "#4CAF50", "usesAi": False}, "_method": "trustee", "_action": "processDocuments", }, { "id": "trustee.syncToAccounting", "category": "trustee", "label": t("In Buchhaltung synchronisieren"), "description": t("Trustee-Positionen in Buchhaltungssystem übertragen."), "parameters": [ {"name": "documentList", "type": "string", "required": False, "frontendType": "hidden", "description": t("Automatisch via Wire-Verbindung befüllt")}, {"name": "featureInstanceId", "type": "string", "required": True, "frontendType": "hidden", "description": t("Trustee Feature-Instanz-ID")}, ], "inputs": 1, "outputs": 1, "inputPorts": {0: {"accepts": ["Transit"]}}, "outputPorts": {0: {"schema": "ActionResult"}}, "meta": {"icon": "mdi-calculator", "color": "#4CAF50", "usesAi": False}, "_method": "trustee", "_action": "syncToAccounting", }, { "id": "trustee.queryData", "category": "trustee", "label": t("Treuhand-Daten abfragen"), "description": t("Daten aus der Trustee-DB lesen (Lookup, Aggregation, Roh-Export). Pendant zu refreshAccountingData ohne externen Sync."), "parameters": [ {"name": "featureInstanceId", "type": "string", "required": True, "frontendType": "hidden", "description": t("Trustee Feature-Instanz-ID")}, {"name": "mode", "type": "string", "required": True, "frontendType": "select", "frontendOptions": {"options": ["lookup", "raw", "aggregate"]}, "description": t("Abfragemodus"), "default": "lookup"}, {"name": "entity", "type": "string", "required": True, "frontendType": "select", "frontendOptions": {"options": ["tenantWithRent", "contact", "journalLines", "accounts", "balances"]}, "description": t("Entität, die gelesen werden soll"), "default": "tenantWithRent"}, {"name": "tenantNameRef", "type": "string", "required": False, "frontendType": "text", "frontendOptions": {"dependsOn": "entity", "showWhen": ["tenantWithRent", "contact"]}, "description": t("Mietername (oder {{wire.feld}} aus Upstream)"), "default": ""}, {"name": "tenantAddressRef", "type": "string", "required": False, "frontendType": "text", "frontendOptions": {"dependsOn": "entity", "showWhen": ["tenantWithRent", "contact"]}, "description": t("Mieteradresse (Toleranz für Tippfehler)"), "default": ""}, {"name": "period", "type": "string", "required": False, "frontendType": "text", "frontendOptions": {"dependsOn": "entity", "showWhen": ["tenantWithRent", "journalLines", "balances"]}, "description": t("Zeitraum (YYYY oder YYYY-MM-DD/YYYY-MM-DD)"), "default": ""}, {"name": "rentAccountPattern", "type": "string", "required": False, "frontendType": "text", "frontendOptions": {"dependsOn": "entity", "showWhen": ["tenantWithRent"]}, "description": t("Konto-Filter für Mietzins (z.B. '6000-6099' oder '6*')"), "default": ""}, {"name": "filterJson", "type": "string", "required": False, "frontendType": "textarea", "frontendOptions": {"dependsOn": "mode", "showWhen": ["raw", "aggregate"]}, "description": t("Optionaler JSON-Filter für mode=raw/aggregate"), "default": ""}, ], "inputs": 1, "outputs": 1, "inputPorts": {0: {"accepts": ["Transit", "AiResult", "ConsolidateResult"]}}, "outputPorts": {0: {"schema": "ActionResult"}}, "meta": {"icon": "mdi-database-search", "color": "#4CAF50", "usesAi": False}, "_method": "trustee", "_action": "queryData", }, ]