from django.contrib import admin
from django.utils.html import format_html
from .models import ChatSession, ChatMessage


class ChatMessageInline(admin.TabularInline):
    model = ChatMessage
    extra = 0
    readonly_fields = ['role', 'content', 'tokens', 'created_at']
    fields = ['role', 'content', 'tokens', 'created_at']
    can_delete = False
    max_num = 0


@admin.register(ChatSession)
class ChatSessionAdmin(admin.ModelAdmin):
    list_display = [
        'session_short', 'tenant', 'visitor_name', 'visitor_email',
        'status', 'message_count', 'handoff_triggered', 'created_at'
    ]
    list_filter = ['tenant', 'status', 'handoff_triggered']
    search_fields = ['visitor_name', 'visitor_email', 'session_id']
    readonly_fields = ['session_id', 'created_at', 'updated_at', 'handoff_at']
    inlines = [ChatMessageInline]

    def session_short(self, obj):
        return obj.session_id.hex[:8]
    session_short.short_description = 'Session'

    def message_count(self, obj):
        return obj.messages.count()
    message_count.short_description = '# Messages'
