"""导出风格 B 改写的输入:从风格 A 的投标文件稿里取出要改写的表格行(evals/check/prompts/style-B.md)。 cd server && ../.venv/bin/python ../evals/check/export_rewrite.py <招标文件> [...] 输出:evals/out/check/<招标文件>-B/rewrite-input.json(数组,字段 key、requirement、answer)。 没有风格 A 稿时(留出集)从还没改写的风格 B 稿取。 """ from __future__ import annotations import json import pathlib import sys OUT = pathlib.Path(__file__).resolve().parents[1] / "out" / "check" for tender in sys.argv[1:]: # 留出集没有风格 A:从还没改写的风格 B 稿取(表格行的要求 / 响应两栏和 A 一样);B 已经改写过就不能再取 src = OUT / f"{tender}-A" if not (src / "spec.json").exists(): src = OUT / f"{tender}-B" if (src / "rewrite.json").exists(): sys.exit(f"{tender}:没有风格 A 稿,风格 B 稿已经按 rewrite.json 改写过,不能再导出改写输入") spec = json.loads((src / "spec.json").read_text()) rows: dict[str, dict[str, str]] = {} for v in spec["volumes"]: for b in v["blocks"]: cols = b.get("columns") or [] if b.get("type") != "table" or "requirement" not in cols or "answer" not in cols: continue for r in [*b["rows"], *(b.get("pool") or [])]: if r.get("key") and r["key"] not in rows: rows[r["key"]] = { "key": r["key"], "requirement": r["cells"][cols.index("requirement")], "answer": r["cells"][cols.index("answer")], } d = OUT / f"{tender}-B" d.mkdir(exist_ok=True) (d / "rewrite-input.json").write_text(json.dumps(list(rows.values()), ensure_ascii=False, indent=1)) print(tender, len(rows))