bceb01e8fa
按任务书 01 实现 delivery、library、answers、runs(快照部分)、build 五个模块, scripts/build.py、scripts/scan_library.py 与 config/build.yaml(decode_codes: false)。 交付包整表检查 T1–T4、映射表检查 T5、逐例检查 C01–C13,一例遇到第一项不过即整例跳过。 与任务书原文的出入: - C04 报告表名随视频名配对(负责人 2026-10-16 定)。 - 按两轮独立审阅加严 C11(更多换行符、比例号冒号)、C12(同义词与词根)、 C13(空格、周岁、中文数字、繁体);泄露扫描做 NFKC;关键图只接受能保真重编码的 PNG; YAML 配置拒绝重复键和空路径。 - import-linter 第 1 条拆成互不依赖与不引用其他 cadx 模块两条。 文档:结构.md 第五、六、八部分按实际更新;新增 guides/装配两个库.md;WORK_LOG 更新。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
38 lines
1.3 KiB
Python
38 lines
1.3 KiB
Python
"""装配两个库:读交付包,写出一对同号的资料库与答案库。
|
||
|
||
用法:uv run python scripts/build.py --config config/build.yaml
|
||
终端只打印计数,不打印病例号和资料内容。
|
||
"""
|
||
|
||
import argparse
|
||
from datetime import datetime
|
||
from pathlib import Path
|
||
|
||
from cadx.build import run_build
|
||
|
||
REPO_ROOT = Path(__file__).resolve().parents[1]
|
||
|
||
|
||
def main() -> None:
|
||
parser = argparse.ArgumentParser(description="装配给专家的资料库和标准答案库")
|
||
parser.add_argument("--config", type=Path, required=True, help="build.yaml 的路径")
|
||
config: Path = parser.parse_args().config
|
||
|
||
summary = run_build(config, REPO_ROOT, datetime.now().astimezone())
|
||
|
||
print(f"构建号:{summary.build_id}")
|
||
print(f"资料库:{summary.library_dir}")
|
||
print(f"答案库:{summary.answers_dir}")
|
||
print(f"病例总数:{summary.total_cases}")
|
||
print(f"进库病例:{summary.passed_cases}")
|
||
print(f"跳过病例:{summary.skipped_cases}")
|
||
print(f"认不出编号的行:{summary.unrecognized_rows}")
|
||
by_check = ",".join(f"{check} {n}" for check, n in summary.skipped_by_check.items())
|
||
print(f"按检查编号分的跳过数:{by_check or '无'}")
|
||
print(f"复核清单条数:{summary.review_rows}")
|
||
print(f"跳过清单说明:{summary.skipped_note}")
|
||
|
||
|
||
if __name__ == "__main__":
|
||
main()
|