From 32f4d1af8b5a87d6f6433ef244b09730c37a9ad8 Mon Sep 17 00:00:00 2001 From: Harry Date: Tue, 30 Sep 2025 20:10:00 +0800 Subject: [PATCH] Refactor: Rename triggers to events in trigger-related entities and services - Updated class and variable names from 'triggers' to 'events' across multiple files to improve clarity and consistency. - Adjusted related data structures and methods to reflect the new naming convention, including changes in API entities, service methods, and trigger management logic. - Ensured all references to triggers are replaced with events to align with the updated terminology. --- api/core/plugin/entities/request.py | 6 +-- api/core/plugin/impl/trigger.py | 18 ++++---- api/core/trigger/entities/api_entities.py | 14 +++--- api/core/trigger/entities/entities.py | 52 +++++++++++------------ api/core/trigger/provider.py | 42 +++++++++--------- api/core/trigger/trigger_manager.py | 22 +++------- api/services/trigger_debug_service.py | 10 ++--- api/services/trigger_service.py | 10 ++--- api/services/workflow/entities.py | 2 +- api/tasks/trigger_processing_tasks.py | 20 ++++----- 10 files changed, 92 insertions(+), 104 deletions(-) diff --git a/api/core/plugin/entities/request.py b/api/core/plugin/entities/request.py index 30579a560f..fd62dc20a8 100644 --- a/api/core/plugin/entities/request.py +++ b/api/core/plugin/entities/request.py @@ -264,9 +264,9 @@ class TriggerValidateProviderCredentialsResponse(BaseModel): class TriggerDispatchResponse: - triggers: list[str] + events: list[str] response: Response - def __init__(self, triggers: list[str], response: Response): - self.triggers = triggers + def __init__(self, events: list[str], response: Response): + self.events = events self.response = response diff --git a/api/core/plugin/impl/trigger.py b/api/core/plugin/impl/trigger.py index e02065e724..8da132f1b6 100644 --- a/api/core/plugin/impl/trigger.py +++ b/api/core/plugin/impl/trigger.py @@ -28,8 +28,8 @@ class PluginTriggerManager(BasePluginClient): for provider in json_response.get("data", []): declaration = provider.get("declaration", {}) or {} provider_id = provider.get("plugin_id") + "/" + provider.get("provider") - for trigger in declaration.get("triggers", []): - trigger["identity"]["provider"] = provider_id + for event in declaration.get("events", []): + event["identity"]["provider"] = provider_id return json_response @@ -45,8 +45,8 @@ class PluginTriggerManager(BasePluginClient): provider.declaration.identity.name = f"{provider.plugin_id}/{provider.declaration.identity.name}" # override the provider name for each trigger to plugin_id/provider_name - for trigger in provider.declaration.triggers: - trigger.identity.provider = provider.declaration.identity.name + for event in provider.declaration.events: + event.identity.provider = provider.declaration.identity.name return response @@ -58,8 +58,8 @@ class PluginTriggerManager(BasePluginClient): def transformer(json_response: dict[str, Any]) -> dict: data = json_response.get("data") if data: - for trigger in data.get("declaration", {}).get("triggers", []): - trigger["identity"]["provider"] = str(provider_id) + for event in data.get("declaration", {}).get("events", []): + event["identity"]["provider"] = str(provider_id) return json_response @@ -74,8 +74,8 @@ class PluginTriggerManager(BasePluginClient): response.declaration.identity.name = str(provider_id) # override the provider name for each trigger to plugin_id/provider_name - for trigger in response.declaration.triggers: - trigger.identity.provider = str(provider_id) + for event in response.declaration.events: + event.identity.provider = str(provider_id) return response @@ -184,7 +184,7 @@ class PluginTriggerManager(BasePluginClient): for resp in response: return TriggerDispatchResponse( - triggers=resp.triggers, + events=resp.events, response=deserialize_response(binascii.unhexlify(resp.raw_http_response.encode())), ) diff --git a/api/core/trigger/entities/api_entities.py b/api/core/trigger/entities/api_entities.py index e353e71004..df11f09d94 100644 --- a/api/core/trigger/entities/api_entities.py +++ b/api/core/trigger/entities/api_entities.py @@ -7,11 +7,11 @@ from core.entities.provider_entities import ProviderConfig from core.plugin.entities.plugin_daemon import CredentialType from core.tools.entities.common_entities import I18nObject from core.trigger.entities.entities import ( + EventDescription, + EventIdentity, + EventParameter, SubscriptionConstructor, TriggerCreationMethod, - TriggerDescription, - TriggerIdentity, - TriggerParameter, ) @@ -29,9 +29,9 @@ class TriggerProviderSubscriptionApiEntity(BaseModel): class TriggerApiEntity(BaseModel): name: str = Field(description="The name of the trigger") - identity: TriggerIdentity = Field(description="The identity of the trigger") - description: TriggerDescription = Field(description="The description of the trigger") - parameters: list[TriggerParameter] = Field(description="The parameters of the trigger") + identity: EventIdentity = Field(description="The identity of the trigger") + description: EventDescription = Field(description="The description of the trigger") + parameters: list[EventParameter] = Field(description="The parameters of the trigger") output_schema: Optional[Mapping[str, Any]] = Field(description="The output schema of the trigger") @@ -60,7 +60,7 @@ class TriggerProviderApiEntity(BaseModel): default_factory=list, description="The subscription schema of the trigger provider", ) - triggers: list[TriggerApiEntity] = Field(description="The triggers of the trigger provider") + events: list[TriggerApiEntity] = Field(description="The events of the trigger provider") class SubscriptionBuilderApiEntity(BaseModel): diff --git a/api/core/trigger/entities/entities.py b/api/core/trigger/entities/entities.py index b09cfd19a7..3a479d8273 100644 --- a/api/core/trigger/entities/entities.py +++ b/api/core/trigger/entities/entities.py @@ -16,7 +16,7 @@ from core.plugin.entities.parameters import ( from core.tools.entities.common_entities import I18nObject -class TriggerParameterType(StrEnum): +class EventParameterType(StrEnum): """The type of the parameter""" STRING = "string" @@ -39,14 +39,14 @@ class TriggerParameterType(StrEnum): return cast_parameter_value(self, value) -class TriggerParameter(BaseModel): +class EventParameter(BaseModel): """ - The parameter of the trigger + The parameter of the event """ name: str = Field(..., description="The name of the parameter") label: I18nObject = Field(..., description="The label presented to the user") - type: TriggerParameterType = Field(..., description="The type of the parameter") + type: EventParameterType = Field(..., description="The type of the parameter") auto_generate: Optional[PluginParameterAutoGenerate] = Field( default=None, description="The auto generate of the parameter" ) @@ -79,36 +79,36 @@ class TriggerProviderIdentity(BaseModel): tags: list[str] = Field(default_factory=list, description="The tags of the trigger provider") -class TriggerIdentity(BaseModel): +class EventIdentity(BaseModel): """ - The identity of the trigger + The identity of the event """ - author: str = Field(..., description="The author of the trigger") - name: str = Field(..., description="The name of the trigger") - label: I18nObject = Field(..., description="The label of the trigger") - provider: Optional[str] = Field(default=None, description="The provider of the trigger") + author: str = Field(..., description="The author of the event") + name: str = Field(..., description="The name of the event") + label: I18nObject = Field(..., description="The label of the event") + provider: Optional[str] = Field(default=None, description="The provider of the event") -class TriggerDescription(BaseModel): +class EventDescription(BaseModel): """ - The description of the trigger + The description of the event """ human: I18nObject = Field(..., description="Human readable description") llm: I18nObject = Field(..., description="LLM readable description") -class TriggerEntity(BaseModel): +class EventEntity(BaseModel): """ - The configuration of a trigger + The configuration of an event """ - identity: TriggerIdentity = Field(..., description="The identity of the trigger") - parameters: list[TriggerParameter] = Field(default=[], description="The parameters of the trigger") - description: TriggerDescription = Field(..., description="The description of the trigger") + identity: EventIdentity = Field(..., description="The identity of the event") + parameters: list[EventParameter] = Field(default=[], description="The parameters of the event") + description: EventDescription = Field(..., description="The description of the event") output_schema: Optional[Mapping[str, Any]] = Field( - default=None, description="The output schema that this trigger produces" + default=None, description="The output schema that this event produces" ) @@ -124,7 +124,7 @@ class SubscriptionConstructor(BaseModel): The subscription constructor of the trigger provider """ - parameters: list[TriggerParameter] = Field( + parameters: list[EventParameter] = Field( default_factory=list, description="The parameters schema of the subscription constructor" ) @@ -158,7 +158,7 @@ class TriggerProviderEntity(BaseModel): subscription_constructor: SubscriptionConstructor = Field( description="The subscription constructor of the trigger provider", ) - triggers: list[TriggerEntity] = Field(default=[], description="The triggers of the trigger provider") + events: list[EventEntity] = Field(default=[], description="The events of the trigger provider") class Subscription(BaseModel): @@ -262,7 +262,7 @@ class TriggerEventData(BaseModel): """Event data dispatched to trigger sessions.""" subscription_id: str - triggers: list[str] + events: list[str] request_id: str timestamp: float @@ -293,18 +293,18 @@ class TriggerCreationMethod(StrEnum): # Export all entities __all__ = [ + "EventDescription", + "EventEntity", + "EventIdentity", + "EventParameter", + "EventParameterType", "OAuthSchema", "RequestLog", "Subscription", "SubscriptionBuilder", "TriggerCreationMethod", - "TriggerDescription", - "TriggerEntity", "TriggerEventData", - "TriggerIdentity", "TriggerInputs", - "TriggerParameter", - "TriggerParameterType", "TriggerProviderEntity", "TriggerProviderIdentity", "Unsubscription", diff --git a/api/core/trigger/provider.py b/api/core/trigger/provider.py index 2382f4f6f9..19fc7aa6f3 100644 --- a/api/core/trigger/provider.py +++ b/api/core/trigger/provider.py @@ -17,11 +17,11 @@ from core.plugin.entities.request import ( from core.plugin.impl.trigger import PluginTriggerManager from core.trigger.entities.api_entities import TriggerApiEntity, TriggerProviderApiEntity from core.trigger.entities.entities import ( + EventEntity, ProviderConfig, Subscription, SubscriptionConstructor, TriggerCreationMethod, - TriggerEntity, TriggerProviderEntity, TriggerProviderIdentity, Unsubscription, @@ -100,15 +100,15 @@ class PluginTriggerProviderController: subscription_constructor=subscription_constructor, subscription_schema=self.entity.subscription_schema, supported_creation_methods=supported_creation_methods, - triggers=[ + events=[ TriggerApiEntity( - name=trigger.identity.name, - identity=trigger.identity, - description=trigger.description, - parameters=trigger.parameters, - output_schema=trigger.output_schema, + name=event.identity.name, + identity=event.identity, + description=event.description, + parameters=event.parameters, + output_schema=event.output_schema, ) - for trigger in self.entity.triggers + for event in self.entity.events ], ) @@ -117,24 +117,24 @@ class PluginTriggerProviderController: """Get provider identity""" return self.entity.identity - def get_triggers(self) -> list[TriggerEntity]: + def get_events(self) -> list[EventEntity]: """ - Get all triggers for this provider + Get all events for this provider - :return: List of trigger entities + :return: List of event entities """ - return self.entity.triggers + return self.entity.events - def get_trigger(self, trigger_name: str) -> Optional[TriggerEntity]: + def get_event(self, event_name: str) -> Optional[EventEntity]: """ - Get a specific trigger by name + Get a specific event by name - :param trigger_name: Trigger name - :return: Trigger entity or None + :param event_name: Event name + :return: Event entity or None """ - for trigger in self.entity.triggers: - if trigger.identity.name == trigger_name: - return trigger + for event in self.entity.events: + if event.identity.name == event_name: + return event return None def get_subscription_default_properties(self) -> Mapping[str, Any]: @@ -161,7 +161,7 @@ class PluginTriggerProviderController: :return: Validation response """ # First validate against schema - for config in self.entity.subscription_constructor.credentials_schema: + for config in self.entity.subscription_constructor.credentials_schema or []: if config.required and config.name not in credentials: raise TriggerProviderCredentialValidationError(f"Missing required credential field: {config.name}") @@ -210,7 +210,7 @@ class PluginTriggerProviderController: ) if credential_type == CredentialType.API_KEY: return ( - subscription_constructor.credentials_schema.copy() + subscription_constructor.credentials_schema.copy() or [] if subscription_constructor and subscription_constructor.credentials_schema else [] ) diff --git a/api/core/trigger/trigger_manager.py b/api/core/trigger/trigger_manager.py index 6b8a1835c7..1e856375ce 100644 --- a/api/core/trigger/trigger_manager.py +++ b/api/core/trigger/trigger_manager.py @@ -15,8 +15,8 @@ from core.plugin.entities.request import Event, TriggerInvokeResponse from core.plugin.impl.exc import PluginInvokeError from core.plugin.impl.trigger import PluginTriggerManager from core.trigger.entities.entities import ( + EventEntity, Subscription, - TriggerEntity, Unsubscription, ) from core.trigger.provider import PluginTriggerProviderController @@ -116,7 +116,7 @@ class TriggerManager: return cls.list_plugin_trigger_providers(tenant_id) @classmethod - def list_triggers_by_provider(cls, tenant_id: str, provider_id: TriggerProviderID) -> list[TriggerEntity]: + def list_triggers_by_provider(cls, tenant_id: str, provider_id: TriggerProviderID) -> list[EventEntity]: """ List all triggers for a specific provider @@ -125,20 +125,8 @@ class TriggerManager: :return: List of trigger entities """ provider = cls.get_trigger_provider(tenant_id, provider_id) - return provider.get_triggers() - - @classmethod - def get_trigger(cls, tenant_id: str, provider_id: TriggerProviderID, trigger_name: str) -> Optional[TriggerEntity]: - """ - Get a specific trigger - - :param tenant_id: Tenant ID - :param provider_id: Provider ID - :param trigger_name: Trigger name - :return: Trigger entity or None - """ - return cls.get_trigger_provider(tenant_id, provider_id).get_trigger(trigger_name) - + return provider.get_events() + @classmethod def invoke_trigger( cls, @@ -165,7 +153,7 @@ class TriggerManager: :return: Trigger execution result """ provider = cls.get_trigger_provider(tenant_id, provider_id) - trigger = provider.get_trigger(trigger_name) + trigger = provider.get_event(trigger_name) if not trigger: raise ValueError(f"Trigger {trigger_name} not found in provider {provider_id}") try: diff --git a/api/services/trigger_debug_service.py b/api/services/trigger_debug_service.py index fad06d9db5..b373144c1d 100644 --- a/api/services/trigger_debug_service.py +++ b/api/services/trigger_debug_service.py @@ -75,7 +75,7 @@ class TriggerDebugService: cls, tenant_id: str, subscription_id: str, - triggers: list[str], + events: list[str], request_id: str, timestamp: int, ) -> int: @@ -86,15 +86,15 @@ class TriggerDebugService: ).model_dump_json() dispatched = 0 - if len(triggers) > 10: + if len(events) > 10: logger.warning( - "Too many triggers to dispatch at once: %d triggers tenant: %s subscription: %s", - len(triggers), + "Too many events to dispatch at once: %d events tenant: %s subscription: %s", + len(events), tenant_id, subscription_id, ) - for trigger_name in triggers: + for trigger_name in events: try: dispatched += redis_client.eval( cls.LUA_DISPATCH, diff --git a/api/services/trigger_service.py b/api/services/trigger_service.py index c42a6791f5..7a335c0ffd 100644 --- a/api/services/trigger_service.py +++ b/api/services/trigger_service.py @@ -9,7 +9,7 @@ from sqlalchemy.orm import Session from core.plugin.entities.plugin_daemon import CredentialType from core.plugin.utils.http_parser import deserialize_request, serialize_request -from core.trigger.entities.entities import TriggerEntity +from core.trigger.entities.entities import EventEntity from core.trigger.trigger_manager import TriggerManager from core.workflow.enums import NodeType from core.workflow.nodes.trigger_schedule.exc import TenantOwnerNotFoundError @@ -70,7 +70,7 @@ class TriggerService: @classmethod def dispatch_triggered_workflows( - cls, subscription: TriggerSubscription, trigger: TriggerEntity, request_id: str + cls, subscription: TriggerSubscription, trigger: EventEntity, request_id: str ) -> int: """Process triggered workflows. @@ -191,7 +191,7 @@ class TriggerService: user_id=subscription.user_id, request=request, subscription=subscription.to_entity() ) - if dispatch_response.triggers: + if dispatch_response.events: request_id = f"trigger_request_{uuid.uuid4().hex}" serialized_request = serialize_request(request) storage.save(f"triggers/{request_id}", serialized_request) @@ -204,7 +204,7 @@ class TriggerService: provider_id=subscription.provider_id, subscription_id=subscription.id, timestamp=timestamp, - triggers=list(dispatch_response.triggers), + events=list(dispatch_response.events), request_id=request_id, ) dispatch_data = plugin_trigger_dispatch_data.model_dump(mode="json") @@ -212,7 +212,7 @@ class TriggerService: logger.info( "Queued async dispatching for %d triggers on endpoint %s with request_id %s", - len(dispatch_response.triggers), + len(dispatch_response.events), endpoint_id, request_id, ) diff --git a/api/services/workflow/entities.py b/api/services/workflow/entities.py index 0df407c986..fc1a5d91ee 100644 --- a/api/services/workflow/entities.py +++ b/api/services/workflow/entities.py @@ -65,7 +65,7 @@ class PluginTriggerDispatchData(BaseModel): provider_id: str subscription_id: str timestamp: int - triggers: list[str] + events: list[str] request_id: str diff --git a/api/tasks/trigger_processing_tasks.py b/api/tasks/trigger_processing_tasks.py index 07ee86ac76..aad55004ba 100644 --- a/api/tasks/trigger_processing_tasks.py +++ b/api/tasks/trigger_processing_tasks.py @@ -48,14 +48,14 @@ def dispatch_triggered_workflows_async( provider_id = dispatch_params.provider_id subscription_id = dispatch_params.subscription_id timestamp = dispatch_params.timestamp - triggers = dispatch_params.triggers + events = dispatch_params.events request_id = dispatch_params.request_id try: logger.info( - "Starting async trigger dispatching for endpoint=%s, triggers=%s, request_id=%s, timestamp=%s", + "Starting async trigger dispatching for endpoint=%s, events=%s, request_id=%s, timestamp=%s", endpoint_id, - triggers, + events, request_id, timestamp, ) @@ -85,13 +85,13 @@ def dispatch_triggered_workflows_async( # Dispatch each trigger dispatched_count = 0 - for trigger in triggers: + for event_name in events: try: - trigger = controller.get_trigger(trigger) + trigger = controller.get_event(event_name) if trigger is None: logger.error( "Trigger '%s' not found in provider '%s'", - trigger, + event_name, provider_id, ) continue @@ -105,7 +105,7 @@ def dispatch_triggered_workflows_async( except Exception: logger.exception( "Failed to dispatch trigger '%s' for subscription %s", - trigger, + event_name, subscription_id, ) # Continue processing other triggers even if one fails @@ -117,7 +117,7 @@ def dispatch_triggered_workflows_async( debug_dispatched = TriggerDebugService.dispatch_debug_event( tenant_id=subscription.tenant_id, subscription_id=subscription_id, - triggers=triggers, + events=events, timestamp=timestamp, request_id=request_id, ) @@ -128,7 +128,7 @@ def dispatch_triggered_workflows_async( logger.info( "Completed async trigger dispatching: processed %d/%d triggers", dispatched_count, - len(triggers), + len(events), ) # Note: Stored request is not deleted here. It should be handled by: @@ -138,7 +138,7 @@ def dispatch_triggered_workflows_async( return { "status": "completed", - "total_count": len(triggers), + "total_count": len(events), "dispatched_count": dispatched_count, "debug_dispatched_count": debug_dispatched, }