feat: AI 模型按场景独立配置(llm_scenes)+ 去重多来源合并

- system.yaml 新增 llm_scenes(translation / daily_report,含用途/方法/模型要求说明)
- load_llm_config(scene=...) 场景覆盖;日报摘要 temperature 0.3 硬编码 → 配置
- M3 去重:唯一篇记录 source_ids(跨源重复合并,首个来源为 source_id)
- source_ids 经翻译透传至 events,日报事件 source 多来源拼接展示(≤3 个)
- 已部署 pi5:merge 实证 10 源合并;日报 report_id=224 正常入库
This commit is contained in:
2026-08-12 09:56:55 +08:00
parent 9aa44e610d
commit c72a5ed13a
13 changed files with 331 additions and 20 deletions
+23
View File
@@ -463,6 +463,29 @@ class TestLoadLLMConfig:
config = load_llm_config(provider="deepseek")
assert config.max_attempts == 3
def test_scene_translation(self, monkeypatch):
"""translation 场景覆盖 llm 默认段(模型/温度)。"""
monkeypatch.setenv("DEEPSEEK_API_KEY", "sk-deepseek-test-key")
config = load_llm_config(provider="deepseek", scene="translation")
assert config.model == "deepseek-v4-flash"
assert config.temperature == 0.1
assert config.max_attempts == 3
def test_scene_daily_report(self, monkeypatch):
"""daily_report 场景独立配置(温度 0.3 / max_tokens 1500)。"""
monkeypatch.setenv("DEEPSEEK_API_KEY", "sk-deepseek-test-key")
config = load_llm_config(scene="daily_report")
assert config.provider == "deepseek"
assert config.model == "deepseek-v4-flash"
assert config.temperature == 0.3
assert config.max_tokens == 1500
def test_scene_unknown_falls_back_to_default(self, monkeypatch):
"""未定义的场景名回退 llm 默认段,不报错。"""
monkeypatch.setenv("DEEPSEEK_API_KEY", "sk-deepseek-test-key")
config = load_llm_config(provider="deepseek", scene="not_exists")
assert config.temperature == 0.1
# --------------------------------------------------------------------------- #
# translate_and_extract(mock LLM)