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:
2026-10-17 06:04:19 -04:00
parent 14d6f8e153
commit c7373efde2
23 changed files with 1718 additions and 83 deletions
+18 -6
View File
@@ -88,6 +88,7 @@ name = "cadx 里只有 segment 引用 torch、sam2"
type = "forbidden"
source_modules = [
"cadx.delivery", "cadx.library", "cadx.answers", "cadx.runs", "cadx.build", "cadx.ceus",
"cadx.review",
]
forbidden_modules = ["torch", "sam2"]
@@ -97,7 +98,7 @@ name = "segment 不引用其他 cadx 模块"
type = "forbidden"
source_modules = ["cadx.segment"]
forbidden_modules = [
"cadx.delivery", "cadx.library", "cadx.answers", "cadx.runs", "cadx.build",
"cadx.delivery", "cadx.library", "cadx.answers", "cadx.runs", "cadx.build", "cadx.review",
"cadx.ceus", "cadx.llm", "cadx.ledger", "cadx.consult", "cadx.evaluate", "cadx.verdicts",
]
@@ -113,7 +114,7 @@ name = "delivery、library、answers、runs 不引用其他 cadx 模块"
type = "forbidden"
source_modules = ["cadx.delivery", "cadx.library", "cadx.answers", "cadx.runs"]
forbidden_modules = [
"cadx.build", "cadx.ceus", "cadx.segment", "cadx.llm", "cadx.ledger",
"cadx.build", "cadx.review", "cadx.ceus", "cadx.segment", "cadx.llm", "cadx.ledger",
"cadx.consult", "cadx.evaluate", "cadx.verdicts",
]
@@ -123,7 +124,7 @@ name = "ceus 不引用其他 cadx 模块"
type = "forbidden"
source_modules = ["cadx.ceus"]
forbidden_modules = [
"cadx.delivery", "cadx.library", "cadx.answers", "cadx.runs", "cadx.build",
"cadx.delivery", "cadx.library", "cadx.answers", "cadx.runs", "cadx.build", "cadx.review",
"cadx.segment", "cadx.llm", "cadx.ledger", "cadx.consult", "cadx.evaluate", "cadx.verdicts",
]
@@ -133,16 +134,27 @@ name = "build 只引用 delivery、library、answers、runs"
type = "forbidden"
source_modules = ["cadx.build"]
forbidden_modules = [
"cadx.ceus", "cadx.segment", "cadx.llm", "cadx.ledger",
"cadx.review", "cadx.ceus", "cadx.segment", "cadx.llm", "cadx.ledger",
"cadx.consult", "cadx.evaluate", "cadx.verdicts",
]
allow_indirect_imports = true
[[tool.importlinter.contracts]]
# 任务书 03:review(医生核对包)只读已构建好的两个库和 CEUS 运行,只依赖 library、answers、runs,
# 不碰交付包(delivery)、不依赖 build 和 ceus。
name = "review 只引用 library、answers、runs"
type = "forbidden"
source_modules = ["cadx.review"]
forbidden_modules = [
"cadx.delivery", "cadx.build", "cadx.ceus", "cadx.segment", "cadx.llm", "cadx.ledger",
"cadx.consult", "cadx.evaluate", "cadx.verdicts",
]
[[tool.importlinter.contracts]]
# 结构.md 第五部分:交付包的 Excel 只有 delivery 碰。
name = "只有 delivery 引用 openpyxl"
type = "forbidden"
source_modules = ["cadx.library", "cadx.answers", "cadx.runs", "cadx.build"]
source_modules = ["cadx.library", "cadx.answers", "cadx.runs", "cadx.build", "cadx.review"]
forbidden_modules = ["openpyxl"]
allow_indirect_imports = true
@@ -150,6 +162,6 @@ allow_indirect_imports = true
# 结构.md 第五部分:写资料库的图片(去掉元数据)只有 library 碰。
name = "只有 library 引用 PIL"
type = "forbidden"
source_modules = ["cadx.delivery", "cadx.answers", "cadx.runs", "cadx.build"]
source_modules = ["cadx.delivery", "cadx.answers", "cadx.runs", "cadx.build", "cadx.review"]
forbidden_modules = ["PIL"]
allow_indirect_imports = true