# MedSeal 企业候选版操作与恢复手册

当前0.5.0的summary/quality/export/convert与Native SDK无需本页Python私有宿主；不提供本页跨批持久身份、封存恢复或签名。先按[数据指南](DATA_PROCESSING.zh-CN.md)选择入口。下文0.2.1下载是冻结宿主包，不含本轮新增数据工具；旧作业继续使用原运行时。

当前是限定范围的工程预览：核心数据变换在 MoonBit 中，私有身份、作业与签名适配用于受控 POSIX 本机部署。已验证 macOS ARM64 离线安装、合成 SC 作业链路和限定经典 CT 独立研究验证；Ubuntu/macOS CI 执行宿主验收，Windows 仅覆盖可移植核心。生产启用前必须填写现场验收表；不得把合成审核记录用在患者影像上。

## 1. 部署和职责

指定数据负责人、影像/研究使用者、像素审核者、管理员和运维责任人，记录来源、研究用途、接收软件、保留期限与允许的字段范围。首个真实试点限定为 ct-classic-research-v1 的经典单帧、未压缩 16 位 MONOCHROME2 CT 研究导出；MR 不列为完整研究 Profile，真实来源与实际接收用途仍须补验。严格入口支持的 SC 同样需要实际视觉审核。

工作目录、身份库、作业目录、签名密钥和接收目录分别管理，均为本机账户拥有的0700目录；私有文件0600。采用受控加密卷和独立加密备份。项目/来源名字只决定映射域，不能代替机构访问权限。当前没有组织登录、多用户服务或 Windows 企业密钥提供方。

## 2. 离线安装

