feat(build): 资料库装入全量 CEUS 结果;补 CEUS 定量使用说明

- config/build.yaml 的 ceus_run 指向全量运行 runs/ceus/20261016-090325-1de88a5-dirty;
  test_committed_config_is_valid 随之改为断言指向 runs/ceus/ 下跑完的运行目录。
- config/ceus.yaml 配准门槛注释注明全量运行复算的分布相同。
- 新增 research-wiki/guides/CEUS定量.md(已过一轮硕士生阅读);装配两个库.md 补上 CEUS 运行与
  交付包的三条核对、finished.json;结构.md 行数表按当前代码更新。
- WORK_LOG 记任务书 02 完成情况。

来源:任务书 02 第四阶段。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-16 09:49:53 -04:00
parent 1de88a5d0a
commit 2753ea7721
7 changed files with 230 additions and 13 deletions
+3 -2
View File
@@ -47,7 +47,7 @@
### ceus_run
指向一次**跑完的** CEUS 运行目录。目录不存在、名字以 `.partial` 结尾(那次运行没跑完)、缺 `failed.csv` 或 `snapshot/snapshot.json`,整次构建在建目录之前停下。目录合规时,按视频号找每例的结果,找不到或 CEUS 在这一例上失败的按 C15 跳过(第四节)。
指向一次**跑完的** CEUS 运行目录。目录不存在、名字以 `.partial` 结尾(那次运行没跑完)、缺 `failed.csv` 或 `snapshot/snapshot.json`,或快照里 `ceus.yaml` 的 `paths.delivery_dir` 与本文件的 `delivery_dir` 不是同一路径(那次运行跑的不是这份交付包),整次构建在建目录之前停下。目录合规时,按视频号找每例的结果,找不到或 CEUS 在这一例上失败的按 C15 跳过(第四节)。找到的结果,`summary.json` 里记的视频 SHA-256 和推注时间要与交付包一致;不一致说明视频或推注时间在那次运行之后改过,整次构建停下(这是整次运行与交付包对不上,不是单例问题),要重跑 CEUS 定量。
### 映射表的格式
@@ -131,7 +131,8 @@ review.csv
| 文件 | 内容 |
| --- | --- |
| `manifest.json` | 构建号、跳过清单的说明句(`skipped_note`)、本目录其余全部文件(含 `snapshot/` 下的)的 SHA-256 |
| `snapshot/snapshot.json` | 构建号、完整 git 提交号、工作区是否干净、`git diff HEAD` 的 SHA-256、Python 版本、`uv.lock` 的 SHA-256、开始和结束时间、各配置文件的 SHA-256 |
| `snapshot/snapshot.json` | 构建号、完整 git 提交号、工作区是否干净、`git diff HEAD` 的 SHA-256、Python 版本、`uv.lock` 的 SHA-256、开始时间、各配置文件的 SHA-256(开跑时写) |
| `snapshot/finished.json` | 结束时间(跑完才写) |
| `snapshot/build.yaml` 等 | 这次所用配置的原文副本。配置文件以后改了,这次构建用的是什么仍然查得到 |
| `aliases.csv` | 化名、三位病例号、视频号(`U` 加病例号)。会诊产物只用化名,评价靠这张表接回真实病例;CEUS 定量的结果按视频号接回 |
| `diagnoses.csv` | 化名、病例号、临床表、超声表、MR 表各自的诊断编码、诊断名(不解码时留空)。三张表各存一份,用哪一份算分由评价决定(进库病例已过 C10,三份相同;分开存是为了保留各表原值,评价口径不必在装配时定) |