diff --git a/app/core/outbox.py b/app/core/outbox.py index 466a84d..5dcdd1d 100644 --- a/app/core/outbox.py +++ b/app/core/outbox.py @@ -212,11 +212,18 @@ def _json_payload(payload: dict[str, Any]) -> str: def _get_handler_name(handler: Any) -> str: - """Extract a human-readable name from a handler callable.""" - name = getattr(handler, "__name__", None) + """Extract a human-readable name from a handler callable. + + Prefers ``__qualname__`` (includes the owning class, e.g. + ``AutomationPlugin.on_contact_created``) over ``__name__`` so the + consumer registry distinguishes handlers that share a method name + across plugins (automation/unified_search/system_notif all define + ``on_contact_created`` — three distinct handlers, same short name). + """ + name = getattr(handler, "__qualname__", None) if name: return name - name = getattr(handler, "__qualname__", None) + name = getattr(handler, "__name__", None) if name: return name return str(handler)