Browse Source

docs(issue-52): record camera displacement root cause and fix

ChenJZ 13 giờ trước cách đây
mục cha
commit
b35b16460a
1 tập tin đã thay đổi với 16 bổ sung và 0 xóa
  1. 16 0
      .scratch/cockpit-shell-panel-layout/issues/52-untitled.md

+ 16 - 0
.scratch/cockpit-shell-panel-layout/issues/52-untitled.md

@@ -155,6 +155,22 @@ AI 不代劳的原因:`AGENTS.md` 禁止自动 build/dev/浏览器截图;后
 
 `t52-camera-flight.mjs` 断言:①受理瞬间不瞬移且已排帧;②半程已移动但未到终点(证明是连续运动);③到期镜头方向正对设备中心(用方向点积,不能用距离——`lookAt` 只取单位向量);④拖拽接管后不再排新帧;⑤销毁后停止推进。全套回归通过。
 
+Status: ready-for-human
+
+### 2026-10-22 四次反馈:相机位移仍未生效(已修,`8bbfeee` + `a932fc9`)
+
+维护者:「地下管线详情视图的相机位移没成功实现。」
+
+**根因**:详情视图有两条设备选中入口,但只有一条会定位——
+- 右侧清单点击 → `selectDevice()` → 调了 `viewer.focusDevice()`;
+- **场景图标点击 → `onDevicePick` → 只 `emit('device-pick')`,从未调用 `focusDevice`**。
+
+维护者点的是场景图标,所以相机不动。修法:抽出统一入口 `pickDevice(device)`,两条路径共用(先定位、再开详情),不会再分叉。
+
+**另外补了一条更硬的验证**:此前的 `t52-camera-flight` 全部注入假 `scheduleFrame`/`now`,只能证明插值逻辑对,不能证明**生产默认路径**(真实 `requestAnimationFrame`/计时器)真的会跑。新增不注入的用例:真实计时器等 900ms 后断言相机确实移动且正对设备——已通过。
+
+顺带:`mapService` 的并发改动新增了 `dispatchPickResult`,`t23-click-flow` 的 vm 函数提取列表按需补上(只为让测试适配并发改动,未改该文件)。
+
 Status: ready-for-human
 Assignee: codex
 Type: task