fix: 修复补跑历史日期的静默空转与日报日期错位 (P0-3/P0-4)
- run_step: 补跑保护——历史日期跳过 crawler(首页只含当天内容)并告警,复用已有 raw 数据 - run_step: report 步骤改用传入的 date_str,不再硬编码 date.today() - 新增 4 个补跑相关测试,修正 3 个既有测试适配新行为 - 全量 259 passed(3 个 crawler 基线失败与本次无关)
This commit is contained in:
+16
-2
@@ -220,15 +220,29 @@ def run_step(name: str, date_str: str) -> StepResult:
|
||||
|
||||
返回: StepResult。
|
||||
"""
|
||||
# 补跑保护:抓取类步骤只能产生当天数据(网站首页只含当前内容,历史文章已滚走),
|
||||
# 补跑历史日期时跳过抓取并告警,复用已有 data/raw/*/{date_str} 数据。
|
||||
# 注意:仅保护 crawler; xwlb 走 API 支持任意历史日期,无需跳过。
|
||||
if name == "crawler" and date_str != date.today().strftime("%Y%m%d"):
|
||||
started = datetime.now()
|
||||
logger.warning(
|
||||
"补跑模式:首页只含当天内容,无法补抓 {};跳过抓取,复用已有 data/raw/*/{}",
|
||||
date_str, date_str,
|
||||
)
|
||||
return StepResult(
|
||||
name=name, success=True, elapsed_sec=0.0,
|
||||
tail_msg="补跑跳过(抓取只能产生当天数据)", started_at=started,
|
||||
)
|
||||
|
||||
# report 步骤:内部函数,不走子进程
|
||||
# 日报按当天日期生成: 新闻由 _collect_news_events 回溯过去 30 小时,
|
||||
# 日报按 date_str 日期生成: 新闻由 _collect_news_events 回溯过去 30 小时,
|
||||
# xwlb 由 _collect_xwlb 固定取前一日(已播出)联播。
|
||||
if name == "report":
|
||||
started = datetime.now()
|
||||
try:
|
||||
from .reporter import generate_report # noqa: E402
|
||||
|
||||
report_date = date.today().strftime("%Y%m%d")
|
||||
report_date = date_str
|
||||
logger.info("日报: report_date={} (新闻 30h 回溯, xwlb 前一日)", report_date)
|
||||
|
||||
path = generate_report(report_date, upload=True)
|
||||
|
||||
Reference in New Issue
Block a user