feat: 日报多来源入库(news_event.sources 列,JSON 数组,主源居首)
- EventRow 新增 sources 字段;init_schema 幂等 ALTER 补列(MariaDB) - save_report 写入 sources JSON;_article_sources_full 完整来源列表 - source 字段保持 ≤3 拼接兼容;新增多源完整列表测试 - 已部署 pi5:sources 列写入验证通过(单源数组);完整多源待新数据
This commit is contained in:
+17
-2
@@ -179,17 +179,31 @@ class TestBuildReportData:
|
||||
assert r.events[0].sentiment is None
|
||||
|
||||
def test_multi_source_label(self) -> None:
|
||||
"""去重合并后的多来源 → source 拼接展示(Reuters, CNBC)。"""
|
||||
"""去重合并后的多来源 → source 拼接展示(Reuters, CNBC)+ sources 完整列表。"""
|
||||
now = datetime(2026, 8, 4, 8, 0, 0)
|
||||
ev = _fake_high_event("多来源事件", 5, source_id="reuters",
|
||||
url="https://reuters.com/news/9")
|
||||
# 模拟 M3 去重合并:source_ids 含两个来源
|
||||
# 模拟 M3 去重合并:source_ids 含两个来源(主源 reuters 居首)
|
||||
ev["article"]["source_ids"] = ["reuters", "cnbc"]
|
||||
r = _build_report_data(now, {}, [ev], Counter(), Counter(), Counter(),
|
||||
Counter(), "")
|
||||
assert r.events[0].source == "Reuters, CNBC"
|
||||
assert r.events[0].sources == ["Reuters", "CNBC"] # 主源居首
|
||||
assert r.events[0].url == "https://reuters.com/news/9"
|
||||
|
||||
def test_multi_source_full_list(self) -> None:
|
||||
"""超过 3 个来源:source 截前 3,sources 存完整列表。"""
|
||||
now = datetime(2026, 8, 4, 8, 0, 0)
|
||||
ev = _fake_high_event("四来源事件", 5, source_id="barrons",
|
||||
url="https://barrons.com/news/1")
|
||||
ev["article"]["source_ids"] = ["barrons", "cnbc", "reuters", "ft"]
|
||||
r = _build_report_data(now, {}, [ev], Counter(), Counter(), Counter(),
|
||||
Counter(), "")
|
||||
assert r.events[0].source == "Barron's, CNBC, Reuters" # 前 3 拼接
|
||||
assert r.events[0].sources == [ # 完整 4 个
|
||||
"Barron's", "CNBC", "Reuters", "Financial Times",
|
||||
]
|
||||
|
||||
def test_single_source_falls_back(self) -> None:
|
||||
"""source_ids 为空/单一时回退单源逻辑(不拼接)。"""
|
||||
now = datetime(2026, 8, 4, 8, 0, 0)
|
||||
@@ -199,3 +213,4 @@ class TestBuildReportData:
|
||||
r = _build_report_data(now, {}, [ev], Counter(), Counter(), Counter(),
|
||||
Counter(), "")
|
||||
assert r.events[0].source == "InvestingLive"
|
||||
assert r.events[0].sources == ["InvestingLive"]
|
||||
|
||||
Reference in New Issue
Block a user