This commit is contained in:
@@ -15,11 +15,14 @@ class AIEvaluationSerializer(serializers.ModelSerializer):
|
||||
|
||||
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']
|
||||
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']
|
||||
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="上传的音频文件")
|
||||
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)
|
||||
|
||||
@@ -82,6 +82,7 @@ class TranscriptionTaskViewSet(viewsets.ModelViewSet):
|
||||
"""
|
||||
file_obj = request.FILES.get('file')
|
||||
file_url = request.data.get('file_url')
|
||||
project_id = request.data.get('project_id')
|
||||
|
||||
if not file_obj and not file_url:
|
||||
return Response({'error': '请提供文件或文件URL'}, status=status.HTTP_400_BAD_REQUEST)
|
||||
@@ -104,10 +105,17 @@ class TranscriptionTaskViewSet(viewsets.ModelViewSet):
|
||||
oss_url = file_url
|
||||
|
||||
# 2. 创建数据库记录
|
||||
task_record = TranscriptionTask.objects.create(
|
||||
file_url=oss_url,
|
||||
status=TranscriptionTask.Status.PENDING
|
||||
)
|
||||
task_data = {
|
||||
'file_url': oss_url,
|
||||
'status': TranscriptionTask.Status.PENDING
|
||||
}
|
||||
if project_id:
|
||||
try:
|
||||
task_data['project_id'] = int(project_id)
|
||||
except (ValueError, TypeError):
|
||||
pass # Ignore invalid project_id
|
||||
|
||||
task_record = TranscriptionTask.objects.create(**task_data)
|
||||
|
||||
# 3. 调用听悟接口创建任务
|
||||
try:
|
||||
|
||||
@@ -59,11 +59,11 @@ class CompetitionEnrollmentAdmin(ModelAdmin):
|
||||
|
||||
@admin.register(Project)
|
||||
class ProjectAdmin(ModelAdmin):
|
||||
list_display = ['title', 'competition', 'contestant', 'status', 'final_score', 'created_at']
|
||||
list_display = ['id', 'title', 'competition', 'contestant', 'status', 'final_score', 'created_at']
|
||||
list_filter = ['competition', 'status']
|
||||
search_fields = ['title', 'contestant__user__nickname']
|
||||
search_fields = ['id', 'title', 'contestant__user__nickname']
|
||||
inlines = [ProjectFileInline]
|
||||
readonly_fields = ['final_score']
|
||||
readonly_fields = ['id', 'final_score']
|
||||
|
||||
fieldsets = (
|
||||
('基本信息', {
|
||||
|
||||
Reference in New Issue
Block a user