# 工作记录 只记当前状态。一个阶段完成后压缩成几行,细节看提交说明和 `research-wiki/`。 ## 当前目标 任务书 04(核对包改成医生读得懂、资料库超声一路只留给 agent 的参数)已完成,待负责人验收;核对包待交医生。下一步见文末。 ## 已完成 - 2026-10-15 盘点旧项目(远程 `CADx-4-CAD`)与两个参考项目(ClinDB-ReviewBench、dissect3),结论写进 `research-wiki/design/0001-从产品重构为研究原型.md`。 - 2026-10-15 旧项目复制到 `reference/CADx-4-CAD/`:工作区(含没进 git 的 `debugs/t1_local_debug.py`、`debugs/medsam2_local_track.py` 和 `tic_lognormal_replay.py` 的未提交改动)加 `git fetch` 恢复的 366 个提交、5 个远程分支。 - 2026-10-15 `data/` 同步完成:`交付包_20260908_40例`(124 个文件)、`1.2-TEST`(1460 个文件),文件数与文件总字节数(4,034,244,118)和远程一致。 - 2026-10-15 骨架(三份新文档过了一轮「硕士生阅读」并按意见修订):`AGENTS.md`、`CLAUDE.md`、`research-wiki/` 目录与 `README.md`、`explanation/结构.md`、`design/0001`、`guides/开发环境.md`;uv 工具链、`make sync/fmt/test/check`、pre-commit。`make check` 通过(1 项测试、1 条导入契约)。提交 5eb38df(工具链)、1f7a6a3(文档)。 - 2026-10-15/16 深读旧项目三条线(CEUS 算法、资料与答案隔离、会诊与评价),两位中立评审独立评了存储与迁移方案;结论落成 design 0002 与重写的 `结构.md`。待定的研究问题记在 `research-wiki/待定问题/`。 - 2026-10-16 任务书 01 装配两个库:delivery、library、answers、runs(快照)、build 五个模块,`scripts/build.py`、`scripts/scan_library.py`、`config/build.yaml`,91 条测试,`make check` 通过(6 条导入契约)。两轮独立审阅的会悄悄漏答案的意见已修(C11–C13 加严、泄露扫描 NFKC、关键图只收能保真重编码的 PNG、YAML 拒绝重复键)。真实 40 例:40 例中 34 例进库,跳过 6 例全为 C10(跨表不一致,与 `待定问题/04` 一致),复核清单 2 条,泄露扫描命中 0;构建号与提交号见提交说明和本次汇报。使用说明 `guides/装配两个库.md`。 - 2026-10-16 任务书 02 第一阶段:`src/cadx/ceus/` 迁入配置(去掉全部默认值)、视频解码(按路径逐帧读)、分屏、绿框、提示帧、两半坐标换算;新写判断造影画面在哪一半(两半各选提示帧,恰好一半有才行,否则 `ContrastSideError`);坐标换算改为两个视图左上角之差,不再用锚点。`config/ceus.yaml` 只有 `paths`、`ceus` 两段。同一提交修了任务书 01 的关键图问题:不能保真重编码的关键图整例跳过,记 C14。`make check` 通过(348 条测试、7 条导入契约)。 - 2026-10-16 任务书 02 第二至四阶段:ceus 其余模块与 segment(MedSAM2,提交 150eb5f)、`scripts/ceus_quant.py`(3524b31)、build 装入 CEUS 结果与 C15(c582fe4);两半坐标换算改为每段视频配准,加阴性对照的目视核对(00ebbff,核对运行 `runs/ceus_align/20261016-064728-00ebbff-dirty`:10 张对照全被判「没对齐」,30 例真实病例两人都判对齐);流式解码降内存、快照开跑即写、build 核对运行与交付包(1de88a5)。全量运行 `runs/ceus/20261016-090325-1de88a5-dirty`:34 例成功 29,第 1 步失败 4(3 例无暗缝、1 例配准差 66),第 2 步失败 1(绿框面积低于下限);常驻内存峰值 4.4GB。真实构建 `20261016-094248-1de88a5-dirty`:40 例进库 29,跳过 C10 6、C15 5,泄露扫描命中 0。工作区不干净(负责人别的会话的改动),要写进论文的运行需在干净工作区重跑。上一次被 OOM 杀掉的 `runs/ceus/20261016-070216-e165b32-dirty.partial` 留着未删。 - 2026-10-17 任务书 03 医生核对包(提交 c7373ef):新模块 review(只依赖 library、answers、runs)、`scripts/review_pack.py`、`config/review_pack.yaml`;读 CEUS 运行目录从 build 挪进 runs。`make check` 通过(609 条测试、9 条导入契约)。一轮独立审阅:5 条次要意见采纳 4 条(报告连续空格保留、Tab 报错;跳过病例也填视频号;关键帧文件恢复严格检查;说明一处措辞),第 5 条核对代码后不成立。真跑 `runs/review_pack/20261017-060427-c7373ef-dirty`:40 例(进库 29、跳过 11),问题清单 129 行(装配资料库 11、CEUS 第 1 步 4、第 2 步 1、TIC 拟合 21、关键帧 87、紫圈 5),59 份 PDF,包 2.9G,33 秒;203 个图片视频与源文件逐字节相同(独立脚本核对)。同内容的提交前试跑 `20261017-060257-14d6f8e-dirty` 留着未删。使用说明 `guides/医生核对包.md`。 - 2026-10-17 任务书 04(提交 7e7f32a、9d82210,配置 b6c918a、e7c6055):灌注指标改为对病灶去暗区与紫圈两组算(D1–D4 规则不变);tic.json 只留两组 11 个指标与 7 个槽位时间,医生截图并入 `keyframes/`;核对包改为 TIC参数.csv、大白话问题清单(原因对照表,表外原因报错)、说明.pdf 重写(4 页);跳过病例.csv 只进快照。`make check` 711 条通过。两轮审阅(账本级、核对包)与一轮医生视角阅读的意见已处理。干净工作区真跑:CEUS `runs/ceus/20261017-103312-9d82210`(34 例成功 29,与 `20261016-090325-1de88a5-dirty` 的成功、失败、各曲线拟合、各槽位定位例数逐例相同);构建 `20261017-110257-b6c918a`(进库 29、跳过 C10 6、C15 5,泄露扫描 0);出包 `runs/review_pack/20261017-110345-e7c6055`(问题清单 57 行,旧版 129 行)。29 例中紫圈指标算出 10 例、病灶去暗区 18 例、两组都有 7 例;独立脚本核对 29 例 TIC参数.csv 638 格与 tic.json 一致、医生截图与 key.png 逐字节相同。负责人 2026-10-17 接受 review 行数超预期一倍(原因对照表本来就该这么长)、病例总表「没进的原因」改大白话。 ## 未完成 - 2026-10-16 任务书 01 由执行者完成(提交 bceb01e),监督者验收通过:真实 40 例进库 34、跳过 6(C10 跨表不一致),独立脚本核对资料库内容与跳过名单一致,泄露扫描 0 命中。 - `结构.md` 按负责人要求对照 ClinDB 的 `结构.md` 重写后,重写版还没再过一轮「硕士生阅读」(design 0002 与上一版结构文档过过)。 ## 关键决定 - 负责人 2026-10-15「其其实不需要(至少目前不需要)是一个工程产品」:按研究原型重写,产品层不迁移(design 0001)。 - 负责人 2026-10-15 选定:检查强度「ClinDB 级」(不要提交审查闸);注释和 docstring 用中文;本机为主(「目前以本地为主,以后会根据具体情况调整」)。 - 负责人 2026-10-15 同意:MedSAM2 与 torch 装在同一个 uv 环境,靠导入边界隔离,不单独开环境(design 0001 第 7 条)。 - 负责人 2026-10-16:调模型用 PolyGateway;两个库和中间文件都用文件夹(SQLite 只用于调模型账本);CEUS「直接一个个迁移」,不在本机重跑旧代码作基线;数据格式和口径以 40 例交付包为准,「推注开始时间s」是视频第 0 秒时已推注的秒数(design 0002)。 - 负责人 2026-10-16:先做第 2 步装配两个库;配置每段一份(`config/<段>.yaml`),编码解码是可选开关、映射表单独一份配置;交付资料检查一例有一项不过就整例跳过并记录,「都是遇到整个病例跳过,让医生核对去吧」;化名对照存进答案库。已写进 `结构.md`(框架图、第五部分「配置」)和 `AGENTS.md`「错误怎么处理」。 - 负责人 2026-10-16 定 C04:报告表名随视频名配对(`U<号>_roi2.mp4` 配 `U<号>_roi2_report.xlsx`,`U<号>.mp4` 配 `U<号>_report.xlsx`),绿框版那一例因此进库。任务书 01 原文只认前一种,未改任务书。 ## 下一步 - 待负责人:核对包 `runs/review_pack/20261017-110345-e7c6055/医生核对包_20261017-110257-b6c918a/` 目视检查后打包交医生(不带 `snapshot/`);任务书 03 的两次出包目录、旧 CEUS 运行与 `.partial` 目录删不删。 - 医生视角阅读提出、负责人 2026-10-17 定为这次不做的缺项:从推注起算的时间、开始增强时间 AT、病灶与实质的比值、拟合好坏程度、临床信息编码对照表(等临床方)、反馈方式与截止时间。 - 待负责人定:`结构.md` 与实现不一致的几处(报告结论段写「由 build 剔除」,实际是 C11 命中整例跳过,任务书 03 也沿用了这个说法;C01–C14 速查表实际到 C15;依赖表写 build 可依赖 ceus,契约禁止)。 - 待负责人定:5 例 CEUS 失败要不要给个别视频手工指定分屏线、或调低绿框面积下限(`待定问题/02`);失败病例是否改为「超声不可评价、仍参与会诊」(`待定问题/03`);旧的 `.partial` 运行目录删不删。 - 待负责人定:化名种子在 git 里,拿到种子可反推进库病例的病例号先后(专家拿不到种子);含「造影提示:」的那份超声描述所在病例被 C10 跳过,故不在复核清单里。 - 向临床方要编码映射表(性别、诊断、症状、既往史、化验档位)。 - 把 `待定问题/04`(6 例跨表不一致)、`待定问题/06`(1 份超声描述中段的「造影提示:」)转给医生;06 定之前的构建不做正式会诊。 - 等临床方交付 40 例的医生标注工作簿(含造影剂到达时间和注射时间)。