from django.contrib import admin

from apps.telemetry.models import (
    TelemetryAlert,
    TelemetryCohortSnapshot,
    TelemetryEvent,
    TelemetryFunnelSnapshot,
    TelemetryKPIAggregate,
    TelemetryRetentionSnapshot,
)


@admin.register(TelemetryEvent)
class TelemetryEventAdmin(admin.ModelAdmin):
    list_display = ('event_type', 'event_domain', 'user', 'occurred_at', 'source')
    search_fields = ('event_type', 'user__mobile', 'session_id', 'page')
    list_filter = ('event_type', 'event_domain', 'source')


@admin.register(TelemetryKPIAggregate)
class TelemetryKPIAggregateAdmin(admin.ModelAdmin):
    list_display = ('period_type', 'period_start', 'period_end', 'event_domain')
    list_filter = ('period_type', 'event_domain')


@admin.register(TelemetryCohortSnapshot)
class TelemetryCohortSnapshotAdmin(admin.ModelAdmin):
    list_display = ('snapshot_date', 'cohort_name', 'users_count')
    search_fields = ('cohort_name',)


@admin.register(TelemetryRetentionSnapshot)
class TelemetryRetentionSnapshotAdmin(admin.ModelAdmin):
    list_display = ('cohort_date', 'retention_day', 'event_domain', 'cohort_size', 'active_users', 'retention_rate')
    list_filter = ('retention_day', 'event_domain')


@admin.register(TelemetryFunnelSnapshot)
class TelemetryFunnelSnapshotAdmin(admin.ModelAdmin):
    list_display = ('snapshot_date', 'funnel_name', 'stage_name', 'users_count', 'conversion_rate')
    list_filter = ('funnel_name', 'event_domain')


@admin.register(TelemetryAlert)
class TelemetryAlertAdmin(admin.ModelAdmin):
    list_display = ('alert_type', 'severity', 'status', 'event_domain', 'detected_at', 'resolved_at')
    list_filter = ('severity', 'status', 'event_domain')
