2026-05-20-02-02-37 支持位姿输入与导入
This commit is contained in:
36
工程分析/经验记录.md
36
工程分析/经验记录.md
@@ -1045,3 +1045,39 @@ C. 解决问题方案
|
||||
D. 后续如何避免问题
|
||||
|
||||
凡是用户明确“保存”的可视化参数都应进入项目级持久状态,不能只存在于组件 state。新增保存类交互时同时设计读取、写入、归一化和刷新后的回显验证。
|
||||
|
||||
## 2026-05-20-02-02-37 位姿数字输入必须保留可编辑中间态
|
||||
|
||||
A. 具体问题
|
||||
|
||||
模型位姿从只读数值改为可编辑数值时,如果直接把 `<input type="number">` 完全绑定到 `modelPose`,用户输入负号、小数点或临时清空内容时会被 React 立即回填旧值,导致难以编辑。
|
||||
|
||||
B. 产生问题原因
|
||||
|
||||
数值输入存在合法提交值和编辑中间态两层语义;`modelPose` 只能存储有限数字,而输入框需要短暂容纳空字符串或尚未完整输入的文本。
|
||||
|
||||
C. 解决问题方案
|
||||
|
||||
新增 `poseValueDrafts` 保存输入框文本态,并用 `focusedPoseInput` 控制同步范围。输入内容能解析为数字时立即 clamp 后写入 `modelPose`;失焦时统一格式化回与 step 匹配的小数位,非法输入则恢复当前位姿值。
|
||||
|
||||
D. 后续如何避免问题
|
||||
|
||||
任何需要“可编辑数字 + 实时状态”的控件都应区分 draft value 和 committed value。不要把可能为空或临时非法的输入字符串直接写入业务状态,也不要让格式化逻辑打断用户正在输入的字段。
|
||||
|
||||
## 2026-05-20-02-02-37 导入导出的位姿 JSON 要兼容多种入口
|
||||
|
||||
A. 具体问题
|
||||
|
||||
位姿导出 JSON 包含 `activePose`、`modelPoses` 和项目元信息;用户导入时也可能拿到单个 `{ pose }` 或直接 pose 对象。如果导入逻辑只认一种结构,会让“导出后再导入”的闭环不稳定。
|
||||
|
||||
B. 产生问题原因
|
||||
|
||||
导出文件是侧车数据,不是纯数组;同时调试和人工编辑时常会只保留一个 pose 对象。导入端如果没有 schema 容错,就会把可恢复数据误判为无效。
|
||||
|
||||
C. 解决问题方案
|
||||
|
||||
导入解析按优先级读取 `activePose`、`pose`、直接 pose 对象和 `modelPoses[0].pose`,并对每个字段使用 `poseStepConfig` 做 clamp。若包含 `modelPoses`,则补齐默认/俯视/侧视并通过现有 `PATCH /model-poses` 持久化。
|
||||
|
||||
D. 后续如何避免问题
|
||||
|
||||
成对设计导入/导出功能时,应把导出样例作为导入测试用例,同时兼容最小可用对象。导入端必须对字段缺失、字符串数字、越界数值和重复 id 做归一化处理。
|
||||
|
||||
Reference in New Issue
Block a user