feat(review): 医生核对包入口;CEUS 运行目录的读取收进 runs
- 新模块 review(组织层,只依赖 library、answers、runs):把一次构建和它装入的 CEUS 运行整理成医生可读的文件夹(CSV 带 BOM、说明与报告转 PDF、图片视频逐字节拷贝), 入口 scripts/review_pack.py + config/review_pack.yaml。任务书 03。 - 读 CEUS 运行目录(failed.csv、结果目录、关键帧文件)从 build 挪进 runs,build 与 review 都经它读;failed.csv 读取在边界上收严(步号须为整数、视频号不重复、列数固定)。 - library、answers 补只读函数;import-linter 增 review 契约。 - 文档:guides/医生核对包.md(过一轮硕士生阅读),结构.md 第三至八部分同步。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -29,6 +29,7 @@ from cadx.answers import read_aliases
|
||||
from cadx.build import run_build
|
||||
from cadx.ceus import ANCHOR_SLOTS
|
||||
from cadx.library import list_aliases, read_ultrasound
|
||||
from cadx.review import run_review_pack
|
||||
from conftest import CEUS_YAML
|
||||
from fake_ceus_video import HEIGHT, LESION, SPLIT, WIDTH, write_video
|
||||
from fake_delivery import REPO_ROOT, make_delivery, write_config
|
||||
@@ -243,6 +244,25 @@ def test_build_reads_real_run_layout(
|
||||
assert route.tic["keyframes"]["F1"]["video_time_s"] == pytest.approx(15.0, abs=0.1)
|
||||
assert route.tic["keyframes"]["F2"]["located"] is False
|
||||
|
||||
# 医生核对包也读这个真实布局:TIC 曲线图和回放视频按字节拷进病例目录。
|
||||
pack_config = tmp_path / "review_pack.yaml"
|
||||
pack_config.write_text(
|
||||
yaml.safe_dump(
|
||||
{
|
||||
"library_dir": str(result.library_dir),
|
||||
"answers_dir": str(result.answers_dir),
|
||||
"output_root": str(tmp_path / "review_pack"),
|
||||
}
|
||||
),
|
||||
encoding="utf-8",
|
||||
)
|
||||
pack = run_review_pack(pack_config, REPO_ROOT, datetime(2026, 10, 17, 12, 0, 0).astimezone())
|
||||
case_dir = pack.pack_dir / "病例" / "P001"
|
||||
assert (case_dir / "TIC曲线.png").read_bytes() == (run_dir / "U001" / "tic.png").read_bytes()
|
||||
assert (case_dir / "回放视频.mp4").read_bytes() == (
|
||||
run_dir / "U001" / "overlay.mp4"
|
||||
).read_bytes()
|
||||
|
||||
|
||||
def test_unreadable_video_fails_at_step_1_and_next_case_runs(
|
||||
tmp_path: Path,
|
||||
|
||||
Reference in New Issue
Block a user