fix: 修复日报 AI 摘要崩溃('str' object has no attribute 'model')

- _llm_summarize 内 3 处 _llm_call 调用仍传 model 字符串,
  与 _llm_call(config: LLMConfig) 新签名不匹配,生产日报 AI 摘要必崩
- 统一改为传 config 对象;删除不再使用的 model 局部变量
- 新增回归测试:单块/多分块 _llm_summarize → _llm_call 全链路(传 config)
This commit is contained in:
2026-08-12 12:32:55 +08:00
parent 8f2db92d9c
commit 182f788857
2 changed files with 25 additions and 4 deletions
+22
View File
@@ -148,6 +148,28 @@ class TestLlmCallRetry:
rep._llm_call(client, self._cfg(), "p")
assert n["count"] == 2 # 重试 2 次后放弃
def test_llm_summarize_single_chunk_passes_config(self) -> None:
"""_llm_summarize → _llm_call 全链路:必须传 LLMConfig 而非 model 字符串。
回归保护:生产日报曾因 _llm_call 收到 str 报
'str' object has no attribute 'model'。
"""
from scheduler.reporter import _llm_summarize
client, n = self._fake_client(0)
out = _llm_summarize(client, self._cfg(), ["- 新闻A", "- 新闻B"], "20260812")
assert out == "今日要点摘要"
assert n["count"] == 1
def test_llm_summarize_multi_chunk_passes_config(self) -> None:
"""多分块场景:每块 + 合并各调用一次 _llm_call,均传 config。"""
from scheduler.reporter import _llm_summarize
client, n = self._fake_client(0)
# 两条长行保证触发分块
lines = ["- " + "长新闻内容" * 300, "- " + "长新闻内容" * 300]
out = _llm_summarize(client, self._cfg(), lines, "20260812")
assert out == "今日要点摘要"
assert n["count"] == 3 # 2 块 + 1 次合并
class TestCollectXwlb:
"""_collect_xwlb 取数逻辑:应查询日报前一日(已播出的联播),并跳过内容提要。"""