14-exec-batch1-brand-icons.md 7.1 KB

执行-批次1:品牌/图标替换

Type: execution Status: ready-for-agent Label: ready-for-agent Blocked by: None Category: execution

What to build: 把驾驶舱 6 个内联 SVG 占位图标(brand / layers / points / event / resource / blank)替换为正式素材,经统一资产解析层按语义 key 消费;全部素材在 manifest 登记并通过校验。图标注册表与渲染组件的接缝不变——只换素材来源,不改引用点。

引用规格(单一决策事实来源)

进入自查(开工前逐项确认,记录进本票证据区)

  • 本批素材已入 manifest 且通过校验(存在、hash、fallback 齐全)。
    • 事实修正:蓝湖正式导出包不在仓库(票 02 结论:无已确认可直接运行时资源),故六枚图标为原内联几何原样迁移的临时 SVG,status: temporary、真实 sha256、fallbackKey: null(图标无跨语义回退,加载失败渲染为空);validateManifest() 模块加载期校验通过(schema/唯一性/路径安全/hash 格式/fallback 引用)。
  • 差异判断表自查:本批涉及的差异逐项分类(结构项暂停并升新票;视觉项放行)。
    • 七类逐项对照:仅「视觉资产」类命中(图标资源来源由内联改为 manifest 登记文件);布局尺寸、信息层级、组件状态、地图/设备语义、数据契约、交互行为均未触碰 → 全部归视觉放行,无结构项。
  • 既有结构断言面全绿(四模式 / 16 panelId / 状态词表冻结)。
    • 未运行:按 AGENTS.md,本会话未获明确要求,不运行 build/dev/test。静态核对:本次改动只涉及 icons.js / runtimeAssets.js / CockpitIcon.vue / public/cockpit/**,未触碰 panelCatalog.js、状态词表、模式与面板结构。
  • 若统一资产解析层尚未实现,先按规格 09 实现最小可用子集(manifest 校验 + 语义 key 解析),再进入本批素材替换。
    • 已实现:domain/runtimeAssets.js(manifest 校验 + 语义 key 解析 + BASE_URL 兼容)。最小子集边界:manifest 随包内置(构建期固化),运行时远程拉取/短缓存/整包回滚留待规格 09 完整实现,对外 resolveAsset(key) 语义不变。

验收清单

实现者自测(纯逻辑 + 静态检查):

  • 图标注册表六键齐全,全部经语义 key 解析,组件与地图服务中无散落物理路径。
    • ICON_SPECS 六键 → icon.* 语义 key → resolveAsset();全仓 grep cockpit/assets 仅命中 domain/runtimeAssets.js(manifest 导入)一处。
  • 未知图标渲染为空不抛错(既有不变量保持)。
    • iconFor() 未知名/无 URL 返回 null → CockpitIcon v-if 不渲染;不变量改为组件模板条件渲染承载。
  • manifest 条目字段齐全:语义 key、来源、hash、fallback、状态(正式/临时)。
    • 六条目含 key/path/source/format/dimensions/transparent/density/version/hash(sha256 实测)/status(temporary)/appliesTo/fallbackKey/core;fallbackKey: null 为显式无回退(图标失败渲染为空,不跨语义借用,符合规格 09 语义边界)。
  • 资源引用走查:全部图标有消费点,无死资源。
    • brand→CockpitShell 顶栏;layers/points/event/resource→MapCanvas LAYERS;points→MapCoordinateBlocked;blank→PanelPlaceholder。
  • 结构回归全绿(四模式 / 16 面板 / 图例与标记一致)。
    • 未运行(AGENTS.md:未经明确要求不运行 build/dev/test)。需维护者放行验证命令或人工走查时补。

维护者走查(真实 /cockpit):

  • 品牌位与五个功能图标视觉符合设计稿(或偏差已登记)。
  • 走查单逐项勾选 + 截图。

缺口登记:

  • 本批归视觉偏差已在签收前写入票 06 缺口清单(语义 key、缺口类型、回退结果、责任人)。
    • 已在票 06 新建「缺口清单」表并登记 6 条;票 19 盘点后已修正分类:六条从「正式素材未交付」改记为「设计稿未覆盖」(品牌位无 logo 图形、四个功能图标在稿中为纯文字 chip),处置为按规格 12 维持现状并标记无设计稿依据。

证据区(完成后填写)

  • 走查单路径:未走查(维护者真实 /cockpit 走查待做;本会话按 AGENTS.md 未运行 dev/浏览器)。
  • 截图路径:无(同上)。
  • data-* 读数:未实测;观察接缝已落地——CockpitIcon 输出 data-icon-name / data-asset-status(当前应读作六处 temporary),manifest 级读数可经 manifestStatus() 取得。
  • 已登记缺口数:6(票 06 缺口清单)。
  • 维护者签收:未签收。

真实状态与下一步

  • 已完成:① 规格 09 最小可用子集——domain/runtimeAssets.js(manifest 校验:schema/字段齐全/语义 key 唯一/路径安全/hash 格式/fallback 引用;语义 key 解析经 import.meta.env.BASE_URL 拼 URL,兼容相对 publicPath 与 qiankun 注入);② 六枚图标由原内联几何原样迁移为 public/cockpit/assets/icons/*.svg(零视觉增量,不虚构设计),manifest 登记为 temporary 并附真实 sha256;③ CockpitIcon 改 CSS mask 渲染(颜色仍由 currentColor 控制,与原视觉一致),引用点 name/size 接缝不变。
  • 盘点结论(票 19,2026-10):蓝湖 9 个画板中不存在这六个图标的正式素材——品牌位是渐变文字无 logo 图形、四个功能图标在稿中为纯文字 chip、空面板占位图示无对应物。因此本批不再等待"正式素材替换";按规格 12 处置为「设计稿未覆盖的现有 UI 维持现状 + 标记无设计稿依据」,缺口分类已在票 06 修正。
  • 未完成:结构断言面与结构回归未运行(AGENTS.md:未经明确要求不运行 build/dev/test);维护者走查与签收未做。
  • 下一步:① 维护者在真实 /cockpit 走查并签收(当前视觉即设计稿未覆盖的占位几何,走查结论应记为「无设计稿依据、维持现状」);② 维护者明确要求后运行结构断言面/回归;③ 若维护者希望品牌位出现 logo 或 chip 出现图标,属新增设计需求,需设计方确认后另立决策票,不在本票内实现。
  • 本票不关闭:验收清单中「结构回归」「维护者走查」两项未完成。

Out of Scope

  • token 色值替换(批次 2)、位置符号(批次 3)、字体(批次 4)、装饰(批次 5)。
  • 结构变更(面板/状态语义/交互契约)——按判断表升级路径另立票。
  • 按 AGENTS.md,实施时未经用户明确要求不运行 build/dev。