从 [GitHub 工程预览 Release](https://github.com/001-Elsa/MedSeal-MBT/releases/tag/v0.2.1) 取得对应平台包，独立核对[发行记录](COMPETITION_REMEDIATION.zh-CN.md)中的归档及安装清单摘要，再解压。包内文档是冻结快照；操作前核对程序版本，不混用 master 新文档与旧固定运行时。已有 Python3.12。用安装器的 `--source` 指向解压目录、`--destination` 指向不存在的新安装目录、`--python` 指向解释器、`--expected-manifest-sha256` 指向可信清单摘要。安装器核对平台/全部文件并离线建立隔离环境，依赖固定且校验哈希。

后续使用 `安装目录/.venv/bin/python 安装目录/tools/enterprise_job.py`。本文简称为“作业工具”；所有作业命令都带 `--workspace 私有作业目录`。增量缓存、历史引用和目的地绑定步骤见[增量账本](INCREMENTAL_LEDGER.zh-CN.md)；时间策略见[日期时间](TEMPORAL_SEMANTICS.zh-CN.md)。`doctor` 核对运行环境、权限、二进制与空间，filesystem_certified:false 提醒其没有替代现场文件系统认证。

## 3. 初始化身份和准备来源

通过安装目录的 `tools/private_store.py init --store 新身份库` 初始化一次。来源域显式固定，不能因为另一个系统患者号相同就共用来源域。项目策略使用 strict-v1，日期偏移幅度创建后不可静默改动。

研发侧可用 `tools/source_census.py 输入目录 --private-report 私有统计.json` 统计格式/字符集/体积；需要开发依赖 pydicom3.0.1。它不输出患者值，不构成格式符合性或隐私证明。未知公共字段、未支持的格式/多帧/像素封装进入拒绝处置。不要为了通过而删掉保护上限或改成宽松策略。

## 4. 导入、执行和恢复

作业工具 `create --input 来源目录 --policy 严格策略 --store 身份库 --source-domain 来源域` 返回不含患者信息的作业 ID。保存 ID。输入发现和封存发生在私有区域；候选和排除数进入私有计划。最大10,000对象、单文件256MiB、原生像素128MiB、元数据前缀2MiB，导入总量32GiB；大负载还需对应来源验收。

`run --job ID` 执行；`status --job ID` 查询日志状态。失败或进程中断后用 `resume --job ID`，无需找临时文件。它核对封存摘要和固定工具/策略，复用持久化身份，重验/重做对象，再核对全集合。源目录封存后的变化不会被偷偷读入旧作业。

策略、工具或封存内容改变时不得强行恢复旧计划。保留原作业用于核对，修复原因后创建新作业。患者签名、相同 SOP 不同内容、历史 UID 归属冲突需数据负责人调查，不能用删库/另建域绕过冲突。

## 5. 逐对象审核

转换结束在 AWAITING_REVIEW，release_authorized:false。`risks --job ID` 给出匿名对象和风险列表。审核者查看实际图像，核对烧录文字、可识别特征和来源 Overlay 风险；不能只看 NO 标记或 OCR 阴性。元数据字段范围与研究可用性由接收者明确接受。

管理员提供私有审核人注册表，审核记录覆盖每个对象/风险，绑定输出与策略摘要，保留真实私有证据。记录格式见 [风险审核契约](RISK_REVIEW.md)。用 `review --job ID --record 私有记录 --reviewers 私有注册表` 提交。真实使用必须 context:controlled，演练只能 synthetic；不得复制合成测试的结论。文件、策略或审核权限变化使旧记录失效。

## 6. 签名发布与交付

`signer-init --signer 新签名目录 --trust 新公钥配置` 创建独立签名密钥。公钥通过可信渠道给接收方；私钥留在生产者受控目录。轮换先分发新公钥，再切换签名目录，旧包所需旧公钥按保留政策处理。

`publish --job ID --output 新交付目录 --reviewers 注册表 --signer 签名目录 --trust 公钥配置` 重新核对审核与结果，生成签名包并不覆盖发布。目标父目录0700，须与私有作业在同一受支持本机文件系统。PUBLISHING 与取消请求在 SQLite 中串行协调：已接受的取消阻止开始发布；开始发布后不接受取消，须完成/恢复该次发布。已发布数据的撤回需要接收方流程。

接收方通过独立 `tools/verify_delivery.py 包目录 --trust 可信公钥配置` 验证。它不需要源数据、身份库或 MoonBit。合成包默认拒绝，演练显式 `--allow-synthetic`。签名证明可信字节与声明绑定，不替代医学用途和人工审核质量。

`deliver --package 签名包 --inbox 受控接收目录 --trust 可信公钥配置 --receiver-id 接收方编号` 进行首个目录交付。部分文件只在隐藏暂存目录，重试先重验；完成目录与回执在全部核对后产生。回执丢失可核对重建。它证明本机目录字节/签名接收，不证明 PACS 或研究者已经接受。

## 7. 备份、轮换、升级和取消

身份备份：`store_admin.py backup --store 身份库 --destination 新备份目录`。备份包含密钥材料，需独立受控加密存放。恢复到新目录并测试：`restore --store 备份 --destination 新恢复库`。核对已知假名、Study/Series/实例 UID 和日期偏移，再创建新作业。

包装轮换：`rotate --store 身份库`；不会改变映射。旧代次用于恢复，轮换不自动撤销旧备份或已经泄漏的数据根。改变映射命名空间是另外的迁移，不能混同包装轮换。

升级安装到新目录，保留旧程序与备份，先跑合成回归和来源验收。旧作业固定运行时摘要，不能直接用新程序继续；完成旧作业，或按明确的新作业/迁移流程处理。不要在运行过程中替换二进制。降级需核对数据库/schema兼容；不要拿不认识新 schema 的旧程序打开现有库。

`cancel --job ID` 请求取消转换；安全检查点生效。`cleanup --job ID` 只清理 CANCELLED/FAILED 的所属封存与暂存数据，保留转换证据。删除不是物理安全擦除。异常签名发布暂存需要按私有发布意图人工核对，工具不会删除任意同名目录。

## 8. 故障处置和现场放行

空间/权限故障：停止该作业，恢复受控权限和容量，核对私有暂存，再 resume。固定摘要错误：调查源/策略/工具变化，不能改记录来消除告警。身份冲突：交给数据负责人核对原始对象和来源域；不能静默覆盖或自动混并。审核未通过：保持隔离，处理或更换有明确支持范围的来源流程。签名/清单错误：接收方拒绝，保留包和匿名错误码，核对可信公钥与发布意图。

首次现场验收执行全量、两次新增随访、中断恢复、冲突处置、备份恢复，核对候选/排除/交付计数、分组、空间参数、日期间隔、像素质量和人工负担。使用接收系统本身验证，而不仅是 parser。填写 [现场验收记录](FIELD_ACCEPTANCE.zh-CN.md)，仍有未处置损坏、身份混并、隐私绕过或半成品交付时不得宣布生产可用。

> 文档核对：本文说明已与当前维护代码和实际入口核对；不扩大医疗/生产保证。见[文档账本](DOCUMENTATION_STATUS.zh-CN.md)；正式申报由韩桢本人完成。
