This commit is contained in:
@@ -15,11 +15,14 @@ class AIEvaluationSerializer(serializers.ModelSerializer):
|
|||||||
|
|
||||||
class TranscriptionTaskSerializer(serializers.ModelSerializer):
|
class TranscriptionTaskSerializer(serializers.ModelSerializer):
|
||||||
ai_evaluations = AIEvaluationSerializer(many=True, read_only=True)
|
ai_evaluations = AIEvaluationSerializer(many=True, read_only=True)
|
||||||
|
project_title = serializers.CharField(source='project.title', read_only=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = TranscriptionTask
|
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']
|
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']
|
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):
|
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_obj = request.FILES.get('file')
|
||||||
file_url = request.data.get('file_url')
|
file_url = request.data.get('file_url')
|
||||||
|
project_id = request.data.get('project_id')
|
||||||
|
|
||||||
if not file_obj and not file_url:
|
if not file_obj and not file_url:
|
||||||
return Response({'error': '请提供文件或文件URL'}, status=status.HTTP_400_BAD_REQUEST)
|
return Response({'error': '请提供文件或文件URL'}, status=status.HTTP_400_BAD_REQUEST)
|
||||||
@@ -104,10 +105,17 @@ class TranscriptionTaskViewSet(viewsets.ModelViewSet):
|
|||||||
oss_url = file_url
|
oss_url = file_url
|
||||||
|
|
||||||
# 2. 创建数据库记录
|
# 2. 创建数据库记录
|
||||||
task_record = TranscriptionTask.objects.create(
|
task_data = {
|
||||||
file_url=oss_url,
|
'file_url': oss_url,
|
||||||
status=TranscriptionTask.Status.PENDING
|
'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. 调用听悟接口创建任务
|
# 3. 调用听悟接口创建任务
|
||||||
try:
|
try:
|
||||||
|
|||||||
@@ -59,11 +59,11 @@ class CompetitionEnrollmentAdmin(ModelAdmin):
|
|||||||
|
|
||||||
@admin.register(Project)
|
@admin.register(Project)
|
||||||
class ProjectAdmin(ModelAdmin):
|
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']
|
list_filter = ['competition', 'status']
|
||||||
search_fields = ['title', 'contestant__user__nickname']
|
search_fields = ['id', 'title', 'contestant__user__nickname']
|
||||||
inlines = [ProjectFileInline]
|
inlines = [ProjectFileInline]
|
||||||
readonly_fields = ['final_score']
|
readonly_fields = ['id', 'final_score']
|
||||||
|
|
||||||
fieldsets = (
|
fieldsets = (
|
||||||
('基本信息', {
|
('基本信息', {
|
||||||
|
|||||||
Reference in New Issue
Block a user