# 以实际任务验收的下一轮升级计划

## 0.5.0 当前任务落实

查询/筛选/分组/导出由 `api/query` 承担；独立质量由 `api/quality` 承担；`api/validation` 增加命名患者日期与不可变计划；`api/native` 提供无 Python 目录扫描和流式转换；格式扩展为固定字典内 Implicit VR LE 输入。入口、预算及五项实际验收见[数据指南](DATA_PROCESSING.zh-CN.md)和[实施账本](DATA_UPGRADE_STATUS.zh-CN.md)。下文保留 V1–V6 的任务与阶段测量，不当作当前测试数量或本轮发布凭据。

> 0.5.0发行源码新增查询/质量/计划/Native SDK及固定字典Implicit VR LE；本页旧阶段记录保留其原版本，当前增量见[数据处理指南](DATA_PROCESSING.zh-CN.md)。

制定基线：C1 `e0b12bf` / C2 `1b03918`。已完成公开集合 SDK、离线合成实验室及三平台 CI；C2当时浏览器渲染/CSP待验，已由V5 Chrome实测补齐。本计划细化[社区路线图](COMMUNITY_ROADMAP.zh-CN.md)，继续同一项目，不把新增源码当作已发布 0.2.3 的能力。

## 1. 优先服务的三个实际任务

| 使用者与任务 | 制定时的使用障碍 | 目标交付与衡量方式 |
| --- | --- | --- |
| MoonBit 开发者把既有研究系统的影像元数据接入自己的程序 | 只有二进制入口，外部工具常用 DICOM JSON；自行转换易丢失多值、PN、整数或序列 | 公共 DICOM JSON 编解码，明确子集、拒绝不支持形态；pydicom 双向验证；仅公开 API 的可运行集成示例 |
| 研究人员从原始数据准备一批可用的 CT 数据 | 合成测试不能证明来源数据适用；需要发现、清单、计划、失败修复与接收复核 | 先建立数据集预检报告和逐对象拒绝原因，再验证授权 phantom/指定来源；接收端重算像素、HU、几何和引用；所有实际数据的许可/来源可查 |
| 本地管理员重复执行、升级、交付并处理失败 | 工具入口多、部署依赖较重；旧作业与新版程序指纹绑定 | 引导式本地流程、环境预检、一键合成验收、版本兼容/迁移检查、恢复演练；新目录照文档运行，不依赖作者机器隐式状态 |

优先级：先打通可独立验证的标准数据交换，再做数据集预检和真实接收。先提供可复用的库能力，而不是给没有现场证据的服务贴“企业级”标签。

## 2. 工作包与执行顺序

| 工作包 | 实际成果 | 验收标准 | 状态 |
| --- | --- | --- | --- |
| V1 / C3a 标准交换 | `api/dicom_json`；结构化数据与 DICOM JSON 双向交换；示例连通解析、JSON、二进制写回、严格转换 | 逐 VR/空值/多值/PN/Sequence/二进制矩阵；US/SS/UL/SL 边界无精度丢失；不支持的 64 位数值、浮点/AT 或 BulkDataURI 明确拒绝；重复 JSON 键、深度与大小限制；pydicom 独立读取/生成；四后端一致 | 实现及本机验收通过；提交关联 CI 单独核验 |
| V2 / C4a 数据集预检 | 有界目录扫描、可操作错误分类、策略影响摘要、可复现样本登记 | 现有命令发现/计划语义复用；目录/文件/引用/编码问题分开统计；拒绝原因有下一步建议；公开报告金丝雀检查；不能把失败对象静默丢弃后称整批通过 | 已实现，11类本机验收通过；见[预检](DATASET_PREFLIGHT.zh-CN.md) |
| V3 / C5a 独立接收集成 | 固定版本 Orthanc 受控本地集成及 CT 研究读取工作流 | 实际启动独立系统，上传合成对象、查询、取回、核对；断连/重复/失败重试有实测；真实数据必须另有来源授权；元数据适配不自动变成 DICOMweb 完整实现 | 已实现，真实Orthanc 1.13.0本机10项通过；见[接收集成](ORTHANC_INTEGRATION.zh-CN.md) |
| V4 / C4b 实用性与性能 | 许可明确的非患者样本、标准化负载、性能报告 | 不用合成数量冒充外部样本；记录硬件/工具链/负载、吞吐与峰值内存、失败比例；先测基线再定阈值；更快不能牺牲拒绝语义 | 已完成外部数学幻影与两路径实测；见[资源基线](APPLICATION_BENCHMARKS.zh-CN.md) |
| V5 / C2b 体验与可访问性 | 浏览器实验室实测、字段级规则比较、本地真实文件私有视图设计 | 先完成当前浏览器渲染/CSP/导出验收；键盘、窄屏、错误清除实测；导入真实文件前明确本机处理、内存限制和导出边界；不自动上传 | 已完成逐字段比较、Chrome8项实测；0.4.0补齐实际本机文件只读导入、私有原值隔离、取消/超时/预算及真实浏览器验收 |
| V6 / C6 发布和维护 | 独立消费者、稳定 API 说明、故障诊断、贡献任务、新版三平台快照 | 每工作包独立提交并 push GitHub；CI 通过；新增 API 只增不破坏现有接口；最终版本、归档、GitLink 与 Mooncakes 逐文件一致，新包真实安装后复核 | V6 维护资产与干净目录门禁已实现；0.3.0 发行以外置三平台回读为准 |

