# 设计稿差异与现有业务结构保护 Type: grilling Status: resolved Labels: wayfinder:grilling Blocked by: 02, 03, 04, 05, 06 ## Question 逐项比较蓝湖设计稿与当前驾驶舱后,哪些差异可归入素材替换,哪些必须另立结构或交互决策票?锁定一套可执行的判断表:视觉资产差异、布局尺寸差异、信息层级差异、组件状态差异、地图/设备语义差异、数据契约差异和交互行为差异分别如何处理。 用户已确认现有代码和业务契约优先;本票要把这一原则具体化为后续实施者可执行的边界,并识别真正需要另立票的冲突。 ## 进度 - 已认领(`Status: claimed`);阻塞票 02–06 均 closed。 - deck 已上报本票(`effortId=lanhu-cockpit-asset-replacement`)。 - 事实侧自查(不向维护者提问可自得的事实)——ADR 是「结构」的权威来源: - **ADR 0003** 锁定一级模式四态(总体概览/基础设施/运行监测/预警处置)、每个模式固定 4 个二级面板、左右两栏布局、`mode`/`panelId` 稳定英文键;视觉可替换但结构不变。 - **ADR 0004** 锁定渲染与状态边界:Cesium 为主、Three.js 为增强;`filterStore`/`uiStore`/状态语义不可由素材替换改变。 - **ADR 0008** 锁定相机交互(三键分工、阻尼、定位/归位/选择中心语义)——属「交互契约」,素材替换不得触及。 - **ADR 0005** 锁定模式切换选择态例外(三种分项互切清空选择、总体概览保留身份)——属「状态语义」。 - 既有票已锁:token 槽位(03)、manifest(04/09)、位置符号(05/10)、字体(06/11)。 - 本票要产出的是**可执行的差异判断表**:七类差异(视觉资产/布局尺寸/信息层级/组件状态/地图设备语义/数据契约/交互行为)各自归入「素材替换内」还是「升级为新决策」。 ## 第一轮裁定(已确认) - **Q1=A**:差异判断的**默认取向是「归入视觉素材替换」**;仅当差异明确触及状态语义、信息层级、交互契约或数据契约时才升级为结构决策。默认不无谓升级。 - **Q2=A**:**布局尺寸差异(两栏宽、面板高、边距、间距、字号)归入素材替换**——按票 03 token 规则(`--column-w`、`--space-*`、字号档位)调整,不改变 `mode`/`panelId`/面板数量/两栏结构。布局尺寸 ≠ 布局结构。 - **Q3(维护者原话:层级结构等以现在的为准)**:比「信息块增减才升级」更强——**一切信息层级差异都以现有实现为准**,默认不采纳设计稿的层级变更;仅视觉手段表达层级(字号/颜色/间距)可作素材替换调整。层级主次、信息块增删均以现状为准,除非升级为新决策并由维护者明确裁定。 - **Q4=A**:**状态集合与触发时机 = 结构;状态画法 = 视觉**。设计稿新增/删除状态类型 → 升级;仅画法不同 → 按票 03 状态推导规则归素材替换。 - **Q5=A**:**符号外观/颜色 → 素材替换(走票 05/10 合成计划层);图层显隐、拾取、聚合、状态语义 → 升级**。 - **Q6(维护者原话:数据以当前实际后端为准)**:比「数据内容差异升级」更强——**所有数据差异都以实际后端为准**,设计稿数据仅作参考展示,不驱动实现。数据展示格式(时间格式、千分位、小数位)属视觉实现,数据内容/字段/单位/口径一律以实际后端契约为准。 - **Q7=A**:与 ADR 0008 相机交互、ADR 0005 选择态、既有定位/拾取/联动契约冲突的交互差异 → **升级**;视觉反馈层(光效、动效表现)差异 → 归素材替换。设计稿标注中出现行为说明(如「点击后放大地图」)不得由实现者自行解读。 - **Q8=A**:升级后的处置流程 = **在本票判断表记录 → 另立新决策票(挂同一 map)→ 维护者裁定**;不口头裁决、不由实现票直接按设计稿做。 ### 第二轮裁定(已确认) - **Q9=A**:判断表写进本票 `Answer`,并在 `/to-spec` 的规格中固化为独立一节,供所有后续实施票引用。 - **Q10=A**:判断表在**每个素材替换实施批次/实施票开始时**由实现者自查,「未越界」列为该批次验收前置;票 08 终稿验收是最后一道闸,不是第一道。 - **Q11=A**:判断表单列「已有裁决(不得重新打开)」区——列出票 05 已就地修订的三处(`EMPTY` 点位空心方块、未关联设备十字、锚点/尺寸口径)及出处,防止实现者或未来会话重新裁决。 - **Q12=A**:布局分界词表——**两栏宽、面板高、边距、间距、字号 = 尺寸(token 层);面板数量、面板位置顺序、列排列方式、新增/删除面板、两栏改单栏 = 结构(升级)**。 - **Q13=A**:实施中途发现冲突的处置——**归视觉 → 实施者自行处理并记录到偏差/缺口清单;归结构 → 暂停该部分实现、按 Q8 升新票,不得由实施者改契约**。 - **Q14=A**:设计稿未覆盖的现有 UI **维持现状、标记为「无设计稿依据」**,不因蓝湖没画就删除或臆造样式;删除现有 UI 属结构变更必须升级。 ### 第三轮裁定(已确认) - **Q15=A**:判断表列结构 = **差异类型 | 触发条件(可判定)| 归入(素材替换 / 结构升级)| 处置路径(记录偏差 / 升新票)| 依据(ADR/既有票出处)**。 - **Q16=A**:保持票面题目给出的**七类**(视觉资产、布局尺寸、信息层级、组件状态、地图设备语义、数据契约、交互行为),逐类给出触发条件与处置,与前几轮裁定一一对应。 - **Q17=A**:**尚未发现需要升级的确凿冲突**——现有差异都已归入素材替换或已就地修订;判断表预留升级路径,等票 02 逐画板盘点完成后再逐项触发。 - **Q18=A**:归入素材替换的视觉差异产生偏差时,**复用票 06 的缺口清单**记录(语义 key、缺口类型、回退结果、责任人),不另设第二套偏差清单。 - **Q19=A**:判断表**不转代码断言**,是人工审查清单;结构保护中能自动化的部分(禁止新增 `panelId`、状态词表冻结等)由既有 ADR 与既有断言面覆盖,判断表不重复造断言。 ### 收口结论(本票讨论完成) **判断表(七类差异 × 五列)已收口。核心原则:默认归视觉、现状优先、升级必须立票。** 判断表正文见下方 `## Answer`。 ## 真实状态与下一步 - 状态:**已完成并关闭**(`Status: resolved`)。Q1–Q19 全部有裁定,无遗留未决项。 - 交付物: 1. 本票 `Answer`(判断表 + 原则 + 已有裁决区); 2. 规格子票[设计稿差异与现有业务结构保护规格](12-design-diff-structure-boundary-spec.md)(`ready-for-agent`,已挂入同一张地图)。 - **对抗式审查记录(2026-10-08)**: 1. **抓到并修正 1 处内容自洽问题**:判断表「组件状态/地图设备语义/交互行为」三行「归入」列同时含结构与视觉,可能让实现者对「这一行到底归哪边」困惑——已补「读法说明」(先按触发条件落到子类),确保可判定性。 2. **抓到的其余断言核实通过**:票 12 规格无「自动判定越界」的虚假保证(三处出现均是否定/边界表述);与 Q19「不转自动化断言」一致;不重复既有断言面。 3. **修正地图计数过期项**(流程中逐步累积):进度行「9/12 → 11/12」、「3 张规格 → 4 张规格」、已关闭决策票补 07、剩余可推进改指票 08,并在 `Decisions so far` 补票 07 与规格 12 索引。 - 下一步:推进[分批替换与终稿验收方案](08-batch-and-final-acceptance.md)(唯一剩余决策票,其阻塞票 02–07 均已关闭);实现工作由各规格子票承接。 ## Answer ### 判断表(七类差异) > **读法说明**:表格「归入」列出现「A=结构;B=视觉」时,表示该差异类型需先按「触发条件」落到子类——命中前半段触发条件(状态语义/信息层级/契约/行为)即按结构处置,命中后半段(仅外观/格式/反馈)即按视觉处置。判断表是人工审查清单,不转自动化断言。 | 差异类型 | 触发条件(可判定) | 归入 | 处置路径 | 依据 | | --- | --- | --- | --- | --- | | 视觉资产 | 图标/颜色/字体/纹理/形状的外观差异;不改变状态语义与业务结构 | 素材替换 | 记录偏差到票 06 缺口清单 | 票 03 token、票 05/10 位置符号、票 06 字体 | | 布局尺寸 | 两栏宽度、面板高度、边距、间距、字号变化;面板数量/顺序/栏数不变 | 素材替换 | 按票 03 token 规则调整 | ADR 0003、票 03 | | 信息层级 | 信息块增删、主次顺序、层级结构变化;非仅视觉手段表达层级 | 结构升级(以现状为准) | 暂停、按 Q8 升新票 | ADR 0003、Q3 维护者原话 | | 组件状态 | 状态集合/触发时机变化(新增/删除状态类型);仅画法不同 | 状态集合=结构;画法=视觉 | 结构升级 / 视觉记录偏差 | ADR 0004、票 03、Q4 | | 地图/设备语义 | 图层显隐规则、拾取、聚合、状态语义变化;仅符号外观/颜色不同 | 语义=结构;外观=视觉 | 结构升级 / 视觉记录偏差 | ADR 0004/0008、票 05/10、Q5 | | 数据契约 | 数据字段、单位、口径与后端不一致;仅展示格式(时间/千分位/小数位)不同 | 全部以实际后端为准;格式属视觉 | 内容=以实际后端为准;格式=记录偏差 | ADR 0001/0002、Q6 维护者原话 | | 交互行为 | 与 ADR 0008 相机、ADR 0005 选择态、既有定位/拾取/联动冲突;仅视觉反馈层(光效/动效表现)不同 | 行为=结构;反馈=视觉 | 结构升级 / 视觉记录偏差 | ADR 0008/0005、票 06/11、Q7 | ### 原则 1. **默认归视觉**(Q1):差异判断默认归入素材替换,仅触及状态语义/信息层级/交互契约/数据契约才升级。 2. **现状优先**(Q3/Q6):信息层级与数据一律以现有实现与实际后端为准;设计稿数据仅作参考展示。 3. **升级必须立票**(Q8):结构差异记录到判断表 → 另立新决策票 → 维护者裁定;不口头裁决、不由实现票直接按设计稿做。 4. **实施批次自查**(Q10):每个素材替换实施批次开始时由实现者用判断表自查,「未越界」列为验收前置;票 08 终稿验收是最后一道闸。 5. **不重复造断言**(Q19):判断表是人工审查清单;结构保护中能自动化的(禁止新增 `panelId`、状态词表冻结)由既有 ADR 与既有断言面覆盖。 ### 已有裁决(不得重新打开) | 项 | 原口径 | 现口径 | 出处 | | --- | --- | --- | --- | | `EMPTY` 点位 | 空心方块 `hollowSquare` | 镂空徽标母版 + 降饱和降亮度 + 无内层图标 | 票 05 | | 未关联设备 | 十字标记 `cross` | 镂空徽标母版 + 内层行业图标 + 降饱和降亮度 | 票 05 | | 锚点/尺寸 | 中心锚定、边长语义 | 尖端锚定、宽度基准 18/14 | 票 05 | | 核心资源组成员 | 未定义 | 品牌标识 + 点位/设备状态形状语义 + 状态色语义 | 票 06 | ### 中途冲突处置(Q13) - 归视觉 → 实施者自行处理并记录到票 06 缺口清单。 - 归结构 → 暂停该部分实现、按 Q8 升新票,不得由实施者改契约。 - 设计稿未覆盖的现有 UI(Q14)→ 维持现状、标记「无设计稿依据」,删除属结构变更必须升级。 ### 边界与风险 - **票 02 逐画板盘点仍是前置**:判断表不替代盘点;确凿冲突只有在盘点完成后才能逐项触发升级(Q17)。本票不臆断存在或不存在冲突。 - **判断表是人工审查**:不转自动化断言;既有断言面(`t01-panel-catalog` 等)继续承担结构保护。 - 本票只产决策,不实现;实现工作由规格子票承接。 - 按 `AGENTS.md`,本轮未运行 build/dev/浏览器调试。