diff --git a/backend/ai_services/serializers.py b/backend/ai_services/serializers.py index 773134c..336fae4 100644 --- a/backend/ai_services/serializers.py +++ b/backend/ai_services/serializers.py @@ -4,5 +4,8 @@ from .models import TranscriptionTask class TranscriptionTaskSerializer(serializers.ModelSerializer): class Meta: model = TranscriptionTask - fields = ['id', 'file_url', 'task_id', 'status', 'transcription', 'summary', 'error_message', 'created_at', 'updated_at'] - read_only_fields = ['id', 'file_url', 'task_id', 'status', 'transcription', 'summary', 'error_message', 'created_at', 'updated_at'] + fields = ['id', 'file_url', 'task_id', 'status', 'transcription', 'summary', 'error_message', 'created_at', 'updated_at', 'score', 'evaluation'] + read_only_fields = ['id', 'file_url', 'task_id', 'status', 'transcription', 'summary', 'error_message', 'created_at', 'updated_at', 'score', 'evaluation'] + +class TranscriptionUploadSerializer(serializers.Serializer): + file = serializers.FileField(help_text="上传的音频文件") diff --git a/backend/ai_services/views.py b/backend/ai_services/views.py index 9ac6620..26e6230 100644 --- a/backend/ai_services/views.py +++ b/backend/ai_services/views.py @@ -6,8 +6,9 @@ from rest_framework.response import Response from rest_framework.parsers import MultiPartParser, FormParser, JSONParser from rest_framework.permissions import AllowAny from django.conf import settings +from drf_spectacular.utils import extend_schema, OpenApiParameter, OpenApiTypes from .models import TranscriptionTask -from .serializers import TranscriptionTaskSerializer +from .serializers import TranscriptionTaskSerializer, TranscriptionUploadSerializer from .services import AliyunTingwuService logger = logging.getLogger(__name__) @@ -57,6 +58,21 @@ class TranscriptionTaskViewSet(viewsets.ModelViewSet): serializer_class = TranscriptionTaskSerializer parser_classes = (MultiPartParser, FormParser) + @extend_schema( + request={ + 'multipart/form-data': { + 'type': 'object', + 'properties': { + 'file': { + 'type': 'string', + 'format': 'binary' + } + }, + 'required': ['file'] + } + }, + responses={201: TranscriptionTaskSerializer} + ) def create(self, request, *args, **kwargs): """ 上传音频文件并创建听悟转写任务 @@ -113,6 +129,12 @@ class TranscriptionTaskViewSet(viewsets.ModelViewSet): return Response({'error': str(e)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR) @action(detail=True, methods=['get']) + @extend_schema( + parameters=[ + OpenApiParameter("id", OpenApiTypes.UUID, OpenApiParameter.PATH, description="Task ID"), + ], + responses={200: TranscriptionTaskSerializer} + ) def refresh_status(self, request, pk=None): """ 刷新任务状态并获取结果