Merge pull request #38 from SuanmoSuanyangTechnology/fix/workflow

fix(workflow): optimize input_type validation for loop variables
This commit is contained in:
Mark
2026-01-06 20:28:35 +08:00
committed by GitHub
3 changed files with 33 additions and 3 deletions

View File

@@ -1,6 +1,6 @@
from typing import Any
from pydantic import Field, BaseModel
from pydantic import Field, BaseModel, field_validator
from app.core.workflow.nodes.base_config import BaseNodeConfig, VariableType
from app.core.workflow.nodes.enums import ComparisonOperator, LogicOperator, ValueInputType
@@ -27,6 +27,16 @@ class CycleVariable(BaseNodeConfig):
description="Initial or current value of the loop variable"
)
@field_validator("input_type", mode="before")
@classmethod
def lower_input_type(cls, v):
if isinstance(v, str):
try:
return ValueInputType(v.lower())
except ValueError:
raise ValueError(f"Invalid input_type: {v}")
return v
class ConditionDetail(BaseModel):
operator: ComparisonOperator = Field(
@@ -49,6 +59,16 @@ class ConditionDetail(BaseModel):
description="Input type of the loop variable"
)
@field_validator("input_type", mode="before")
@classmethod
def lower_input_type(cls, v):
if isinstance(v, str):
try:
return ValueInputType(v.lower())
except ValueError:
raise ValueError(f"Invalid input_type: {v}")
return v
class ConditionsConfig(BaseModel):
"""Configuration for loop condition evaluation"""

View File

@@ -93,5 +93,5 @@ class HttpErrorHandle(StrEnum):
class ValueInputType(StrEnum):
VARIABLE = "Variable"
CONSTANT = "Constant"
VARIABLE = "variable"
CONSTANT = "constant"

View File

@@ -27,6 +27,16 @@ class ConditionDetail(BaseModel):
description="Value input type for comparison"
)
@field_validator("input_type", mode="before")
@classmethod
def lower_input_type(cls, v):
if isinstance(v, str):
try:
return ValueInputType(v.lower())
except ValueError:
raise ValueError(f"Invalid input_type: {v}")
return v
class ConditionBranchConfig(BaseModel):
"""Configuration for a conditional branch"""