Files
Scoring-System/backend/ai_services/admin.py

48 lines
2.0 KiB
Python

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',),
}),
)