# 城市生命线驾驶舱蓝湖正式素材替换方案(决策地图) Status: resolved Labels: wayfinder:map ## Destination 形成一份可直接交给开发执行的正式素材替换规格:基于蓝湖导出资源,覆盖驾驶舱 2D UI 与监测点/监测设备位置符号,锁定资产清单、语义 manifest、运行时路径与版本规则、字体授权与降级策略、既有业务结构保护,以及真实 `/cockpit` 与 qiankun 宿主的验收和分批交付方案。地图完成时不直接替换业务代码,而是让实现者无需重新发明关键决策。 ## Notes - Domain:城市生命线 Web 驾驶舱 `/cockpit`;词汇以根目录 `CONTEXT.md` 为准。 - Skills:`grilling`、`domain-modeling`、`research`、`prototype`;需要真实浏览器验收时使用 `browser-skill`。 - 用户已确认:Q1=B,Q2=B,Q3=A,Q4=A+C,Q5=D,Q6=C,Q7=D,Q8=B,Q9=B,Q10=B,Q11=A,Q12=C,Q13=A,Q14=A,Q15=A。 - 方案边界:现有模式、panelId、信息架构、地图/设备状态、拾取、定位和聚合契约优先;蓝湖与现有结构冲突时另立决策,不在素材替换中隐式重做。 - 资产边界:本图覆盖 2D UI、监测点和监测设备位置符号;不把设备/城市 3D 模型、地形、DEM、影像和 3D Tiles 当作本图正式素材。 - 运行时约定:正式资源进入驾驶舱自有资产边界,引用必须兼容 `import.meta.env.BASE_URL` 与 qiankun 注入路径;保留现有 `CockpitIcon`、`markerSvg`、`deviceAssets` 等单一接缝。 - 设计交付:原始蓝湖导出包与运行时资源分离;当前分享页要求重新登录,资源获取前需要人工完成一次登录。 - 按 `AGENTS.md`,本图阶段不自动运行 build/dev/浏览器调试;实现阶段需另行遵守该限制,除非用户明确要求验证。 ## 任务清单 - [x] [蓝湖访问与正式资源交付包](issues/01-lanhu-access-and-delivery.md) - [x] [蓝湖页面与运行时资产清单](issues/02-lanhu-asset-inventory.md) - [x] [正式视觉系统与现有 token 映射](issues/03-visual-system-token-mapping.md) - [x] [运行时资产 manifest 与版本策略](issues/04-runtime-asset-manifest-and-versioning.md) - [x] [运行时资产 manifest 与版本策略规格](issues/09-runtime-asset-manifest-spec.md) - [x] [监测点与监测设备位置符号映射](issues/05-point-device-marker-mapping.md) - [x] [监测点与监测设备位置符号规格](issues/10-point-device-marker-spec.md) - [x] [字体授权与缺失资源降级](issues/06-font-and-fallback-policy.md) - [x] [字体授权与缺失资源降级规格](issues/11-font-and-fallback-spec.md) - [x] [设计稿差异与现有业务结构保护](issues/07-design-diff-and-structure-boundary.md) - [x] [设计稿差异与现有业务结构保护规格](issues/12-design-diff-structure-boundary-spec.md) - [x] [分批替换与终稿验收方案](issues/08-batch-and-final-acceptance.md) - [x] [分批替换与终稿验收规格](issues/13-batch-acceptance-spec.md) - [x] [执行-批次1:品牌/图标替换](issues/14-exec-batch1-brand-icons.md) - [x] [执行-批次2:面板视觉 token 替换](issues/15-exec-batch2-panel-tokens.md) - [x] [执行-批次3:地图/设备位置符号替换](issues/16-exec-batch3-map-markers.md) - [x] [执行-批次4:字体接入](issues/17-exec-batch4-fonts.md) - [x] [执行-批次5:装饰/纹理替换](issues/18-exec-batch5-decorations.md) - [x] [蓝湖 9 画板逐项盘点与正式切图交付](issues/19-lanhu-artboard-inventory.md) - [x] [执行票:地图标记 DOM overlay 渲染(已迁移留痕)](issues/20-dom-overlay-billboard.md) ## 进度 **地图已收口(`Status: resolved`,2026-10-15)**:20 张子票**全部 resolved**——8 张决策票(01–08)+ 5 张规格票(09–13)+ 5 张执行票(14–18)+ 盘点票 19 + 迁移留痕票 20。 **Destination 已达成**:正式素材替换规格集完整、五批实施全部收口、终稿验收通过。 **终稿验收(2026-10-15)**:[终稿验收报告](final-acceptance-report.md) —— 真实 `/cockpit` @ 1280×720 四模式走查通过、6 套断言面全绿、字体 5/5 加载、404=0、控制台业务报错=0、P0/P1/P2 缺陷为 0、P3 共 11 条已登记、核心资源组全部换正式素材。qiankun 宿主经维护者指示**已补做**:自建最小宿主实测「加载 + 挂载 + 基址注入生效 + cockpit 模块图全 200」;宿主内完整 `/cockpit` 走查因**宿主集成既有问题**(`runtime.js` 的 `history` 契约不匹配,非本图缺陷)未完成,已记入待办。维护者确认**签收**并同意关闭票 13 与地图。 **共识留档**:[项目共识与经验留档 CONSENSUS.md](CONSENSUS.md) —— 由本图全部子票提取,覆盖决策原则、工程经验、踩坑清单、字体授权、实施验收流程与验收环境事实,供后续同类任务直接复用。 **遗留(独立事项,不阻断本图收口)**: 1. **宿主集成问题**:`src/.fes/plugin-qiankun/micro/runtime.js:24/26` 解构 `{ router, history }` 但 FES 4 的 `onRouterCreated` 只保证 `router` → 宿主内 `/cockpit` 抛 `reading 'push'` 未渲染。该文件无本地改动,属仓库既有问题,需另立事项处理。 2. **`icon.blank` 临时占位**(`core:false`,设计稿未覆盖,P3)—— 登记在票 06 缺口清单。 3. **`aerial.webp` 临时底图** —— 归票 21/22 底图线,不属本图。 4. **待设计方确认**:`decor.grid-scanline-vignette`(5 项氛围增强)、`decor.brand-pool`(光池推断消费点)、`decor.unconsumed-candidates`(11 个无落点候选)。 进展备注(批次 1 收口,2026-10-12):**[票 14](issues/14-exec-batch1-brand-icons.md) 已完成并关闭**。四轮迭代(初版替换 → 运行态缺陷修复 → 维护者全量导入 → 英文名+风格统一+状态图标)后收口:统一资产解析层(可达性+hash 校验+拒绝 HTML 兜底)、manifest 28 条(fonts 块与批次 4 并存,`PRESERVED_TOP_LEVEL` 保住并发数据)、64 张全英文名运行时图标(根 46 + panel 10 + status 8)、面板 16 panelId / 行业 4 / 状态 8 桶三套语义映射,面板与状态图标按 Texture/Icon 的 **I/Pipe/Q 系列去色染项目调色盘色**统一风格。沉淀 **[UI 设计及图标素材使用共识](icon-usage-consensus.md)**——后续图标/切图的引入、替换、改名一律按该文档执行。遗留仅 `icon.blank` 临时占位(票 06 缺口清单唯一未闭项)。 对后续批次的影响(同一批新版数据已备好):票 15 可用新版全稿色板与 1440 基准;票 16 可用 `Group 5054–5057` 内 28×36 双层水滴母版矢量;票 17 可用字体清单(正文为白名单内 Noto Sans SC);票 18 可用面板/结构装饰切图。新版原始数据与归档见 `research/raw-v2/`、`design-archive-v2/`。 进展备注(批次 4 字体接入,2026-10-13 更新):[票 17](issues/17-exec-batch4-fonts.md) 已认领并实施到「可走查」状态,**未关闭**。维护者开工前裁定三件事:① **字体白名单扩展为六族**——原三族(思源黑体/思源宋体/Crimson Text)是维护者字体目录的取证结论,但设计稿正文实际是 `Noto Sans SC`(913)、数字/等宽是 `Rajdhani`(163)/`Share Tech Mono`(134),三族均 OFL,按规格 11 Q12 自带的「归档上游许可证 → 由名字暗示升级为确证」机制入白名单;② `--font` / `--num` **槽位名与语义不动**,取值把 Web 字族插到系统回退链**之前**、回退链原样保留;③ 授权本会话跑 dev server 做真实 `/cockpit` 走查。已交付:六族 OFL 文本归档 + **子集化字体 446 KB**(源 34.7 MB)+ manifest `fonts` 块(6 licenses / 5 entries)+ **字体授权门禁**(无证据字体在解析阶段不可用,且结构上不生成 `@font-face`)+ 静态自查与对抗式反证全过 + 真实页面确认 5 个字体文件被请求。**自动验收 A1–A13 全绿**(2026-10-13):静态三项脚本 + 结构面 + 产物边界 + HTTP content-type + 真实页冷加载 5/5 字体 200、1371 请求零失败;总体概览截图目视核对通过(中文无豆腐块、KPI 数字无溢出)。**未完成**:四模式/16 面板逐项目视走查、结构回归断言面(`AGENTS.md` 未获明确要求)、维护者签收。缺口(子集外走回退、数字逐字差 16 项、Medium 字重未嵌、三族无消费点未嵌、`Alimama FangYuanTi` 无证据、`PingFang` 不可嵌)已全部登记[票 06 缺口清单](issues/06-font-and-fallback-policy.md);走查单见 [批次 4 验收说明](walkthrough-17-batch4.md)。**本批还发现一个 dev 侧静默失败坑**:Vite 会缓存被 `import` 的 `manifest.json` 的转译结果,外部脚本改写后页面拿到旧模块、字体静默不生效——门禁如实报 `fonts-unavailable` 使其可观察。 **第二轮人工验收复验(2026-10-13,重要协同教训)**:维护者反馈「没发现异常,但不确定字体是否被替换回初版」——怀疑**属实**,复验发现字体确实静默回退,两处根因均已修复:① **跨会话覆盖**——另一会话(批次 1 重做)跑 `research/build-manifest.mjs` 时整文件重写 manifest,把 `fonts` 块一并抹掉(26409→15538 字节);已恢复 fonts 块并**加固该脚本**(重写前保留未知顶层块,实测对方再跑一次后 fonts 块仍在)。② **浏览器 HMR 模块图陈旧**——dev 转译已含 fonts,但 HMR 只热更边界组件 `CockpitShell.vue`、不重新加载其传递依赖的 `manifest.json` 模块,浏览器跑的仍是旧 manifest → 门禁判不可用 → 不生成 `@font-face` → 字体请求 0;**硬刷新**后恢复 5/5。两坑已写入走查单 §5,并确立验收纪律:**「字体请求为 0」必须判 FAIL**(Web 字族排回退链首位,页面文本必用到)。**对正在并行的批次 1 重做会话的提醒**:重跑 `build-manifest.mjs` 现已保留 fonts 块,但改完 manifest 后需硬刷新浏览器再判定效果。 **第三轮复验(2026-10-13,维护者反馈「依然没生效」)——归因经维护者纠正后收口**:我一度误判维护者在看 5173 宿主(那是无关标签),**维护者一直开独立页 8000**——撤回宿主归因;`defaultBase()` 的 qiankun 注入分支作为「将来嵌宿主的必要防御」保留,但不是本次原因。真实原因有二:① 维护者标签页是修复前打开的(坑 B HMR 陈旧),硬刷新解决;② 字体其实生效——Noto Sans SC 与微软雅黑同为全宽黑体(实测 CJK advance 均 1.0 em),中文观感几乎无差,可辨差异在数字与拉丁字母。**第四轮(维护者硬刷新后确认)**:数字(Rajdhani)没问题;报顶栏两件事并已修复——**主标题消失**是批次 1 遗留 bug(`` 未传 size,被内联 `1em` 压成 ~14px;修复=模板传 `size="calc(215 * var(--u))"`),**顶栏字体丑**新增 `--font-topbar` 系统黑体 token 只作用顶栏+筛选条(`--font`/`--num` 槽位未动,符合规格 11「优先现状」)。截图复验:主标题恢复、顶栏清晰、正文 Noto/数字 Rajdhani 维持。走查签收与结构回归仍待维护者。 **第五轮(2026-10-13,维护者三连反馈:主标题太小 / 副标题多余 / 顶栏换粗体标题字体)**:① 主标题当时改 HTML 大字(30u + 批次 1 渐变辉光);② 副标题「沅陵县 · 只读展示」删除(与「只读视图」chip 重复,此决定保留);③ 按白名单证据确证制从维护者字体目录选定 **标小智无界黑 LogoSC Unbounded Sans**(超粗黑,内嵌双语 OFL 声明 + 版权行取证;排除:得意黑太跳、联盟起艺 license 行含占位符来源弱、**创客贴金刚体带「正版授权」商业水印无 OFL 直接排除**);子集 195 KB、@font-face 按 700 声明(防浏览器对超粗面合成伪粗)、新增 `--font-title` 语义槽(筛选条小字保持系统黑体,`--font`/`--num` 未动)。复验:门禁 6/6 ok、批次 1 交叉引用四处全绿。 **第六轮(2026-10-13,维护者否掉 HTML 大字:要切图风格、用上 brand-glow/brand-glow-path)**:取证后确认「太小」真因是缩放策略——按顶栏高度等比缩放把 46.5% 的光带也算进 52u。改为**按文字高度反推整图宽**(313u→文字 ≈41u),光带溢出顶栏由筛选条承接(设计稿光层 114 > 文字 61 的原关系)。三处落点全部经 manifest 语义 key:`icon.brand` 标题切图(渐变字+底座光带,设计原样,取代第五轮 HTML 大字)+ 新登记 `icon.brand.glow`(模式按钮下方光带,D2 原位置 221×35@2x)+ `icon.brand.glow.path`(顶栏底边折线光路,替换 1px CSS border)。复验:manifest 30 条全过、批次 1 交叉引用全绿、截图确认装饰全部就位。模式按钮保留 --font-title 超粗黑(第五轮指定);`--font`/`--num`/门禁未动。 **第七轮(2026-10-13,维护者:主标题再放大 / 菜单栏参考蓝湖稿重做+换字体)——按 D2 取证重做**:设计稿 nav 真相是「纯文字 + 选中态底板」——未选中 PingFang 14px `#00b8ff` 常规体、选中白色 Semibold,唯一装饰是 `nav/title-bg` 切图底板(仓库 `title-select-bg.png`,顶部青色亮线+衰减浅蓝板);**光晕实测中心正对选中按钮**(x=1016 vs 1017)——光带跟选中走,不挂 nav 居中。据此重写菜单按钮:撤掉 CSS 发明的切角梯形/深蓝渐变/下划线/无界黑,底板与光晕经 `navDecorStyle` 从语义 key 解析成 CSS 变量注入(样式零物理路径,缺条目自动退化)。无界黑遭否且设计稿本无此消费点 → **`--font-title` 槽与嵌入撤销**(证据归档保留)。主标题放大至 360u(文字 ≈47u)。复验:manifest 31 条全过、交叉引用一致、门禁 5 条目 ok、截图确认。 **第八轮(2026-10-13,基线对齐收口)**:维护者要求标题光带最低线与 brand-glow-path 最低线**共线**、其他按钮/文字留出血不压线。像素取证解方程:标题亮线在画布 53.1% → 高 = 52u/0.531 ≈ 98u → **宽 404u**(顺带文字再放大到 ≈53u);顶栏 `padding-bottom: 4u` 作出血纪律;选中光晕 `::after` 随基线上移(top: 100%−10u)。截图确认两条最低线视觉共线、无压线。 **第九轮 R2(2026-10-13,对齐微调收口)**:维护者确认两线共线、主标题定稿;三点修正——① path 右移 12u(取证:可见线段只占图片列 22.9%–62%,左缘是透明留白,图片盒子起点横在标题文字上);② 基线保护区 4u→**10u**(内容可用高 42u,菜单行垂直居中,底边离基线 4u,文字与底线零重叠);③ wing 装饰线挪两侧空白区(top 58%、left/right:0、透明度 0.55,不再横穿文字)。截图复验通过。 **第十轮 R3(2026-10-13,维护者重启后报「改了没生效」)**:排查磁盘/编译/下发三层全正常——真因是**窄视口响应式缺陷**:`--u` 触底 1px 后顶栏内容总宽超出视口,grid 挤压菜单列 → 按钮文字换行 → 34u 定高裁成单字(维护者窗口较窄正好踩中)。修复:按钮 `white-space: nowrap`、品牌列 `min-width:0` + 标题切图 `max-width:100%` 等比让位。1272×570 与 2034×908 双视口验证通过。教训:此前九轮全部在大视口验证,**响应式回归必须覆盖窄视口**。 **第十一轮(2026-10-13,两个结构性根因)**:维护者宽屏实测——path 右移无效果、宽屏菜单串底线、窄屏标题失据。根因:① path 被 `width:100%` 整图拉伸,可见线段(画布列 22.9%–62%)按**百分比映射视口**,挪图片盒子永远无效 → 改**裁切窗口**(left 430u 标题右侧起、`background-size:230%`、`position:38.4% 100%`,线段起点恒在标题右侧、亮线恒贴基线,URL 走 `--brand-path-url` 语义注入);② 标题切图(98u)作为 grid 项内容**把顶栏行撑高**——菜单"垂直居中"变成相对 98u 行居中、底边落在基线上(宽屏串线真因;窄屏切图缩小行变矮故菜单正常,与维护者观察吻合)→ 品牌列**定高 52u + 标题绝对定位**(溢出不占布局)。复验:窄视口菜单完整、宽视口折线从标题右侧起铺 + 菜单居基线上方 + 共线保持,三问题全消。 **第十二轮 + 字体收口(2026-10-14)**:① 裁切窗口左缘 430u→**340u**——线段钻进标题光带尾部 ~90u 营造「从标题延伸出来」的衔接感(仍避开文字带右缘 ≈315u)。② **字体收口盘点全绿**:5 woff2(446 KB)+ 7 份 OFL 证据归档;`font.title`(无界黑)撤销后证据保留(`embedded:false`);三槽各司其职(`--font` 正文 / `--num` 数字 / `--font-topbar` 顶栏小字),16 处消费点零散落;五套断言面全过(check-fonts 门禁+对抗式反证 / check-manifest 31 条 / cross-check-icons / batch2-token-check 10/10(C3 钉住字体槽)/ t01-panel-catalog 4 模式 16 面板);票 06 缺口清单补收口三条。**维护者 2026-10-14 验收通过,票 17 已关闭(`resolved`)**——1280px 复验按规格 13 留待终稿验收统一执行。批次 4 字体接入全流程收口:从授权取证、白名单扩展裁定、子集化、门禁落地到十二轮视觉迭代的全部决策与坑位记录在票 17 与[走查单](walkthrough-17-batch4.md)。 进展备注(批次 2 面板视觉 token,2026-10-13 更新):[票 15](issues/15-exec-batch2-panel-tokens.md) 已认领并实施,**未关闭**(待维护者签收)。实施中并入两路并发会话已落地的成果:批次 1 的字号 +1px 可读性上调(经维护者确认沿用为基准)与批次 4 的 Web 字体槽位。按维护者六项裁定执行:① `--u` 改 1440 设计基准(下限保 1px,1280/1440 视口字号不变);② `--cyan`=#01abea、新增 `--cyan-hi`=#00b8ff;③ 只建有真实消费点的语义 token(`--panel-mid`/`--cyan-hi`/`--text-strong`/`--fs-kpi` 四个,均有断言钉住;`--fs-metric` 因无消费点不提交);④ 面板域全量清退(383 处字面量 + 21 处裸字号归并);⑤ KPI 值 20u。**验收**:专项断言面 `batch2-token-check.mjs` 10/10 全绿、`t01-panel-catalog.mjs` 全绿、用户授权的 1280×720 四模式真机走查通过(截图留存、控制台零报错);`t06-assets.mjs` 4 项失败均为批次 1 遗留欠账(本批顺手修好其 Node 24 JSON import 问题)。事实基线(9 画板全量色板/字号/面板形态机器提取)见 `research/15-batch2-token-baseline.md`;缺口 3 条(字号可读性偏差、面板渐变三停近似、独立大字号保留)已登记[票 06 缺口清单](issues/06-font-and-fallback-policy.md)。**批次 3 前置「token 值定稿」已满足**——`--lv1..lv4` 新值(#ff3b52/#ffb020/#01abea/#27d17a)即位置符号外层母版着色来源。 进展备注(批次 2 维护者第二轮优化,2026-10-13):维护者走查后提出四项面板视觉优化,已全部落地进[票 15](issues/15-exec-batch2-panel-tokens.md):① 左右栏收窄 5%(`--column-w` 347u→330u)、设备详情浮层加宽(340u→380u);② KPI 读数逐项带语义图标(`KPI_ICONS` 按 key 映射批次 1 正式切图,覆盖全部 12 处 `kpiBlock` 调用点);③ 统计图表按维护者选型表丰富——时间趋势改**折线**(`trendBlock` 新增 line 形态,5 处接入)、工单状态分布改**百分比堆叠条**(新增 `stackedBlock`,3 处接入),横向条形/饼图保持既有;④ 滚动条统一为 6u 细条(面板线色、hover 主色)且**严格只竖向滚动**(五个滚动容器 `overflow-x: hidden`,横向滚动条高度 0,裁切防护靠既有 `minmax(0,1fr)` + `overflow-wrap`)。分组柱状图(选型表第 4 行)因现端点无双维分组取数未落,归后续数据票。断言面全绿 + 真机走查通过。 进展备注(批次 2 维护者第三轮优化,2026-10-13):维护者反馈「统计图表用行业语义色区分类别;单色系分不清类别;条形图太多易视觉疲劳」,已落地进[票 15](issues/15-exec-batch2-panel-tokens.md):① tokens.css 新增**行业语义色**四槽(`--industry-gas/water/drainage/manhole`,取自批次 1 行业切图主色实测——红/青/绿/紫,与行业切图、筛选按钮同色源)与**图表分类色**八槽(`--chart-c1..c8`,设计稿高频色);② `barTone()` 三级语义着色规则(行业行→行业色、状态行→lv 语义色、其余→图表色序)接入全部图表块(条形/堆叠/环形),同块同语义多行用 shade 深浅区分;③ 条形图 16→9 处:六个「类别少、占比」场景改**环形图**(新增 `donutBlock`,中心合计+同色图例,行业构成/行业分类/覆盖情况·行业/按事件类型/按行业分布),行业行的全局筛选联动保留(`action:'industry'` 接缝不变);④ `t19` C3 断言随形态同步(16/16 全绿);t20 其余 7 项失败经 stash 基线比对与 HEAD 完全一致(并发/历史欠账)。真机走查:环形图行业色与筛选按钮一一眼可对应。 进展备注(批次 3 位置符号,2026-10-12 实施并**关闭**):[票 16](issues/16-exec-batch3-map-markers.md) 已完成(七轮签收走查迭代,billboard 侧终态:限宽 2.6 倍 + padding 3×3 + 描边全实带 + 内层亮度反转重染 + 输出预下采样;NONE→设备级、未关联设备点选两类镜头联动缺口顺修)。**DOM overlay 已实施并走查通过**(维护者裁定立票,**票落在 `cockpit-real-data-wayfinding` effort 的票 47**——本地图的票 20 关闭留痕,见该 effort map)——`services/markerOverlay.js`:SVG 矢量标记(`--tone` 状态色,永不发糊)+ 真 DOM 标签(圆角底板、青色装饰边、text-overflow、hover title 原生能力)+ 节点池复用 + `postRender` 投影定位(`createCameraEngine.projectPivot`,含画布原点修正)+ DOM 拾取(`data-marker-overlay-*`)+ 失败自动回退 billboard 链路(`syncPointMarkersForPlan` 保留为降级路径);内层直径 60% → **80%**(安全边界核验通过)。合成计划层 `domain/markerPlan.js` 原样复用(归属/几何/锚点/降饱和不换媒介),断言面挂 DOM 节点。遗留(不阻塞):聚合符号与设备特效仍在 billboard 层;overlay 内层 CSS filter 染色为近似(可换 SVG mask 精确染色)。 进展备注(批次 5 装饰/纹理,2026-10 实施并**关闭**):[票 18](issues/18-exec-batch5-decorations.md) 已认领并实施,**维护者确认签收后关闭**。按规格 03 判据三分类处置:① **资源化 1 项**——品牌标题后方光池(蓝湖 D6「光」层 489×128@2x,71 张正式切图中唯一有真实未消费落点的装饰位图)入 manifest `icon.brand.pool`(formal)并经语义 key 注入消费(与批次 4 navDecorStyle 同接缝);② **代码化收口 2 项**——面板四角 data-URI 内联色值改白几何母版 + `mask` 染 `--panel-line-hi`(抓到并修正 `mask-image` 不收层语法的自误)、氛围底/地图画布底裸 hex 收敛到新语义槽 `--bg-1`;③ **维持现状 5 项**——全局网格/地图扫描线/暗角/面板辉光/L 切角为设计稿未覆盖的既有氛围增强,按规格 12 保留并登记。11 个无消费点的装饰候选切图按共识 §1 挪入设计归档 `unconsumed-decor/`(sha256 台账 LEDGER.md),运行时目录零未登记文件。**验收**:批次 5 专项断言面 `batch5-decor-check.mjs` 11/11 全绿;既有面全绿(manifest 56 条 / cross-check 四处一致——顺修 marker.* 六键误报冗余的既有盲区 / batch2 token 10/10 / fonts 门禁 / marker plan 38/38 / t01 结构);`build-manifest.mjs` 新增**跨批防覆盖闸门**(未登记 entries 存在即中止重建,fonts 块被抹同类事故的 entries 版),对抗验证通过——票 37 并发的 21 个 `icon.kpi.*` 条目已被保护。缺口 4 条(全 P3:现状维持项、光池推断消费点、候选无落点、四角收口留痕)已登记[票 06 缺口清单](issues/06-font-and-fallback-policy.md)更新六。走查单见 [批次 5 验收说明](walkthrough-18-batch5.md);`t06-assets` 3 项失败与 `batch2-final-acceptance` 依赖缺失均归因为既有/并发/环境欠账(HEAD 基线取证),非本批引入。**五张执行票(14–18)全部关闭,素材替换实施阶段收口**;下一步为规格 13 的终稿验收(六项报告、双环境分开签收、1280×720 逐面板检查),由维护者择时启动。 ## Decisions so far - [蓝湖访问与正式资源交付包](issues/01-lanhu-access-and-delivery.md) — 已确认登录完成,项目包含 9 个未分组画板;人工可打开画板并正常读取、导出、下载资源,后续可进入逐项资产盘点。 - [蓝湖页面与运行时资产清单](issues/02-lanhu-asset-inventory.md) — 已锁定蓝湖可确认事实与仓库侧全部语义接缝;当前无已确认可直接运行时资源,具体画板/切图/字体/状态图/标注需逐项人工补采,报告见 [研究报告](research/02-lanhu-asset-inventory.md)。 - [正式视觉系统与现有 token 映射](issues/03-visual-system-token-mapping.md) — 已锁定 token 保持稳定、按需新增语义 token、复杂效果才资源化、主画板优先、1280px 纵向滚动和状态推导规则;规格见 [正式视觉系统与现有 token 映射规格](specs/03-visual-token-mapping.md)。 - [运行时资产 manifest 与版本策略](issues/04-runtime-asset-manifest-and-versioning.md) — 已锁定 manifest 唯一入口、`public/cockpit`+BASE_URL、人工版本+内容 hash、原子发布、核心资源回滚、显式 fallback、远程资源登记和分环境诊断;规格见 [运行时资产 manifest 与版本策略规格](specs/04-runtime-asset-manifest-and-versioning.md)。 - [运行时资产 manifest 与版本策略规格](issues/09-runtime-asset-manifest-spec.md) — 已发布 `ready-for-agent` 实现规格,统一资产解析层承载 manifest 校验、版本/hash、原子发布、回滚、fallback、远程白名单和诊断;前置依赖为已关闭的运行时资产策略讨论票。 - [监测点与监测设备位置符号映射](issues/05-point-device-marker-mapping.md) — 已锁定「双层水滴徽标」体系:唯二纯白母版(实心/镂空)承载状态色、内层行业/设备图标降饱和降亮度、尖端锚定、宽度基准 18/14、无设备点位不用内层图标、监测点仅报警态加扩散环;并就地修订三处既有已锁口径;规格见 [监测点与监测设备位置符号规格](issues/10-point-device-marker-spec.md)。 - [监测点与监测设备位置符号规格](issues/10-point-device-marker-spec.md) — 已发布 `ready-for-agent` 实现规格,唯一新接缝为位置符号合成计划层,复用既有状态词表、资产接缝与色值来源;前置依赖为已关闭的位置符号讨论票。 - [字体授权与缺失资源降级](issues/06-font-and-fallback-policy.md) — 已锁定严格开源白名单(思源黑体/思源宋体/Crimson Text)+ 系统回退栈、不引入商用字体、系统字体不得打包、中文字体须子集化且保留回退链;缺口分级仅三类阻断发布;补全了「核心资源组」成员定义;规格见 [字体授权与缺失资源降级规格](issues/11-font-and-fallback-spec.md)。 - [字体授权与缺失资源降级规格](issues/11-font-and-fallback-spec.md) — 已发布 `ready-for-agent` 实现规格,复用既有资产解析层只新增授权门禁与缺口分级;明确代码只能校验许可证据齐全性、不声称判定授权合法性;前置依赖为已关闭的字体授权讨论票。 - [设计稿差异与现有业务结构保护](issues/07-design-diff-and-structure-boundary.md) — 已锁定七类差异判断表(默认归视觉、现状优先、升级必须立票),并列出已有裁决(不得重新打开)区;规格见 [设计稿差异与现有业务结构保护规格](issues/12-design-diff-structure-boundary-spec.md)。 - [设计稿差异与现有业务结构保护规格](issues/12-design-diff-structure-boundary-spec.md) — 已发布 `ready-for-agent` 实现规格,判断表为人工审查契约、不转自动化断言,结构保护由既有断言面承担;前置依赖为已关闭的设计稿差异讨论票。 - [分批替换与终稿验收方案](issues/08-batch-and-final-acceptance.md) — 已锁定 5 批次路线(品牌/图标 → token → 位置符号 → 字体 → 装饰;token 为位置符号前提、装饰最后)、每批进入条件与双轨验收、P0–P3 缺陷分级、双环境分开签收、1280px 视口检查、临时素材逐项关闭清单;并裁定把路线拆成 5 张执行票挂本图;规格见 [分批替换与终稿验收规格](issues/13-batch-acceptance-spec.md)。 - [分批替换与终稿验收规格](issues/13-batch-acceptance-spec.md) — 已发布 `ready-for-agent` 实施规格,定义执行票格式(进入自查 + 验收清单 + 证据区)与终稿验收六项报告;配套 5 张执行票(14–18)已同步发布,为实施阶段入口。 - [蓝湖 9 画板逐项盘点与正式切图交付](issues/19-lanhu-artboard-inventory.md) — 已盘点 9 个画板(全部 1440 宽,命名无语义);**蓝湖侧无正式切图**:设计方只导出 25 个「光」图层,品牌位是渐变文字无 logo、四个功能图标在稿中为纯文字 chip;归档 59 个资产(sha256 索引,含去重留痕)并提取全稿色板、8 族字体与位置符号双层母版矢量;报告见 [盘点报告](research/19-lanhu-artboard-inventory.md)。(注:其后蓝湖升版交付 71 张正式切图,旧结论由该报告的复查附录取代。) - [执行-批次1:品牌/图标替换](issues/14-exec-batch1-brand-icons.md) — **已完成并关闭**。四轮迭代(初版替换 → 运行态缺陷修复 → 维护者全量导入 → 英文名+风格统一+状态图标)后收口:统一资产解析层(可达性+hash 校验+拒绝 HTML 兜底)、manifest 28 条(fonts 块与批次 4 并存)、64 张全英文名运行时图标、面板/行业/状态三套语义映射,面板与状态图标按 Texture/Icon 的 I/Pipe/Q 系列去色染项目调色盘色统一风格;沉淀 **[UI 设计及图标素材使用共识](icon-usage-consensus.md)**——后续图标/切图的引入、替换、改名一律按该文档执行。遗留仅 `icon.blank` 临时占位(票 06 缺口清单)。 - [执行-批次3:地图/设备位置符号替换](issues/16-exec-batch3-map-markers.md) — **已完成并关闭**。位置符号合成计划层 `domain/markerPlan.js`(规格 10 唯一新接缝:母版归属/内层图标几何/宽度基准/尖端锚点/tint 推导/降饱和/标签偏移)+ 白母版逐像素着色合成渲染 + 引擎尖端锚定接入;合成计划断言 36/36、**锚点迁移对抗式验证 7/7**(双向可失败,无假绿);签收走查修复标签重叠与图标放大 50%(27/21);manifest 登记 `marker.master.*`/`marker.inner.*`;宿主读数 `markerMaster/markerInner/markerAnchor/markerDesaturate`。遗留(不阻塞):扩散环帧差证据、内层可辨性正式结论。 - [执行-批次2:面板视觉 token 替换](issues/15-exec-batch2-panel-tokens.md) — 维护者接受最终观感,统一视觉token、状态图例与图表/详情可读性完成;最后离线回归通过,build/debug、专门视口/宿主验收及旧业务/资产闸门失败边界在票内留痕。 - [执行-批次4:字体接入](issues/17-exec-batch4-fonts.md) — **已完成并关闭**。白名单扩为六族(均 OFL、证据归档),子集化 446 KB 插入 `--font`/`--num` 回退链之前;字体授权门禁「无证据不生成 @font-face」+ 五套断言面全绿 + 十二轮视觉迭代(主标题切图定稿 404u、选中底板/光晕/光路语义注入);沉淀三坑(dev manifest 转译缓存、HMR 模块图陈旧、qiankun 注入基址)与「字体请求为 0 必判 FAIL」纪律,见[走查单](walkthrough-17-batch4.md)。 - [执行-批次5:装饰/纹理替换](issues/18-exec-batch5-decorations.md) — **已完成并关闭**(维护者确认签收)。按规格 03 判据三分类:品牌光池资源化(manifest `icon.brand.pool` + 语义注入消费)、面板四角与底色 token 收口(`--bg-1` 新槽、mask 染 `--panel-line-hi`)、5 项设计稿未覆盖氛围增强维持现状;11 个无消费点候选挪归档(sha256 台账);专项断言 11/11、既有面全绿、build 脚本加跨批防覆盖闸门(对抗验证);缺口 4 条全 P3 入票 06,不阻断终稿。**五张执行票全部收口,素材替换实施阶段完成**。 - [执行票:地图标记 DOM overlay 渲染](issues/20-dom-overlay-billboard.md) — 维护者裁定**立错地图**,已迁移至 `cockpit-real-data-wayfinding` effort 的票 47(DOM overlay 属真实数据接线渲染层);本票关闭留痕。 - **终稿验收(规格 13,2026-10-15)** — 真实 `/cockpit` @ 1280×720 四模式走查通过、6 套断言面全绿、字体 5/5 加载、404=0、控制台业务报错=0、P0/P1/P2 为 0、P3 共 11 条已登记、核心资源组全部换正式素材;qiankun 宿主经维护者指示已补做(加载 + 挂载 + **基址注入生效** + cockpit 模块图全 200),宿主内完整走查受既有集成问题阻塞(`runtime.js` 的 `history` 契约不匹配,非本图缺陷)。维护者签收。报告见 [终稿验收报告](final-acceptance-report.md),经验沉淀见 [项目共识与经验留档](CONSENSUS.md)。 ## Not yet specified (当前无:原「蓝湖 9 画板逐项盘点」fog 已毕业为[票 19](issues/19-lanhu-artboard-inventory.md)。) ## Out of scope - 改变四个一级模式、现有二级面板、`mode`/`panelId`、数据契约、地图图层语义、设备状态语义、拾取、定位、聚合或面板联动。 - 设备级或城市级真三维模型生产/采购,DEM、正式影像、倾斜摄影和 3D Tiles 的选型与生产。 - 移动端、竖屏、多屏拼接适配。 - 本图内直接实施代码改造、运行时部署或发布上线;这些是规格收口后的执行工作。