diff --git a/backend/ai_services/services.py b/backend/ai_services/services.py index 8c95f1a..8a6f702 100644 --- a/backend/ai_services/services.py +++ b/backend/ai_services/services.py @@ -183,8 +183,24 @@ class AliyunTingwuService: # 3. 解析结果 task_result = data_obj.get('Result', {}) + # 兼容处理:如果 Result 为空,或者不存在,尝试直接使用 data_obj 作为结果源 + # 某些情况下,Summarization/AutoChapters 可能直接位于 Data 层级 + if not task_result: + task_result = data_obj + + # 辅助函数:从源字典或其 Result 子字典中获取字段 + def get_data_field(source, key): + # 1. 尝试直接从 task_result 获取 (如果 task_result 就是 Data 本身,这里也会生效) + if isinstance(source, dict) and key in source: + return source[key] + # 2. 如果 source 是 Data,尝试从 source['Result'] 获取 + if isinstance(source, dict) and 'Result' in source and isinstance(source['Result'], dict): + if key in source['Result']: + return source['Result'][key] + return None + # --- A. 处理逐字稿 (Transcription) --- - transcription_data = task_result.get('Transcription', {}) + transcription_data = get_data_field(task_result, 'Transcription') or get_data_field(data_obj, 'Transcription') or {} # 处理 URL 下载 if isinstance(transcription_data, str) and transcription_data.startswith('http'): @@ -233,7 +249,7 @@ class AliyunTingwuService: task.transcription = "\n".join(full_text_lines) # --- B. 处理 AI 总结 (Summarization) --- - summarization = task_result.get('Summarization', {}) + summarization = get_data_field(task_result, 'Summarization') or get_data_field(data_obj, 'Summarization') or {} # 处理 URL 下载 if isinstance(summarization, str) and summarization.startswith('http'): @@ -270,12 +286,14 @@ class AliyunTingwuService: summary_text.append(summarization['Text']) elif 'Headline' in summarization: summary_text.append(summarization['Headline']) + elif 'ParagraphSummary' in summarization: + summary_text.append(summarization['ParagraphSummary']) if summary_text: task.summary = "\n".join(summary_text) # --- C. 处理章节 (AutoChapters) --- - auto_chapters = task_result.get('AutoChapters', []) + auto_chapters = get_data_field(task_result, 'AutoChapters') or get_data_field(data_obj, 'AutoChapters') or [] # 处理 URL 下载 if isinstance(auto_chapters, str) and auto_chapters.startswith('http'):