diff --git a/Docker部署/README.md b/Docker部署/README.md index 836bda7..9782c7f 100644 --- a/Docker部署/README.md +++ b/Docker部署/README.md @@ -13,7 +13,7 @@ 当前 Docker 构建会同步包含以下能力: - 二维逆向分割映射按实体填充显示,rib、skin 等薄壳或细长构件会做局部实体化兜底,导出的分割 Label Map 也按填充区域写入。 -- 模型位姿支持以模型中心沿 X/Y/Z 轴镜像翻转,平移和缩放支持 `0.001` 级微调,保存、项目库预览和导出均沿用该位姿;自动拉伸完成后不再在位姿区保留成功提示。 +- 模型位姿支持以模型中心沿 X/Y/Z 轴镜像翻转,平移和缩放单击支持 `0.001` 级微调,长按加减会加速连续调整;保存、项目库预览和导出均沿用该位姿;自动拉伸完成后不再在位姿区保留成功提示。 - “构件分别导出”会把所有构件 NIfTI 文件集中到导出包内的 `segmentation-parts/` 目录。 - 项目库 DICOM 首页支持滚轮缩放、拖拽平移和位置重置。 - 项目库与工作区的 DICOM 切片编号按医学影像顺序显示,滑条使用非进度条样式。 diff --git a/WebSite/src/components/ReverseWorkspace.tsx b/WebSite/src/components/ReverseWorkspace.tsx index f2f7c5f..dc56476 100644 --- a/WebSite/src/components/ReverseWorkspace.tsx +++ b/WebSite/src/components/ReverseWorkspace.tsx @@ -92,6 +92,14 @@ const poseStepConfig: Record> = { + translateX: 5, + translateY: 5, + translateZ: 5, + scale: 5, +}; const defaultModelPose: ModelPose = { rotateX: 0, @@ -3276,10 +3284,11 @@ export default function ReverseWorkspace({ const startPoseRepeat = (key: ModelPoseKey, delta: number) => { stopPoseRepeat(); + const repeatDelta = delta * (poseRepeatDeltaMultiplier[key] ?? 1); poseRepeatRef.current.timeout = window.setTimeout(() => { - nudgeModelPose(key, delta); - poseRepeatRef.current.interval = window.setInterval(() => nudgeModelPose(key, delta), 90); - }, 360); + nudgeModelPose(key, repeatDelta); + poseRepeatRef.current.interval = window.setInterval(() => nudgeModelPose(key, repeatDelta), poseRepeatIntervalMs); + }, poseRepeatDelayMs); }; const resetRotationPose = () => { diff --git a/工程分析/实现方案-2026-05-24-19-53-00.md b/工程分析/实现方案-2026-05-24-19-53-00.md new file mode 100644 index 0000000..b14b425 --- /dev/null +++ b/工程分析/实现方案-2026-05-24-19-53-00.md @@ -0,0 +1,52 @@ +# 实现方案-2026-05-24-19-53-00 + +## 实现方案文档路径 + +`工程分析/实现方案-2026-05-24-19-53-00.md` + +## 修改目标 + +- 提高平移和缩放加减按钮的长按连续变化速度。 +- 保持单击最小步进仍为 `0.001`。 +- 同步 Docker 部署说明和经验记录。 + +## 涉及路径 + +- `WebSite/src/components/ReverseWorkspace.tsx` +- `Docker部署/README.md` +- `工程分析/经验记录.md` + +## 技术路线 + +- 定位位姿按钮的 `startPoseRepeat`、repeat 定时器和长按节奏常量。 +- 将长按连续移动与单击步进分离:单击继续使用 `poseStepConfig[key].step`,长按每个 tick 使用更大的 multiplier 或更短 interval。 +- 对平移和缩放使用同样的加速策略,旋转仍保持现有快捷行为。 +- 保持 `clampPoseValue` 的三位小数取整,避免高频更新产生浮点漂移。 + +## 执行步骤 + +1. 搜索位姿长按 repeat 逻辑。 +2. 调整长按延迟、间隔或连续步长倍率。 +3. 更新 Docker 部署说明和经验记录。 +4. 运行类型检查、构建和关键搜索。 +5. 重新部署并验证本机与公网入口。 +6. 提交并推送到 Gitea。 + +## 兼容性与回滚方案 + +- 位姿字段结构和保存格式不变。 +- 如果长按过快,可恢复本次 repeat 参数。 +- 单击步进不变,因此既有精细配准工作流不受影响。 + +## 预计文件变更 + +- 1 个前端组件文件。 +- 1 个 Docker 部署说明文件。 +- 3 个工程分析当次文档。 +- 1 个经验记录追加。 + +## 提交与部署策略 + +- Commit message 使用 `2026-05-24-19-53-00 加快位姿长按微调速度`。 +- 构建通过后重启 `tmux` 会话 `revoxelseg-dicom`。 +- 验证本机和公网入口。 diff --git a/工程分析/测试方案-2026-05-24-19-53-00.md b/工程分析/测试方案-2026-05-24-19-53-00.md new file mode 100644 index 0000000..687a9eb --- /dev/null +++ b/工程分析/测试方案-2026-05-24-19-53-00.md @@ -0,0 +1,46 @@ +# 测试方案-2026-05-24-19-53-00 + +## 测试方案文档路径 + +`工程分析/测试方案-2026-05-24-19-53-00.md` + +## 静态检查 + +- 执行 `cd WebSite && npm run lint`。 +- 搜索位姿长按 repeat 参数,确认单击步进仍为 `0.001`。 + +## 构建检查 + +- 执行 `cd WebSite && npm run build`。 +- 确认生产构建成功。 + +## 关键业务场景验证 + +- 平移 X/Y/Z 的单击加减仍变化 `0.001`。 +- 缩放单击加减仍变化 `0.001`。 +- 长按平移和缩放加减按钮时连续变化速度明显快于上一版。 +- 松开、移出或取消 pointer 后,连续变化停止。 + +## 医学影像数据相关边界验证 + +- 本次不修改 DICOM/STL 读取、切片排序、分割映射和导出算法。 +- 高频微调后的位姿仍参与融合视图、保存、锁定和导出。 + +## 部署验证 + +- 重启 `tmux` 会话 `revoxelseg-dicom`。 +- 验证 `http://127.0.0.1:4000/api/health`。 +- 验证 `http://127.0.0.1:4000/`。 +- 验证 `https://revoxel.huijutec.cn/api/health` 与 `https://revoxel.huijutec.cn/`。 + +## Git/Gitea 备份验证 + +- 暂存本次相关源码、Docker 说明和工程分析文档。 +- 提交 message 包含本次时间戳。 +- 推送到 Gitea `main` 后确认本地分支与远端同步。 + +## 风险与回归关注点 + +- 不应增大单击步进。 +- 不应让 repeat 定时器在松开后继续运行。 +- 不应让工具栏滚动位置因长按更新而跳动。 diff --git a/工程分析/经验记录.md b/工程分析/经验记录.md index 2ca3ab8..e5416d4 100644 --- a/工程分析/经验记录.md +++ b/工程分析/经验记录.md @@ -1797,3 +1797,21 @@ C. 解决问题方案 D. 后续如何避免问题 后续新增操作反馈时,要区分“处理中反馈”“成功反馈”和“错误反馈”。短操作可以只保留按钮加载态和错误提示,避免把普通成功信息写入长期占位区域;如果确实需要成功提示,应设计为短暂 toast 或局部临时状态。 + +## 2026-05-24-19-53-00 单击精度和长按速度要分离 + +A. 具体问题 + +平移和缩放已经改为 `0.001` 级微调后,单击精度足够细,但长按加减按钮仍按每次 `0.001`、约 `90ms` 一次重复,连续移动速度太慢。 + +B. 产生问题原因 + +旧长按逻辑直接复用单击的最小步进作为 repeat delta。步进从 `0.005` 降到 `0.001` 后,长按单位时间位移也同步降低,导致用户需要按住很久才能看到明显变化。 + +C. 解决问题方案 + +保留单击仍为 `0.001`,只在长按 repeat 中为平移 X/Y/Z 和缩放使用 5 倍最小步进,并将启动延迟从 `360ms` 缩短到 `240ms`、repeat 间隔从 `90ms` 缩短到 `55ms`。这样短按仍精细,长按可快速穿过较大范围。 + +D. 后续如何避免问题 + +微调控件应把“单击精度”和“长按速度”作为两个参数设计;不要为了长按快而增大最小 step,也不要为了单击精细而让长按只能按最小 step 慢慢跑。调整 repeat 参数后要确认松开、移出和取消 pointer 时定时器会停止。 diff --git a/工程分析/需求分析-2026-05-24-19-53-00.md b/工程分析/需求分析-2026-05-24-19-53-00.md new file mode 100644 index 0000000..44a82e5 --- /dev/null +++ b/工程分析/需求分析-2026-05-24-19-53-00.md @@ -0,0 +1,43 @@ +# 需求分析-2026-05-24-19-53-00 + +## 开始时间 + +2026-05-24-19-53-00 + +## 原始需求摘要 + +用户反馈当前长按平移、缩放加减按钮时数值变化太慢,希望长按连续调整变快一些。 + +## 业务目标 + +- 保持单击平移和缩放仍为 `0.001` 精调。 +- 提高长按连续微调速度,减少从当前位姿调整到目标位姿的等待时间。 +- 不影响旋转快捷按钮、保存、导出和模型位姿精度。 + +## 输入与输出 + +- 输入:用户长按逆向工作区中平移 X/Y/Z、缩放的 `-`、`+` 按钮。 +- 输出:长按时更快连续改变位姿数值,松开后立即停止;单击仍只变化一个最小步进。 + +## 影响范围 + +- `WebSite/src/components/ReverseWorkspace.tsx`:位姿微调按钮的长按 repeat 逻辑。 +- `Docker部署/README.md`:同步说明位姿长按微调体验。 +- `工程分析/经验记录.md`:记录微调步进和长按速度分离设计。 + +## 关键约束 + +- 不改变 `0.001` 单步精度。 +- 不修改 DICOM/STL 坐标映射、体素化、导出算法。 +- 长按速度提高时仍需避免浮点累积误差,沿用现有 clamp 和三位小数归一化。 + +## 风险点 + +- 如果直接增大 step,会破坏单击精调能力。 +- 如果 repeat 过快,可能造成 UI 更新过密或用户难以停在目标值。 +- 如果只改某个按钮,平移和缩放的长按体验会不一致。 + +## 待确认问题或默认假设 + +- 默认本次只提高逆向工作区位姿控件的长按连续速度;单击和滑杆精度不变。 +- 若项目库后续也需要长按按钮,可复用本次的 repeat 节奏参数。