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:
2026-08-12 13:06:01 +08:00
parent 32e99aeaf6
commit 951276a313
7 changed files with 84 additions and 16 deletions
+4 -2
View File
@@ -113,12 +113,13 @@ def save_report(conn: pymysql.Connection, report: ReportData) -> int:
cur.execute("DELETE FROM news_event WHERE report_id=%s", (report_id,))
for ev in report.events:
sources_json = json.dumps(ev.sources, ensure_ascii=False) if ev.sources else None
cur.execute(
"""
INSERT INTO news_event
(report_id, section, rank, importance, event_type, title,
summary, sentiment, source, url)
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
summary, sentiment, source, sources, url)
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
""",
(
report_id,
@@ -130,6 +131,7 @@ def save_report(conn: pymysql.Connection, report: ReportData) -> int:
ev.summary,
ev.sentiment,
ev.source,
sources_json,
ev.url,
),
)
+4
View File
@@ -22,6 +22,10 @@ class EventRow(BaseModel):
summary: str | None = None
sentiment: str | None = None # positive | negative | neutral | ''
source: str | None = None
sources: list[str] = Field(
default_factory=list,
description="全部来源展示名(JSON 数组,主源居首;多源新闻记录完整列表)",
)
url: str | None = None
+8 -1
View File
@@ -34,11 +34,18 @@ DDL_STATEMENTS: list[str] = [
title VARCHAR(512) NOT NULL COMMENT '标题',
summary TEXT NULL COMMENT '摘要/正文',
sentiment VARCHAR(8) NULL COMMENT 'positive/negative/neutral',
source VARCHAR(64) NULL COMMENT '来源',
source VARCHAR(64) NULL COMMENT '来源(多源时拼接展示名,最多前 3 个)',
sources TEXT NULL COMMENT '全部来源(JSON 数组,主源居首;多源新闻完整列表)',
url VARCHAR(512) NULL COMMENT '原文链接',
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
KEY idx_report_section (report_id, section),
KEY idx_title (title(255))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='日报事件明细'
""",
# 旧表补列(幂等;MariaDB 10.0.2+ 支持 ADD COLUMN IF NOT EXISTS)
"""
ALTER TABLE news_event
ADD COLUMN IF NOT EXISTS sources TEXT NULL
COMMENT '全部来源(JSON 数组,主源居首;多源新闻完整列表)' AFTER source
""",
]