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:
@@ -4,6 +4,28 @@
|
||||
|
||||
---
|
||||
|
||||
## 2026-08-12 会话成果(五):日报多来源入库(news_event.sources 列)
|
||||
|
||||
**背景:** 前端需要展示一条新闻的多个来源;`source` 拼接字段(≤3 个)不够。
|
||||
|
||||
**改动(用户已授权改表,列已由用户添加):**
|
||||
|
||||
| 文件 | 改动内容 |
|
||||
|------|---------|
|
||||
| `report_db/models.py` | `EventRow` 新增 `sources: list[str]`(全部来源展示名,主源居首) |
|
||||
| `report_db/schema.py` | DDL 加 `sources TEXT NULL` 列;`init_schema` 增加幂等 `ALTER TABLE ... ADD COLUMN IF NOT EXISTS sources`(旧表迁移) |
|
||||
| `report_db/db.py` | `save_report` INSERT 写入 sources(JSON 数组) |
|
||||
| `scheduler/reporter.py` | 新增 `_article_sources_full()`(完整来源列表,主源居首);`_article_source_label` 重构为基于它(source 保持 ≤3 拼接兼容);`_build_report_data` 事件写入 `sources` |
|
||||
| `tests/test_report_db.py` | 多源完整列表断言(2 源 / 4 源截断对比 / 单源回退) |
|
||||
|
||||
**DB 迁移:** `news_event.sources` TEXT 列(用户已加);`init_schema()` 幂等补列(MariaDB `ADD COLUMN IF NOT EXISTS`),pi5 实测幂等 OK。
|
||||
|
||||
**部署中踩坑记录:** `rsync -a report_db/ scheduler/reporter.py pi5:/home/pi/intlnews/` 的混合参数把文件散落到目标根目录(report_db/ 带斜杠 = 内容进根、reporter.py 也进了根),导致 pi5 上模块未更新、sources 写入 None。**教训:rsync 多源参数混用目录与文件时目标路径易错,部署后必须 grep 关键标识(如 source_list)验证。** 已清理根目录残留并正确同步。
|
||||
|
||||
**验证:** 单元测试 3 用例(多源完整列表);pi5 实盘:`init_schema` 幂等、日报 report_id=224 sources 列全部写入(`["InvestingLive"]` 单源数组)。当前真实数据无多源新闻入日报(跨源合并发生在历史日期文件,未重新翻译),多源数组待后续新数据自然出现(链路已通,前端可直接读 `sources` JSON 数组)。
|
||||
|
||||
---
|
||||
|
||||
## 2026-08-12 会话成果(四):脚本阶段/模型显性输出
|
||||
|
||||
**背景:** 执行全流程时终端未显性标注"当前阶段",AI 调用的供应商/模型只在客户端初始化时输出一次。
|
||||
|
||||
Reference in New Issue
Block a user