Merge remote-tracking branch 'origin/feat/trigger' into feat/trigger

This commit is contained in:
zhsama
2025-10-14 15:28:35 +08:00
3 changed files with 25 additions and 6 deletions

View File

@@ -57,7 +57,7 @@ class PluginTriggerDebugEvent(BaseDebugEvent):
provider_id = kwargs["provider_id"] provider_id = kwargs["provider_id"]
subscription_id = kwargs["subscription_id"] subscription_id = kwargs["subscription_id"]
event_name = kwargs["event_name"] event_name = kwargs["event_name"]
return f"trigger_debug_waiting_pool:{tenant_id}:{str(provider_id)}:{subscription_id}:{event_name}" return f"plugin_trigger_debug_waiting_pool:{tenant_id}:{str(provider_id)}:{subscription_id}:{event_name}"
class WebhookDebugEvent(BaseDebugEvent): class WebhookDebugEvent(BaseDebugEvent):
@@ -79,7 +79,7 @@ class WebhookDebugEvent(BaseDebugEvent):
tenant_id = kwargs["tenant_id"] tenant_id = kwargs["tenant_id"]
app_id = kwargs["app_id"] app_id = kwargs["app_id"]
node_id = kwargs["node_id"] node_id = kwargs["node_id"]
return f"trigger_debug_waiting_pool:{tenant_id}:{app_id}:{node_id}" return f"webhook_trigger_debug_waiting_pool:{tenant_id}:{app_id}:{node_id}"
class TriggerDebugService: class TriggerDebugService:

View File

@@ -38,6 +38,7 @@ from models.workflow import Workflow, WorkflowNodeExecutionModel, WorkflowNodeEx
from repositories.factory import DifyAPIRepositoryFactory from repositories.factory import DifyAPIRepositoryFactory
from services.enterprise.plugin_manager_service import PluginCredentialType from services.enterprise.plugin_manager_service import PluginCredentialType
from services.errors.app import IsDraftWorkflowError, WorkflowHashNotEqualError from services.errors.app import IsDraftWorkflowError, WorkflowHashNotEqualError
from services.workflow.entities import PluginTriggerData, ScheduleTriggerData
from services.workflow.workflow_converter import WorkflowConverter from services.workflow.workflow_converter import WorkflowConverter
from .errors.workflow_service import DraftWorkflowDeletionError, WorkflowInUseError from .errors.workflow_service import DraftWorkflowDeletionError, WorkflowInUseError
@@ -633,6 +634,10 @@ class WorkflowService:
) )
if node_type == NodeType.TRIGGER_WEBHOOK: if node_type == NodeType.TRIGGER_WEBHOOK:
start_data = WebhookData.model_validate(node_data) start_data = WebhookData.model_validate(node_data)
elif node_type == NodeType.TRIGGER_PLUGIN:
start_data = PluginTriggerData.model_validate(node_data)
elif node_type == NodeType.TRIGGER_SCHEDULE:
start_data = ScheduleTriggerData.model_validate(node_data)
else: else:
start_data = StartNodeData.model_validate(node_data) start_data = StartNodeData.model_validate(node_data)
user_inputs = _rebuild_file_for_user_inputs_in_start_node( user_inputs = _rebuild_file_for_user_inputs_in_start_node(

View File

@@ -58,11 +58,12 @@ def dispatch_triggered_workflows_async(
try: try:
logger.info( logger.info(
"Starting async trigger dispatching for endpoint=%s, events=%s, request_id=%s, timestamp=%s", "Starting trigger dispatching endpoint=%s, events=%s, request_id=%s, subscription_id=%s, provider_id=%s",
endpoint_id, endpoint_id,
events, events,
request_id, request_id,
timestamp, subscription_id,
provider_id,
) )
# Verify request exists in storage # Verify request exists in storage
@@ -155,14 +156,25 @@ def dispatch_triggered_workflows_async(
event=event, event=event,
pool_key=pool_key, pool_key=pool_key,
) )
logger.debug(
"Trigger debug dispatched %d sessions to pool %s for event %s for subscription %s provider %s",
debug_dispatched,
pool_key,
event_name,
subscription_id,
provider_id,
)
except Exception: except Exception:
# Silent failure for debug dispatch # Silent failure for debug dispatch
logger.exception("Failed to dispatch to debug sessions") logger.exception("Failed to dispatch to debug sessions")
logger.info( logger.info(
"Completed async trigger dispatching: processed %d/%d triggers", "Completed async trigger dispatching: processed %d/%d triggers for subscription %s and provider %s",
dispatched_count, dispatched_count,
len(events), len(events),
subscription_id,
provider_id,
) )
return { return {
@@ -174,9 +186,11 @@ def dispatch_triggered_workflows_async(
except Exception as e: except Exception as e:
logger.exception( logger.exception(
"Error in async trigger dispatching for endpoint %s data %s", "Error in async trigger dispatching for endpoint %s data %s for subscription %s and provider %s",
endpoint_id, endpoint_id,
dispatch_data, dispatch_data,
subscription_id,
provider_id,
) )
return { return {
"status": "failed", "status": "failed",