Files
meet/src/backend/core/analytics.py
T
Florent Chehab 01ff215901 wip backend meet
2026-05-14 17:42:44 +02:00

53 lines
1.4 KiB
Python

"""Analytics module."""
import logging
from enum import StrEnum
from django.conf import settings
import posthog
from core.models import User
logger = logging.getLogger(__name__)
class EventName(StrEnum):
"""Analytics event names."""
TRANSCRIPT_GENERATION_SUCCESS = "transcript_generation_success"
TRANSCRIPT_GENERATION_FAILURE = "transcript_generation_failure"
SUMMARY_GENERATION_SUCCESS = "summary_generation_success"
SUMMARY_GENERATION_FAILURE = "summary_generation_failure"
def capture_event(event_name: EventName, *, user: User, properties=None) -> None:
"""
Capture an analytics event with user properties.
"""
if not settings.POSTHOG_ENABLED:
return
properties = properties or {}
properties["$set"] = {
"name": user.full_name,
"email": user.email,
"sub": user.sub,
}
posthog.capture(event_name, distinct_id=user.id, properties=properties)
def is_feature_enabled(feature_name: str, distinct_id: str) -> bool:
"""Check if a feature flag is enabled for a user."""
if not settings.POSTHOG_ENABLED:
return False
try:
return posthog.feature_enabled(feature_name, distinct_id)
except Exception as e: # noqa: BLE001
logger.error("Error checking feature flag %s: %s", feature_name, e)
return False
__all__ = ["EventName", "capture_event", "is_feature_enabled"]