## 3. 其他维度的改进

- **准确性：** 明确 DICOM JSON 编解码与严格影像验证是不同操作。能解析 JSON 不表示 IOD 合格或完成脱敏。拒绝 unsupported 输入，不通过猜测转换 VR、网络下载或忽略字段来制造兼容。
- **隐私：** 标准 JSON 可以含身份与像素，是私有数据交换格式；继续用 `api/explain`/受限报告做公开解释。新接口异常不拼接原值、原路径或 JSON 内容。
- **可维护性：** 用版本化支持矩阵、独立预期和回归消费者约束 API。新协议只落在一个 MoonBit 实现中；Python 负责独立预期与宿主 I/O，页面负责呈现。
- **可重现性：** 验收绑定源码/夹具/工具链摘要，临时输出与历史发行物分开保存。缺少依赖或夹具必须失败，不静默跳过。
- **社区采用：** 提供十分钟可运行的嵌入示例、问题复现模板和适合新贡献者的边界明确任务。实际采用与反馈仅记录真实取得的材料；不自动联系第三方。
- **参赛表达：** 每项亮点给“使用场景—操作—输出—独立验证”四步证据；指标来自实测，不以总代码量、测试运行次数或假想客户数量证明价值。

## 4. V1 的实现边界

首版只处理**单个 Dataset 对象**：大写八位 Tag、`vr`、`Value`、`InlineBinary`，支持选定文本 VR、PN 三表示组、DS/IS、US/SS/UL/SL、SQ，以及 OB/OW/UN 的内联二进制。不接受 HTTP URI、不下载 BulkData、不实现查询/存储协议；DICOMweb JSON 可作为适配层输入，但不是完整 DICOMweb 客户端。

DS/IS 保留合法数值字符串，不通过 Double 改写高精度十进制；数值 JSON 输入只在所承诺范围内接受。64 位整数和浮点数组在首版必须明确拒绝，避免现有 DataSet 原始字节表示与 JSON 数值的错误对应。支持矩阵和测试通过后再扩张。

预算先设为：JSON UTF-8 8 MiB、Sequence 深度 16、全树 20,000 Dataset/元素/值/条目、单个内联二进制 1 MiB；先检查文本长度/嵌套/重复键，再构建数据集。编解码不读写任何路径、不授权发布。

## 5. V1–V6 历史实施记录（保留原计数）

V1 / C3a 已实现，完整[支持矩阵与运行入口](DICOM_JSON.zh-CN.md)：

- 新增公开 `decode`、`encode`、`to_part10`，覆盖25种VR，保留DS/IS原始数值token。修复实际发现的 JSON Double 舍入风险，`4294967295.0000001` 不会被误收为UL整数。
- 真实 pydicom 3.0.1 双向 JSON/Part 10 验证通过；额外5个精度token与22个拒绝场景通过。归档消费者在四后端实际经过 JSON 重建再进行关联 SC 严格转换，检查数据和引用。
- 新增11个核心场景，全量本机 Native137，JS/wasm/wasm-gc各84通过；文档清单60项通过。后端执行数不等于独立场景数。
- 独立验收已加入三平台 CI；远端结果以该阶段提交关联的 [GitHub Actions](https://github.com/001-Elsa/MedSeal-MBT/actions) 为准。临时证据 `tmp/c3-dicom-json-ci.json`、`tmp/c3-consumer.json` 不混入冻结历史发行证据。

V2 已实现公开预检和可操作分类，复用现有MoonBit解释/计划与封存语义；11类验收通过。V3 已通过真实独立系统的10项本机接收检查；V4 已完成许可样本、独立保真与实测基线；V5 已完成Chrome8项真实检查、字段比较和私有文件实际实现；V6 已补稳定 API/迁移契约、环境诊断、贡献任务与问题模板、干净目录综合门禁，0.3.0 新版本按外置证据单独冻结和回读。外部数学幻影、实际本地接收已完成，但不代表患者样本、临床现场或完整 DICOMweb；该阶段尚未实现的 Implicit VR LE 已在 0.5.0 以固定字典子集补齐，未知/私有字段和歧义继续拒绝。

0.4.0补齐项：原V5设计已落实为可操作的本机私有检查。读取前预算、Worker终止、匿名导出白名单和原值隔离均由实际浏览器测试核验，进入新版发行回读。
