Langflow 1.10's Component base class defines ctx as a @property returning the flow-level graph.context store; a DataInput named ctx is silently shadowed at attribute access, so the edge-delivered payload never reaches build_out(). Renamed the field in the five downstream Flow-2 wrappers; build_flows.py edges target ctx_in. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
32 lines
1.1 KiB
Python
32 lines
1.1 KiB
Python
import sys
|
|
|
|
if "/app/langflow" not in sys.path:
|
|
sys.path.insert(0, "/app/langflow")
|
|
|
|
from langflow.custom import Component
|
|
from langflow.io import DataInput, MessageTextInput, Output
|
|
from langflow.schema import Data
|
|
|
|
from projektmatch import stages
|
|
from projektmatch.config import Cfg
|
|
|
|
|
|
class PMRules(Component):
|
|
display_name = "PM 4 Rules+Gate"
|
|
description = ("Deterministisch: Misc-Regeln, Match-Berechnung, "
|
|
"Beschreibungs-Markdown, Gate > Schwellwert")
|
|
inputs = [
|
|
DataInput(name="ctx_in", display_name="Context"),
|
|
MessageTextInput(name="threshold", display_name="Threshold",
|
|
value="PM_THRESHOLD", load_from_db=True,
|
|
advanced=True),
|
|
]
|
|
outputs = [Output(name="out", display_name="Context", method="build_out")]
|
|
|
|
def build_out(self) -> Data:
|
|
cfg = Cfg(threshold=int(self.threshold))
|
|
ctx = stages.run_stage("rules", stages.stage_rules,
|
|
dict(self.ctx_in.data), cfg)
|
|
self.status = f"{ctx.get('decision')} ({ctx.get('mustMatch')} %)"
|
|
return Data(data=ctx)
|