From 594e2efbf578e657c69ed19a2b81a8219f54e7f0 Mon Sep 17 00:00:00 2001 From: claude_dev Date: Sun, 6 Sep 2026 23:56:05 +0800 Subject: [PATCH] =?UTF-8?q?fix(data):=20fulltext=20=E6=AE=B5=E8=A1=A5=20--?= =?UTF-8?q?limit=20=E9=A2=84=E7=AE=97=E9=97=A8(=E4=B8=89=E8=B7=91=E5=86=92?= =?UTF-8?q?=E7=83=9F7=E5=88=86=E9=92=9F=E9=A9=AC=E6=8B=89=E6=9D=BE)=20[nas?= =?UTF-8?q?]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit _run_fulltext 漏门:new_articles 跨股去重后仍可远超 N(冒烟 2 股×100条 →~150 art @2.3s);真实运行有墙钟兜底故非事故,冒烟语义补齐+回归钉死 --- scripts/data_platform/corpus_download.py | 2 ++ tests/data_platform/test_corpus_download.py | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/scripts/data_platform/corpus_download.py b/scripts/data_platform/corpus_download.py index e4995c9..2b74691 100644 --- a/scripts/data_platform/corpus_download.py +++ b/scripts/data_platform/corpus_download.py @@ -727,6 +727,8 @@ def _run_fulltext(ctx, cl_em, ledgers, recents, new_articles): ctx.reset_stage() seen = set() for art_code, url, show_time in new_articles: + if ctx.budget_exhausted(): + break if art_code in seen or is_done(ctx.lane, "fulltext", art_code): continue try: diff --git a/tests/data_platform/test_corpus_download.py b/tests/data_platform/test_corpus_download.py index f913069..b79801c 100644 --- a/tests/data_platform/test_corpus_download.py +++ b/tests/data_platform/test_corpus_download.py @@ -477,6 +477,17 @@ def test_daily_limit_is_per_stage_and_bounds_pdf_fivecat(root, monkeypatch): assert news_calls == 1 # news 段独立预算未被 ann 挤占 +def test_daily_limit_bounds_fulltext_stage(root, monkeypatch): + """回归(三跑冒烟超时): fulltext 段漏预算门——new_articles 去重后仍可 + 远超 N(2 股×100 条 → ~150 art),冒烟变 7 分钟马拉松。""" + two_arts = [{"code": f"art{i}", "date": "2026-09-06 10:00:00", + "title": f"t{i}", "content": "c", "mediaName": "m", "image": ""} + for i in (1, 2)] + _wire_daily(monkeypatch, root, news_rows=two_arts) + cd.run_lane("daily", limit=2) + assert cd.fetch_article_html.call_count == 2 # 预算 2,非 4(2股×2art) + + def test_daily_express_title_routes_to_pdf(root, monkeypatch): """标题含「业绩快报」→ 进当日 PDF 待下清单(无服务端码,客户端谓词)。""" todo = cd.collect_pdf_candidates(