From daf594ac3ae353a0b303e7bcbc2f3c4005e98eb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B5=85=E5=BF=B5?= Date: Tue, 20 Oct 2026 22:07:54 +0800 Subject: [PATCH] =?UTF-8?q?fix(site-import):=20crawl=20=E5=B1=82=E6=B3=A8?= =?UTF-8?q?=E8=AE=B0=E5=B9=B6=E5=85=A5=E8=8D=89=E7=A8=BF=E5=8C=85=20warnin?= =?UTF-8?q?gs=EF=BC=88Task8=20=E8=AF=84=E5=AE=A1=E6=8A=98=E5=85=A5?= =?UTF-8?q?=EF=BC=8Cspec=20=C2=A73.1=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Code --- app/platform/site_import/generator.py | 4 +++- tests/test_site_import_generator.py | 13 +++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/app/platform/site_import/generator.py b/app/platform/site_import/generator.py index 769f394..5f60e97 100644 --- a/app/platform/site_import/generator.py +++ b/app/platform/site_import/generator.py @@ -402,7 +402,9 @@ def build(gen: dict, analysis: dict, crawl: dict, source_text: str) -> dict: gen = dict(gen or {}) analysis = dict(analysis or {}) crawl = dict(crawl or {}) - warnings: list[str] = [] + # crawl 层注记(logo 格式/大小跳过、薄子页跳过——Task 8 评审折入: + # spec §3.1 要求 logo 跳过进 warnings 注记,此前被静默丢弃) + warnings: list[str] = [str(w) for w in (crawl.get("warnings") or []) if w] src = source_text or crawl.get("pages_text") or "" missing: list[str] = [] diff --git a/tests/test_site_import_generator.py b/tests/test_site_import_generator.py index 13752fe..0671cc7 100644 --- a/tests/test_site_import_generator.py +++ b/tests/test_site_import_generator.py @@ -419,3 +419,16 @@ class TestSpecsStrictBool: facts = draft["prompts"]["company_facts"] assert ("参数未公布" in facts) or ("兜底" in facts) assert any(w.startswith("规格判定:不公开") for w in draft["warnings"]) + + +class TestCrawlWarningsMerge: + def test_crawl层注记并入草稿包warnings(self): + """Task 8 评审:logo 跳过/薄子页跳过等 crawl 层注记必须进 warnings(spec §3.1)。""" + gen = dict(_MIN_GEN) if "_MIN_GEN" in globals() else { + "身份描述": "你是销售", "产品统称": "产品", "产品统称EN": "products", + "产品类别清单": "产品", "规格追问三要素": "场景", "好差示例组": "示例", + "关注信息": "信息", "固定追问句": "问句", "推荐建议": "建议"} + crawl = dict(CRAWL, warnings=["logo 为不支持的格式,已跳过", "子页过薄已跳过:/thin"]) + draft = generator.build(gen, ANALYSIS_JSON, crawl, SOURCE_TEXT) + assert "logo 为不支持的格式,已跳过" in draft["warnings"] + assert "子页过薄已跳过:/thin" in draft["warnings"]