Files
bin/projekt-matching/components/pm_ingest.py

53 lines
2.2 KiB
Python

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))