From 809aab9e026efd4842f67195dbda2a098529938d Mon Sep 17 00:00:00 2001 From: jeremygan2021 Date: Wed, 11 Mar 2026 21:58:09 +0800 Subject: [PATCH] tingwu_new --- backend/ai_services/bailian_service.py | 35 ++++++++++++++++++++++---- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/backend/ai_services/bailian_service.py b/backend/ai_services/bailian_service.py index 3a1a5dc..bb9ce53 100644 --- a/backend/ai_services/bailian_service.py +++ b/backend/ai_services/bailian_service.py @@ -50,11 +50,36 @@ class BailianService: chapter_context = "" if task.auto_chapters_data: try: - # 确保是字符串格式 - if isinstance(task.auto_chapters_data, (dict, list)): - chapters_str = json.dumps(task.auto_chapters_data, ensure_ascii=False, indent=2) - else: - chapters_str = str(task.auto_chapters_data) + chapters_str = "" + # 处理特定的 AutoChapters 结构 + # 格式: {"AutoChapters": [{"Id": 1, "Start": 740, "End": 203436, "Headline": "...", "Summary": "..."}, ...]} + if isinstance(task.auto_chapters_data, dict) and 'AutoChapters' in task.auto_chapters_data: + chapters = task.auto_chapters_data['AutoChapters'] + if isinstance(chapters, list): + chapter_lines = [] + for ch in chapters: + # 毫秒转 MM:SS + start_ms = ch.get('Start', 0) + end_ms = ch.get('End', 0) + start_str = f"{start_ms // 60000:02d}:{(start_ms // 1000) % 60:02d}" + end_str = f"{end_ms // 60000:02d}:{(end_ms // 1000) % 60:02d}" + + headline = ch.get('Headline', '无标题') + summary = ch.get('Summary', '') + + line = f"- [{start_str} - {end_str}] {headline}" + if summary: + line += f"\n 摘要: {summary}" + chapter_lines.append(line) + + chapters_str = "\n".join(chapter_lines) + + # 如果上面的解析为空(或者格式不匹配),回退到通用 JSON dump + if not chapters_str: + if isinstance(task.auto_chapters_data, (dict, list)): + chapters_str = json.dumps(task.auto_chapters_data, ensure_ascii=False, indent=2) + else: + chapters_str = str(task.auto_chapters_data) chapter_context = f"\n\n【章节与时间戳信息】\n{chapters_str}\n\n(提示:请结合上述章节时间戳信息,分析发言者的语速、节奏变化及停顿情况。)" except Exception as e: