from django.contrib import admin from unfold.admin import ModelAdmin as UnfoldModelAdmin from unfold.admin import StackedInline as UnfoldStackedInline from .models import TranscriptionTask, AIEvaluation, AIEvaluationTemplate class AIEvaluationInline(UnfoldStackedInline): model = AIEvaluation extra = 0 can_delete = True verbose_name = "AI评估结果" verbose_name_plural = "AI评估结果" readonly_fields = ['created_at', 'updated_at', 'raw_response', 'reasoning', 'template'] fields = ('template', 'score', 'evaluation', 'model_selection', 'prompt', 'reasoning', 'status', 'error_message') @admin.register(TranscriptionTask) class TranscriptionTaskAdmin(UnfoldModelAdmin): list_display = ['id', 'status', 'task_id', 'created_at'] list_filter = ['status', 'created_at'] search_fields = ['id', 'task_id', 'transcription', 'summary'] readonly_fields = ['id', 'created_at', 'updated_at', 'task_id'] inlines = [AIEvaluationInline] @admin.register(AIEvaluationTemplate) class AIEvaluationTemplateAdmin(UnfoldModelAdmin): list_display = ['name', 'model_selection', 'score_dimension', 'is_default', 'is_active', 'created_at'] list_filter = ['is_active', 'is_default', 'model_selection', 'created_at'] search_fields = ['name', 'prompt'] @admin.register(AIEvaluation) class AIEvaluationAdmin(UnfoldModelAdmin): list_display = ['id', 'task', 'template', 'score', 'status', 'model_selection', 'created_at'] list_filter = ['status', 'model_selection', 'created_at', 'template'] search_fields = ['task__id', 'evaluation', 'reasoning'] readonly_fields = ['id', 'created_at', 'updated_at', 'raw_response'] fieldsets = ( (None, { 'fields': ('task', 'template', 'status', 'score', 'evaluation') }), ('配置快照', { 'fields': ('model_selection', 'prompt'), 'classes': ('collapse',), }), ('调试信息', { 'fields': ('raw_response', 'reasoning', 'error_message'), 'classes': ('collapse',), }), )