from rest_framework import serializers from .models import TranscriptionTask, AIEvaluation, AIEvaluationTemplate class AIEvaluationTemplateSerializer(serializers.ModelSerializer): class Meta: model = AIEvaluationTemplate fields = ['id', 'name', 'model_selection', 'prompt', 'is_active', 'created_at'] class AIEvaluationSerializer(serializers.ModelSerializer): template = AIEvaluationTemplateSerializer(read_only=True) class Meta: model = AIEvaluation fields = ['id', 'template', 'score', 'evaluation', 'model_selection', 'prompt', 'reasoning', 'status', 'error_message', 'created_at', 'updated_at'] class TranscriptionTaskSerializer(serializers.ModelSerializer): ai_evaluations = AIEvaluationSerializer(many=True, read_only=True) project_title = serializers.CharField(source='project.title', read_only=True) class Meta: model = TranscriptionTask fields = ['id', 'file_url', 'task_id', 'status', 'transcription', 'summary', 'error_message', 'created_at', 'updated_at', 'transcription_data', 'summary_data', 'auto_chapters_data', 'ai_evaluations', 'project', 'project_title'] read_only_fields = ['id', 'file_url', 'task_id', 'status', 'transcription', 'summary', 'error_message', 'created_at', 'updated_at', 'transcription_data', 'summary_data', 'auto_chapters_data', 'ai_evaluations', 'project_title'] class TranscriptionUploadSerializer(serializers.Serializer): file = serializers.FileField(help_text="上传的音频文件", required=False) file_url = serializers.URLField(help_text="音频文件的URL地址", required=False) project_id = serializers.IntegerField(help_text="关联的参赛项目ID", required=False)