Files
bid-doctor/evals/check/export_rewrite.py
YANG JIANKUAN b2b8584321 feat(evals): 留出集生成——风格 C、留出集改写导出;评测可模拟人工确认响应方式
- build.py / mutate.py:补风格 C(叙述型),由封存一侧的会话按封存说明实现;开发集风格 A / B 输出逐字节不变
- build.py:复述要求时去行首编号不再吃掉「2路服务器」这类内容数字
- export_rewrite.py:没有风格 A 稿时从未改写的风格 B 稿导出
- run_check.py:--modes 模拟清单页上人工确认的响应方式(C12 的人工确认点)
- check-eval.md:第 3 步冻结点(a60d16e)

查标代码(server/src、prompts)自冻结后未改。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-04 18:58:52 +08:00

41 lines
1.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""导出风格 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))