fix(deep-analyzer, srt): correct Zhipu API thinking parameter and fix metadata handling

Root cause:
1. thinking.type="disabled" caused ASR correction accuracy degradation
2. SRTProcessor didn't flatten nested metadata structure
3. Low-quality auto-generated summary section
4. duration field type handling issue

Changes:
- DeepAnalyzer: Remove thinking.type="disabled" to enable default thinking mode
- SRTProcessor: Add metadata flattening for nested structures
- SRTProcessor: Remove low-quality summary section generation
- SRTProcessor: Add duration type checking (string or int)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-21 21:41:29 +08:00
parent 1f599f0c60
commit 7ac4937c48
2 changed files with 33 additions and 21 deletions
+23 -13
View File
@@ -166,7 +166,7 @@ class SRTProcessor(BaseProcessor):
metadata_file: 元数据文件路径
Returns:
元数据字典
元数据字典(扁平化后的)
"""
path = Path(metadata_file)
if not path.exists():
@@ -174,7 +174,21 @@ class SRTProcessor(BaseProcessor):
return {}
with open(path, 'r', encoding='utf-8') as f:
return json.load(f)
raw_metadata = json.load(f)
# 扁平化嵌套结构(与 AnalyzeProcessor._normalize_metadata 一致)
if not raw_metadata:
return {}
# 如果已经是扁平结构(顶层有 title)
if 'title' in raw_metadata:
return raw_metadata
# 处理嵌套结构 {metadata: {...}, stats: {...}}
if 'metadata' in raw_metadata:
return raw_metadata['metadata'].copy()
return raw_metadata
def _extract_tags(self, paragraphs: List[str]) -> List[str]:
"""从段落中提取标签
@@ -216,16 +230,7 @@ class SRTProcessor(BaseProcessor):
# 构建内容
content_parts = [frontmatter, ""]
# 添加摘要(可选)
if paragraphs:
content_parts.append("## 摘要")
content_parts.append("")
# 使用第一段作为简单摘要
first_para = paragraphs[0][:200] if len(paragraphs[0]) > 200 else paragraphs[0]
content_parts.append(first_para + ("..." if len(paragraphs[0]) > 200 else ""))
content_parts.append("")
# 添加内容
# 直接添加内容,不生成摘要部分
content_parts.append("## 内容")
content_parts.append("")
for para in paragraphs:
@@ -271,7 +276,12 @@ class SRTProcessor(BaseProcessor):
# 时长(视频)
duration = metadata.get('duration', 0)
if duration:
duration_str = self._format_duration(duration)
# 如果 duration 已经是字符串格式(如 "05:42"),直接使用
# 否则(整数秒数)调用 _format_duration 转换
if isinstance(duration, str):
duration_str = duration
else:
duration_str = self._format_duration(duration)
lines.append(f'duration: {duration_str}')
# BVID