feat(ceus): 任务书 02 第一阶段——底层和分割之前的算法;修复 C14
任务书 01 遗留修复(C14): - library 新增 check_key_image(path):关键图能逐像素保真重编码时返回 None,否则返回原因; _write_clean_png 的判断移过去,自身保留断言性质报错(走到这里说明 build 漏了检查)。 - build 写库前对每例调用,返回原因的整例跳过,记 C14「关键图能原样重编码」,涉及值写原因。 - 原来三条「关键图格式不对整次构建停下」的测试改为整例跳过,另加非 PNG、library 漏检报错两条。 - 结构.md 第八部分、guides/装配两个库.md 相应几行改掉。 第一阶段(src/cadx/ceus/): - 照搬旧 geometry、video_decoder、research_config、split_screen、green_prompt、prompt_frames、 mapping,去掉产品层,注释改中文。 - 配置类去掉全部默认值,strict、extra=forbid、frozen;新建 config/ceus.yaml(paths、ceus 两段), 数值照抄旧 yaml,逐项注明出处。删去 source_view/target_view、effective_region、mapping 锚点; 旧代码写死的分屏抽帧数 25 和搜索区间 (0.35, 0.65) 改成配置,值不变。 - 视频解码改为按路径用 cv2 逐帧读。 - 坐标换算改为两个视图矩形左上角之差,不再用按某种宽度写死的锚点。 - 造影画面在哪一半:两半各自选提示帧,恰好一半有才定,否则抛 ContrastSideError(CeusCaseError 子类,带步号和原因,供第三阶段记 failed.csv)。 - 旧测试照搬(改 import 与配置读取方式),因上述改动不再成立的删去;新增两处修改的手算测试。 - import-linter 加「ceus 不引用其他 cadx 模块」。依赖加 numpy、opencv-python-headless。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
"""CEUS 测试共用的夹具:读 `config/ceus.yaml` 的 `ceus` 段。
|
||||
|
||||
配置不设默认值,旧测试里靠默认值构造配置的地方改用这里的取值;需要不同取值的测试用
|
||||
`model_copy(update=...)` 改那一项。
|
||||
"""
|
||||
|
||||
from pathlib import Path
|
||||
from typing import Any, cast
|
||||
|
||||
import pytest
|
||||
import yaml
|
||||
|
||||
from cadx.ceus import CeusConfig
|
||||
|
||||
CEUS_YAML = Path(__file__).resolve().parents[1] / "config" / "ceus.yaml"
|
||||
|
||||
|
||||
def load_ceus_section() -> dict[str, Any]:
|
||||
"""`config/ceus.yaml` 的 `ceus` 段原样读成字典(每次新读一份,调用方可以改)。"""
|
||||
document = cast(dict[str, Any], yaml.safe_load(CEUS_YAML.read_text(encoding="utf-8")))
|
||||
return cast(dict[str, Any], document["ceus"])
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def ceus_config() -> CeusConfig:
|
||||
"""校验过的 `ceus` 段。"""
|
||||
return CeusConfig.model_validate(load_ceus_section())
|
||||
Reference in New Issue
Block a user