from rest_framework import serializers

from apps.repository.analytics.models import (
    AccessEvent,
    AIDocumentInsight,
    DownloadEvent,
    ResearchTrend,
    SearchEvent,
    UsageRollup,
)


class AccessEventSerializer(serializers.ModelSerializer):
    class Meta:
        model = AccessEvent
        fields = ("id", "document", "user", "country", "timestamp")
        read_only_fields = fields


class DownloadEventSerializer(serializers.ModelSerializer):
    class Meta:
        model = DownloadEvent
        fields = ("id", "document", "version", "user", "country", "timestamp")
        read_only_fields = fields


class SearchEventSerializer(serializers.ModelSerializer):
    class Meta:
        model = SearchEvent
        fields = ("id", "query", "filters", "result_count", "clicked_document", "user", "timestamp")
        read_only_fields = fields


class UsageRollupSerializer(serializers.ModelSerializer):
    class Meta:
        model = UsageRollup
        fields = ("id", "period_start", "period_end", "dimension", "key", "metrics", "computed_at")
        read_only_fields = fields


class AIDocumentInsightSerializer(serializers.ModelSerializer):
    class Meta:
        model = AIDocumentInsight
        fields = ("id", "document", "kind", "payload", "confidence", "model_used", "generated_at", "accepted_by_user")
        read_only_fields = fields


class ResearchTrendSerializer(serializers.ModelSerializer):
    class Meta:
        model = ResearchTrend
        fields = ("id", "period_start", "period_end", "kind", "title", "description", "score", "generated_at")
        read_only_fields = fields
