# 实现方案 开始时间:2026-05-03-22-36-18 ## 本次方案路径 `工程分析/实现方案-2026-05-03-22-36-18.md` ## 实现目标 完成下载文案、四状态单项 DICOM 下载、影像库阅览入口和冠状/矢状 DICOM 显示模式切换。 ## 涉及文件 - `WebSite/src/App.tsx` - `web_backend.py` - `工程分析/经验记录.md` ## 执行步骤 1. 前端文案调整: - 将左侧工作站区域的“下载四状态ZIP”改为“下载结果”。 - 将影像库卡片中的“调阅”改为“变换”。 2. 四状态单项下载: - 在四状态结果卡片中,为原始序列、硬边界、高斯平滑、软过渡重建标题旁增加下载图标按钮。 - 点击按钮调用已有 `handlePackageDownload(t.key)`,复用后端现有 `prepare_deformation_zip(job_id, target)`。 - 按钮在形变任务未完成、对应状态 ZIP 正在打包时禁用,并显示简短状态。 3. 后端新增影像库重建阅览接口: - 新增 `/api/library/reformat-preview`,参数包含 `id`、`plane`、`index`、`window`。 - `plane` 支持 `coronal`、`sagittal`。 - `window` 支持 `default`、`bone`、`soft_tissue`、`brain`、`lung` 等固定窗宽窗位模式。 - 读取影像库 DICOM 序列为体数据,根据平面切片后用窗宽窗位转 PNG,缓存到 `web_library/_preview_cache//reformat/`。 4. 前端新增影像库阅览弹层: - 增加 `libraryViewerItem`、`viewerPlane`、`viewerWindow`、`viewerSliceIndex`、`viewerPreview` 等状态。 - 新增“阅览”按钮,打开弹层。 - 弹层提供冠状位/矢状位分段按钮、显示模式选择、切片滑杆、当前切片计数和预览图。 - 按切片、平面、显示模式请求 `/api/library/reformat-preview`。 5. 保持现有“信息”“删除”“变换”行为不变,避免影响数据选择和工作站流程。 6. 执行测试方案。 7. 将关键问题和解决方案追加到 `工程分析/经验记录.md`。 8. 提交并推送 Gitea,commit 信息使用 `2026-05-03-22-36-18 增加DICOM阅览和单项下载`。 9. 重新部署到 `http://192.168.3.11:3005/`。 ## 预期实现细节 - 单项下载 target 使用现有键: - `original` - `hard_boundary` - `gaussian_smooth` - `soft_transition` - 阅览接口返回: - `imageUrl` - `index` - `count` - `plane` - `window` - `patientId` - 窗宽窗位建议: - default:沿用现有 `ct_window` 默认范围。 - bone:骨窗。 - soft_tissue:软组织窗。 - brain:脑窗。 - lung:肺窗。 ## 回滚思路 如阅览接口或 UI 不符合预期,可回滚 `web_backend.py` 的新接口和 `WebSite/src/App.tsx` 中的阅览弹层及按钮;四状态单项下载和文案调整可单独保留或回退。 ## 风险控制 - 不引入新的前端依赖。 - 不修改真实 DICOM 形变与输出目录结构。 - 后端预览只输出 PNG,不暴露额外 DICOM 文件写操作。 - 缓存文件写入现有 `_preview_cache` 下,删除影像库条目时继续随缓存目录清理。 ## 人工审核状态 待用户二次人工审核确认。未经确认不得修改业务代码。