包含: - furniture-3d-system:Next.js 16 全栈应用(资产中心、产品管理、3D装配动画) - autocad-plugin:AutoCAD 家具导出插件源码 - 资产中心改造:编辑弹窗化、删除功能、Toast反馈、自定义Select组件 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
4.1 KiB
4.1 KiB
title, date, module, problem_type, severity, symptoms, root_cause, resolution_type, status, confidence, tags, related_patterns
| title | date | module | problem_type | severity | symptoms | root_cause | resolution_type | status | confidence | tags | related_patterns | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 装配页 3D 交互回归(选中/右键材质/孔位/爆炸拖动) | 2026-02-23 | assembly-editor | workflow_issue | high |
|
交互链路在多轮重构后出现能力回退,菜单结构、拾取兜底、覆盖层坐标映射与渲染节流未统一 | code_fix | active | high |
|
|
现象与影响
装配页多个核心交互同时回退:板件难选中、材质菜单不完整、孔位高亮不准、爆炸拖动卡顿,直接影响装配演示与编辑效率。
排查路径
- 先复跑类型检查与核心测试,确保没有基础语法/类型噪音干扰。
- 对交互链路逐层定位:
AssemblyEditorWorkspace -> ModelViewer -> ThreeDEngine -> HoleOverlay2D -> ContextMenu。 - 对比当前行为与预期能力,确认回退点主要集中在:
- 拾取失败时没有兜底路径;
- 右键菜单缺少材质三级结构与预览;
- 爆炸滑块每次输入都触发重计算;
- 孔位候选坐标选择策略过松,导致对齐偏差。
最终修复
src/components/3d/ModelViewer.tsx- 增加拾取兜底:候选名拾取失败时自动执行全场拾取,再做节点名规范化映射。
- 中键按下补
preventDefault,避免浏览器默认中键行为干扰平移。
src/lib/3d/engine.tsapplyMaterialToMesh补充normalizeTooBrightMaterial,动态换材后依然执行近白灰化。
src/components/3d/HoleOverlay2D.tsx- 引入多坐标候选择优(原始坐标/模型矩阵/板件矩阵),并收紧阈值,减少孔位偏移。
src/components/ui/ContextMenu.tsxContextMenuItem增加缩略图与预览图字段。- 子菜单支持材质小图和悬停大图气泡。
src/app/products/[id]/assembly/AssemblyEditorWorkspace.tsx- 恢复右键三级材质菜单(材质、复制/粘贴、UV ±90°、材质分类、具体材质项)。
- 爆炸滑块改为 UI 值和渲染值分离,渲染值通过
requestAnimationFrame合帧提交。 - 关键文案统一中文化(孔位高亮、板材折角线、爆炸程度、菜单标题)。
2026-02-23 二次回归补丁
src/components/ui/ContextMenu.tsx- 右键菜单改为
createPortal渲染到document.body,修复父级 transform 场景下菜单偏移。
- 右键菜单改为
src/app/products/[id]/assembly/AssemblyEditorWorkspace.tsxshowPanelLeaders改为跟随showFoldLines,修复板材折角线开关无效。
src/components/3d/HoleOverlay2D.tsx- 对有
panelId的孔位优先面板解算,失败不再回落到宽松模型兜底,避免孔位聚集到底部错位。 - 吸附仅在近距离候选启用,并将
transformVersion量化到 30fps,缓解拖动爆炸滑块卡顿。
- 对有
src/lib/3d/engine.ts- 爆炸进度增加小幅变化跳过与最近进度缓存,减少高频重复重算。
src/lib/3d/engine-highlight-resources.ts- 近白灰化逻辑扩展到通用颜色材质,修复白膜材质仍偏白的回归场景。
验证
npm run type-check -- --pretty false通过npm test -- tests/api/auth-me.test.ts --runInBand通过npm test -- tests/lib/zip-parser.test.ts --runInBand通过npm test -- tests/services/sku-upload.service.test.ts --runInBand通过npm test -- tests/lib/engine-events.test.ts --runInBand通过
预防策略
- 装配页交互变更必须按“拾取 -> 菜单 -> 覆盖层 -> 性能”四段链路回归。
- 右键菜单能力作为固定清单项(层级、复制粘贴、UV、缩略图、悬停预览)纳入 UI 回归检查。
- 爆炸滑块与孔位覆盖层同时变更时,强制检查拖动帧率和孔位贴合度,避免单点优化引入联动退化。