mirror of
https://github.com/langgenius/dify.git
synced 2026-03-01 12:55:13 +00:00
Move routing table, emit(), and is_enterprise_telemetry_enabled() from enterprise/telemetry/gateway.py into core/telemetry/gateway.py so both CE and EE share one code path. The ce_eligible flag in CASE_ROUTING controls which events flow in CE — flipping it is the only change needed to enable an event in community edition. - Delete enterprise/telemetry/gateway.py (class-based singleton) - Create core/telemetry/gateway.py (stateless functions, no shared state) - Simplify core/telemetry/__init__.py to thin facade over gateway - Remove TelemetryGateway class and get_gateway() from ext_enterprise_telemetry - Single-source is_enterprise_telemetry_enabled in core.telemetry.gateway - Fix pre-existing test bugs (missing dify.event.id in metric handler tests) - Update all imports and mock paths across 7 test files
44 lines
1.2 KiB
Python
44 lines
1.2 KiB
Python
"""Telemetry facade.
|
|
|
|
Thin public API for emitting telemetry events. All routing logic
|
|
lives in ``core.telemetry.gateway`` which is shared by both CE and EE.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import TYPE_CHECKING
|
|
|
|
from core.ops.entities.trace_entity import TraceTaskName
|
|
from core.telemetry.events import TelemetryContext, TelemetryEvent
|
|
from core.telemetry.gateway import TRACE_TASK_TO_CASE
|
|
from core.telemetry.gateway import emit as gateway_emit
|
|
|
|
if TYPE_CHECKING:
|
|
from core.ops.ops_trace_manager import TraceQueueManager
|
|
|
|
|
|
def emit(event: TelemetryEvent, trace_manager: TraceQueueManager | None = None) -> None:
|
|
"""Emit a telemetry event.
|
|
|
|
Translates the ``TelemetryEvent`` (keyed by ``TraceTaskName``) into a
|
|
``TelemetryCase`` and delegates to ``core.telemetry.gateway.emit()``.
|
|
"""
|
|
case = TRACE_TASK_TO_CASE.get(event.name)
|
|
if case is None:
|
|
return
|
|
|
|
context: dict[str, object] = {
|
|
"tenant_id": event.context.tenant_id,
|
|
"user_id": event.context.user_id,
|
|
"app_id": event.context.app_id,
|
|
}
|
|
gateway_emit(case, context, event.payload, trace_manager)
|
|
|
|
|
|
__all__ = [
|
|
"TelemetryContext",
|
|
"TelemetryEvent",
|
|
"TraceTaskName",
|
|
"emit",
|
|
]
|