This commit is contained in:
@@ -159,13 +159,31 @@ class TranscriptionTaskViewSet(viewsets.ModelViewSet):
|
|||||||
result = service.get_task_info(task.task_id)
|
result = service.get_task_info(task.task_id)
|
||||||
|
|
||||||
# 兼容处理响应结构 {"Data": {"TaskStatus": "...", "Result": ...}}
|
# 兼容处理响应结构 {"Data": {"TaskStatus": "...", "Result": ...}}
|
||||||
|
# 有些情况下 SDK 返回的是 JSON 字符串,需要二次解析
|
||||||
|
if isinstance(result, str):
|
||||||
|
import json
|
||||||
|
try:
|
||||||
|
result = json.loads(result)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
data_obj = result.get('Data', result)
|
data_obj = result.get('Data', result)
|
||||||
if not isinstance(data_obj, dict):
|
if not isinstance(data_obj, dict):
|
||||||
|
# 如果 Data 不是字典,可能它本身就是字符串,或者 result 结构更平铺
|
||||||
data_obj = result
|
data_obj = result
|
||||||
|
|
||||||
|
# 防御性编程:确保 data_obj 是字典
|
||||||
|
if not isinstance(data_obj, dict):
|
||||||
|
logger.error(f"Unexpected response format: {type(data_obj)} - {data_obj}")
|
||||||
|
return Response({'error': f"Unexpected response format: {type(data_obj)}"}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
|
||||||
|
|
||||||
task_status = data_obj.get('TaskStatus')
|
task_status = data_obj.get('TaskStatus')
|
||||||
|
|
||||||
if task_status == 'COMPLETE' or task_status == 'COMPLETED':
|
# 兼容其他状态字段名
|
||||||
|
if not task_status:
|
||||||
|
task_status = data_obj.get('Status')
|
||||||
|
|
||||||
|
if task_status == 'COMPLETE' or task_status == 'COMPLETED' or task_status == 'SUCCEEDED':
|
||||||
task.status = TranscriptionTask.Status.SUCCEEDED
|
task.status = TranscriptionTask.Status.SUCCEEDED
|
||||||
|
|
||||||
# 解析结果
|
# 解析结果
|
||||||
|
|||||||
Reference in New Issue
Block a user