fix(site-import): GEN2 嵌套分组展平容错 + 提示词钉死扁平输出(Task10 实测 glm-4-flash 常见形态)

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
浅念
2026-10-20 23:11:08 +08:00
parent 84aa302c8e
commit 9c71fd51d5
2 changed files with 55 additions and 3 deletions
+30
View File
@@ -432,3 +432,33 @@ class TestCrawlWarningsMerge:
draft = generator.build(gen, ANALYSIS_JSON, crawl, SOURCE_TEXT)
assert "logo 为不支持的格式,已跳过" in draft["warnings"]
assert "子页过薄已跳过:/thin" in draft["warnings"]
class TestNestedFlatten:
def test_嵌套分组自动展平(self):
"""Task 10 实测:glm-4-flash 常把键按模板分组嵌套——展平容错。"""
from app.platform.site_import.generator import _flatten_nested
nested = {"system": {"身份描述": "x", "产品统称": "y"},
"extractor": {"采购域": "z"}, "brand_title": "T"}
flat = _flatten_nested(nested)
assert flat == {"身份描述": "x", "产品统称": "y", "采购域": "z", "brand_title": "T"}
def test_本来就扁平原样返回(self):
from app.platform.site_import.generator import _flatten_nested
flat_in = {"身份描述": "x", "brand_title": "T"}
assert _flatten_nested(dict(flat_in)) == flat_in
def test_非dict子值不展平(self):
from app.platform.site_import.generator import _flatten_nested
weird = {"a": "字符串", "b": {"身份描述": "x"}}
assert _flatten_nested(weird) is weird or _flatten_nested(weird) == weird
async def test_generate接受嵌套输出(self):
"""端到端:fake 回嵌套 JSON 也能过 generate。"""
import json as _json
nested = {"system": {"身份描述": "x"}, "brand_title": "T"}
class NestedP:
async def chat(self, m, s):
return "```json\n" + _json.dumps(nested, ensure_ascii=False) + "\n```"
out = await generator.generate(NestedP(), ANALYSIS_JSON)
assert out.get("身份描述") == "x" and out.get("brand_title") == "T"