Jelajahi Sumber

docs(issue-52): record four UI fixes and facility relation contract landing

ChenJZ 12 jam lalu
induk
melakukan
a1cd7bf7cb
1 mengubah file dengan 21 tambahan dan 0 penghapusan
  1. 21 0
      .scratch/cockpit-shell-panel-layout/issues/52-untitled.md

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

@@ -110,6 +110,27 @@ AI 不代劳的原因:`AGENTS.md` 禁止自动 build/dev/浏览器截图;后
 - 2026-10-21 按 `/wayfinder` 接手(上游 #51 已关闭,阻塞解除):复跑 `t52-device-source`/`t52-device-plan`/`t52-device-pick` 全部通过;实测核验设施/井关系端点,确认**免鉴权 cockpit 面无设备→设施关系契约**(`map-snapshot` 设备侧 `networkId` 0/8、点位 0/7,`device-boundary` 只有两份扁平清单,`manhole_device_rel` 读取需 401)。据此勾选第 1 条验收的核验部分,并把「补齐」明确为后端契约依赖写入正文。
 - 记录:正文曾被 `deck_issue_patch` 传入空 `body` 擦除,已按原文恢复;后续只读上报。
 
+### 2026-10-22 维护者四条反馈修正 + 后端契约落地
+
+维护者现场验收后给出 4 条修正(A)并批准后端补契约(B),均已在本会话完成,提交 `c12f774`(前端)与 `83bd5ee`(后端),均已推送。
+
+| # | 反馈 | 处理 |
+| --- | --- | --- |
+| A1 | 设备区与管道状态已分离,但附近管道状态要分页 | 每页 8 条 + 上一页/下一页 + 页码;换选/邻域变化回到第 1 页。`t23-click-flow` 断言 12 条时只渲染 8 条且设备区仍在 |
+| A2 | 场景设备图标没有用地图同款,要保持一致 | Three 场景**不再自绘图标**:改为 `planMarker` + `renderMarker`(与一张图同一合成链路:水滴母版 + 行业内层 + 白描边 + 状态色),产物作 Sprite 贴图,尺寸沿用其 `draw` |
+| A3 | 详情面板要与监测设备坐标点一致,点击后在三维场景中浮动 | 详情从右侧栏移出,改为浮在三维场景之上的独立面板(可单独关闭,不动相机/场景) |
+| A4 | 无坐标设备在地下管线详情视图中应隐藏 | 改为**直接跳过**,不再进清单;主图台账仍可查 |
+
+**顺带修掉一个真实缺陷**:改造图标点选时曾丢失每次点击的 `setFromCamera`,导致拾取依赖上一次射线的残留状态。已恢复按本次坐标重新投射;图标点选用与图标同尺寸的透明代理平面命中(Sprite 在嵌套缩放下 raycast 不可靠——同一图标最小用例能命中、放进场景就 miss)。
+
+**B 后端契约(已上线)**:`GET /api/cockpit/v1/device-facility-relations`(免认证只读,沿用既有 `permitAll`,未放宽安全边界;commit `83bd5ee`)。前端新增 `services/deviceFacilityRelations.js` 消费它,关联优先级变为**真实设施关系 > 载荷 networkId > 同业邻近示意**。
+
+**⚠️ 必须如实记录的数据现状**:契约已就绪,但**当前真实可回联关系为 0 条**。实测响应:`manholeRelationRows=6`、`gasPipePointRelationRows=4`、`returnedRelationCount=2`,其中 `skippedManholeFacilityMissing=4`(4 条存的是设备 id 不是窨井主键)、`skippedGasPipeNetworkMissing=4`(管点 `network_id` 在管段表里不存在,悬空)、`deviceCodeUnresolved=2`(2 条 `equipment_id` 在 `equipment_base` 查不到,`deviceCode` 为 `null`)。因此界面当前仍标「邻近设备 · 示意安装」,**不是**真实绑定;要真正点亮真实关联,需运维补数据(管点 `network_id` 指向真实管段、关联表 `equipment_id` 指向 `equipment_base` 主键)。
+
+**验证**:`t52-facility-relations`(真实关联命中/设施编码不匹配降级/空索引降级/只回联齐全行/取数失败降级)、`t52-device-source`、`t52-device-plan`、`t52-device-pick`、`t55-detail-usability`、`t55-device-loading`、`t56-real-water-device`、`t56-device-metrics`、`t23-click-flow`、`t23-sfc-compile`、`t09-point-status`(38/38) 与整套 12 脚本全部通过。按 AGENTS 未跑 build/dev/browser。
+
+**范围自查**:`mapService.js` 与 `markerPlan.js` 带其它在制品改动,本票**未提交**这两个文件(Three 服务自带同值兜底色表,避免触碰他人工作);未改任何后端既有文件。
+
 Status: ready-for-human
 Assignee: codex
 Type: task