53 lines
2.2 KiB
Python
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))
|