Files
iomgaa bceb01e8fa feat: 装配两个库(不含 CEUS 结果)
按任务书 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>
2026-10-16 03:00:20 -04:00

38 lines
1.3 KiB
Python
Raw Permalink 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.
"""装配两个库:读交付包,写出一对同号的资料库与答案库。
用法: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()