2026-05-25-13-42-13 调整自动匹配迭代轮次上限

This commit is contained in:
2026-05-25 13:45:47 +08:00
parent 27e0ec626e
commit 21b372f705
6 changed files with 161 additions and 3 deletions

View File

@@ -1097,7 +1097,7 @@ function normalizeAutoMatchWeights(input: unknown): AutoMatchWeights {
function normalizeAutoMatchIterations(value: unknown) {
return typeof value === 'number' && Number.isFinite(value)
? clampNumber(Math.round(value), 2, 12)
? clampNumber(Math.round(value), 2, 50)
: 6;
}

View File

@@ -521,9 +521,9 @@ export default function AutoMatchWorkspace({ projectId, initialPose, onOpenRever
<input
type="number"
min={2}
max={12}
max={50}
value={iterations}
onChange={(event) => setIterations(Math.max(2, Math.min(12, Number(event.target.value) || 2)))}
onChange={(event) => setIterations(Math.max(2, Math.min(50, Number(event.target.value) || 2)))}
className="mt-1 h-10 w-full rounded-lg border border-slate-200 px-3 font-mono text-sm text-slate-700 outline-none focus:border-blue-400"
/>
</label>

View File

@@ -0,0 +1,52 @@
# 实现方案-2026-05-25-13-42-13
## 实现方案文档路径
`工程分析/实现方案-2026-05-25-13-42-13.md`
## 修改目标
将自动微调匹配工作区“迭代轮次”的最高可选值从 12 提升到 50并保证后端接口同步支持。
## 涉及路径
- `WebSite/src/components/AutoMatchWorkspace.tsx`
- `WebSite/server.ts`
- `工程分析/需求分析-2026-05-25-13-42-13.md`
- `工程分析/实现方案-2026-05-25-13-42-13.md`
- `工程分析/测试方案-2026-05-25-13-42-13.md`
- `工程分析/经验记录.md`
## 技术路线
- 前端:把迭代轮次输入框 `max``onChange` clamp 上限改为 50。
- 后端:把 `normalizeAutoMatchIterations` 的 clamp 上限改为 50。
- 保持默认 `iterations = 6`,避免进入页面后默认就触发长耗时运行。
## 执行步骤
1. 确认已读 `工程分析/经验记录.md`
2. 修改前端迭代轮次输入限制。
3. 修改后端接口参数归一化限制。
4. 执行 `npm run build`
5. 重启 `tmux` 会话 `revoxelseg-dicom` 服务。
6. 验证本机与公网访问。
7. 追加经验记录并提交推送。
## 兼容性与回滚方案
- 旧请求中 `iterations <= 12` 行为不变。
- 若 50 次导致耗时过长,可再引入运行中取消、进度显示或更严格候选限制。
- 回滚只需恢复前后端上限为 12。
## 预计文件变更
- 两处代码常量级修改。
- 新增本次工程分析三件套。
- 追加经验记录。
## 提交与部署策略
- 只暂存本次代码和文档变更。
- commit message 包含 `2026-05-25-13-42-13` 和简要描述。
- 提交后推送到 Gitea并完成重新部署验证。

View File

@@ -0,0 +1,45 @@
# 测试方案-2026-05-25-13-42-13
## 测试方案文档路径
`工程分析/测试方案-2026-05-25-13-42-13.md`
## 静态检查
- 搜索 `normalizeAutoMatchIterations` 和“迭代轮次”输入框,确认前后端上限一致为 50。
- 检查工作区状态,避免提交无关文件。
## 构建检查
-`WebSite` 执行 `npm run build`
- 关注 TypeScript/Vite 构建错误。
## 关键业务场景验证
- 自动微调匹配页的迭代轮次输入框允许输入 50。
- 默认迭代轮次仍为 6。
- 后端接口收到 50 时不会截断到 12。
## 医学影像数据相关边界验证
- 本次不修改 DICOM/STL 坐标、采样、评分或导出算法。
- 50 次迭代只影响用户主动选择后的优化循环次数。
## 部署验证
- 使用 `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 备份验证
- commit message 包含 `2026-05-25-13-42-13`
- 推送到 `origin/main`
## 风险与回归关注点
- 迭代轮次越高,单次自动匹配耗时越长;后续如需常用 50 次,应考虑进度、取消和服务端超时保护。
- 注意前端输入限制和后端 clamp 不要再次出现不一致。

View File

@@ -1959,3 +1959,21 @@ C. 解决问题方案
D. 后续如何避免问题
整理软著代码汇总时,先确认用户要的是“带核对信息的审阅版”还是“纯源码版”。若目标是提交材料,默认减少额外说明、文件标题和行号,只保留源码文本;用于内部核对的行号应放在临时检查结果里,不直接写入最终 docx。
## 2026-05-25-13-42-13 自动匹配参数上限要前后端同步
A. 具体问题
用户要求自动微调匹配工作区“迭代轮次”最高变为 50 次。页面旧输入框最大值为 12后端 `normalizeAutoMatchIterations` 也会把请求轮次截断到 12。
B. 产生问题原因
自动匹配的轮次上限同时存在于前端输入控件和后端请求归一化中。若只修改其中一侧,会出现界面可以输入但接口不执行,或接口支持但页面无法选择的状态。
C. 解决问题方案
`AutoMatchWorkspace.tsx` 中迭代轮次输入框的 `max``onChange` clamp 上限改为 50同步将 `server.ts``normalizeAutoMatchIterations` 的服务端 clamp 上限改为 50。默认值仍保留 6避免进入页面后默认运行变慢。
D. 后续如何避免问题
后续调整自动匹配参数上限时要同时检查前端控件、API 类型、服务端归一化、默认值和运行耗时提示。对可能显著增加耗时的参数,只提高上限不改变默认值;若用户常用高上限,应补充进度、取消和超时保护。

View File

@@ -0,0 +1,43 @@
# 需求分析-2026-05-25-13-42-13
## 开始时间
2026-05-25-13-42-13
## 原始需求摘要
用户要求将自动微调匹配工作区中的“迭代轮次”最高值调整为 50 次。
## 业务目标
- 自动微调匹配页允许用户输入最多 50 次迭代。
- 后端自动匹配接口也接受并执行最多 50 次迭代,避免前后端上限不一致。
- 保持默认轮次不变,避免无意增加普通运行耗时。
## 输入与输出
- 输入:自动微调匹配工作区的迭代轮次输入框、自动匹配 API 请求参数。
- 输出:界面 `max` 和输入截断上限为 50服务端 `iterations` 归一化上限为 50。
## 影响范围
- `WebSite/src/components/AutoMatchWorkspace.tsx`
- `WebSite/server.ts`
- 工程分析本次三件套和经验记录
## 关键约束
- 必须执行工程分析工作流。
- 不修改自动匹配默认轮次、候选数量、评分函数和位姿算法。
- 修改后需要重新构建、部署并验证服务。
## 风险点
- 50 次迭代可能明显增加自动匹配耗时,需要保留用户手动选择。
- 如果只改前端不改后端,接口仍会把 50 截为旧上限。
- 如果只改后端不改前端,用户仍无法通过页面输入 50。
## 默认假设
- 用户只要求提升最大上限,不要求默认值从 6 改为 50。
- 每轮候选数量上限仍保持当前 80不在本次调整范围内。