import sys if "/app/langflow" not in sys.path: sys.path.insert(0, "/app/langflow") import json from langflow.custom import Component from langflow.io import DataInput, MessageTextInput, Output, SecretStrInput from langflow.schema.message import Message from projektmatch import ingest from projektmatch.config import Cfg class PMIngest(Component): display_name = "PM Ingest" description = ("IMAP-Postfach abrufen, Projekte splitten, CRM-Dedup, " "Flow 2 je Projekt, Alert-Mail, Trigger-Mail -> Trash") inputs = [ DataInput(name="trigger", display_name="Webhook Trigger"), SecretStrInput(name="imap_password", display_name="Mail Password", value="PM_IMAP_PASSWORD", load_from_db=True, advanced=True), MessageTextInput(name="espo_base", display_name="Espo Base", value="PM_ESPO_BASE", load_from_db=True, advanced=True), SecretStrInput(name="espo_api_key", display_name="Espo API Key", value="PM_ESPO_API_KEY", load_from_db=True, advanced=True), MessageTextInput(name="alert_to", display_name="Alert To", value="PM_ALERT_TO", load_from_db=True, advanced=True), MessageTextInput(name="flow2_id", display_name="Flow 2 ID", value="PM_FLOW2_ID", load_from_db=True, advanced=True), SecretStrInput(name="langflow_api_key", display_name="Langflow Key", value="PM_LANGFLOW_API_KEY", load_from_db=True, advanced=True), ] outputs = [Output(name="out", display_name="Summary", method="build_out")] def build_out(self) -> Message: cfg = Cfg(imap_password=self.imap_password, espo_base=self.espo_base, espo_api_key=self.espo_api_key, alert_to=self.alert_to, flow2_id=self.flow2_id, langflow_api_key=self.langflow_api_key) summary = ingest.run_ingest(cfg) self.status = json.dumps(summary) return Message(text=json.dumps(summary))