fix(site-import): GEN2 嵌套分组展平容错 + 提示词钉死扁平输出(Task10 实测 glm-4-flash 常见形态)
Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user