mirror of
https://github.com/langgenius/dify.git
synced 2026-01-14 06:07:33 +08:00
Some checks are pending
Build and Push API & Web / build (api, DIFY_API_IMAGE_NAME, linux/amd64, build-api-amd64) (push) Waiting to run
Build and Push API & Web / build (api, DIFY_API_IMAGE_NAME, linux/arm64, build-api-arm64) (push) Waiting to run
Build and Push API & Web / build (web, DIFY_WEB_IMAGE_NAME, linux/amd64, build-web-amd64) (push) Waiting to run
Build and Push API & Web / build (web, DIFY_WEB_IMAGE_NAME, linux/arm64, build-web-arm64) (push) Waiting to run
Build and Push API & Web / create-manifest (api, DIFY_API_IMAGE_NAME, merge-api-images) (push) Blocked by required conditions
Build and Push API & Web / create-manifest (web, DIFY_WEB_IMAGE_NAME, merge-web-images) (push) Blocked by required conditions
- Improved error handling in `TriggerSubscriptionListApi` to return a 404 response for ValueErrors. - Refactored end user creation logic in `service_api/wraps.py` to use `get_or_create_end_user` for better clarity and consistency. - Introduced a new method `create_end_user_batch` for batch creation of end users, optimizing database interactions. - Updated various trigger-related services to utilize the new end user handling, ensuring proper user context during trigger dispatching.
94 lines
2.6 KiB
Python
94 lines
2.6 KiB
Python
from abc import ABC, abstractmethod
|
|
from collections.abc import Mapping
|
|
from typing import Any
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class BaseDebugEvent(ABC, BaseModel):
|
|
"""Base class for all debug events."""
|
|
|
|
timestamp: int
|
|
|
|
@classmethod
|
|
@abstractmethod
|
|
def build_pool_key(cls, **kwargs: Any) -> str:
|
|
"""
|
|
Generate the waiting pool key for this event type.
|
|
|
|
Each subclass implements its own pool key strategy based on routing parameters.
|
|
|
|
Returns:
|
|
Redis key for the waiting pool
|
|
"""
|
|
raise NotImplementedError("Subclasses must implement build_pool_key")
|
|
|
|
|
|
class ScheduleDebugEvent(BaseDebugEvent):
|
|
"""Debug event for schedule triggers."""
|
|
|
|
node_id: str
|
|
inputs: Mapping[str, Any]
|
|
|
|
@classmethod
|
|
def build_pool_key(cls, **kwargs: Any) -> str:
|
|
"""Generate pool key for schedule events.
|
|
|
|
Args:
|
|
tenant_id: Tenant ID
|
|
app_id: App ID
|
|
node_id: Node ID
|
|
"""
|
|
tenant_id = kwargs["tenant_id"]
|
|
app_id = kwargs["app_id"]
|
|
node_id = kwargs["node_id"]
|
|
return f"schedule_trigger_debug_waiting_pool:{tenant_id}:{app_id}:{node_id}"
|
|
|
|
|
|
class WebhookDebugEvent(BaseDebugEvent):
|
|
"""Debug event for webhook triggers."""
|
|
|
|
request_id: str
|
|
node_id: str
|
|
payload: dict[str, Any] = Field(default_factory=dict)
|
|
|
|
@classmethod
|
|
def build_pool_key(cls, **kwargs: Any) -> str:
|
|
"""Generate pool key for webhook events.
|
|
|
|
Args:
|
|
tenant_id: Tenant ID
|
|
app_id: App ID
|
|
node_id: Node ID
|
|
"""
|
|
tenant_id = kwargs["tenant_id"]
|
|
app_id = kwargs["app_id"]
|
|
node_id = kwargs["node_id"]
|
|
return f"webhook_trigger_debug_waiting_pool:{tenant_id}:{app_id}:{node_id}"
|
|
|
|
|
|
class PluginTriggerDebugEvent(BaseDebugEvent):
|
|
"""Debug event for plugin triggers."""
|
|
|
|
name: str
|
|
user_id: str = Field(description="This is end user id, only for trigger the event. no related with account user id")
|
|
request_id: str
|
|
subscription_id: str
|
|
provider_id: str
|
|
|
|
@classmethod
|
|
def build_pool_key(cls, **kwargs: Any) -> str:
|
|
"""Generate pool key for plugin trigger events.
|
|
|
|
Args:
|
|
name: Event name
|
|
tenant_id: Tenant ID
|
|
provider_id: Provider ID
|
|
subscription_id: Subscription ID
|
|
"""
|
|
tenant_id = kwargs["tenant_id"]
|
|
provider_id = kwargs["provider_id"]
|
|
subscription_id = kwargs["subscription_id"]
|
|
event_name = kwargs["name"]
|
|
return f"plugin_trigger_debug_waiting_pool:{tenant_id}:{str(provider_id)}:{subscription_id}:{event_name}"
|