Files
jiapuapp/docs/视觉资产与构建基线.md
T
2026-07-22 17:31:38 +08:00

7.8 KiB
Raw Blame History

视觉资产与构建基线

状态:当前有效
更新日期:2026-07-22
适用范围:正式运行时图片、可重建视觉资产、构建清单、质量报告与 MuMu 视觉验收

一、所有权边界

视觉资产分为两类,不能用同一套字段混写:

  1. 已提交二进制:由业务域运行时清单锁定路径、像素尺寸、透明度、字节数与 SHA-256;它们的 provenance 必须为 committed-binary,且 rebuildable 必须为 false
  2. 可重建资产:由 schema v3 生成清单锁定母版、处理参数、物理输出尺寸和质量阈值;运行时清单只导入它,不复制物理规格。

schema v3 注册入口是 design-pipeline/manifests/runtime-assets.json。任何新增的 runtime-asset-inventoryasset-build-manifest 都必须进入该注册表的导入闭包;未注册 owner、重复资产 id 与重复正式输出都会被拒绝。当前 static/assets 中的每个文件都必须恰好属于一个正式 owner,并至少存在一个真实运行时消费者。

认证直接资产由 design-pipeline/manifests/auth-runtime-assets.json 管理,其余无法重建但仍被产品消费的直接二进制由 design-pipeline/manifests/application-runtime-assets.json 管理。四张共享卷轴、六张长页面背景和 G01 空态边框的生成事实依次只属于 design-pipeline/manifests/shared-scroll-skins-v3.jsondesign-pipeline/manifests/page-backgrounds-v3.jsondesign-pipeline/manifests/g01-state-frame-v3.json

页面、组件、样式、数据映射和工具代码本身是消费者关系的唯一事实源。生成清单不得保存槽位、Vue 组件、选择器、uni-app mode、消费者列表或其他运行时渲染语义;这些规则只能由实际消费者源码及对应合同拥有。

二、schema v3 生成清单

生成清单只允许以下职责:

  • source:仓库内可追溯母版;
  • processing:实际由构建器消费的色键、端帽、调色板等处理参数;
  • outputoutputPixels:正式输出路径和像素尺寸;
  • alphaedgequality:由质量分析器真实执行的透明边、边缘污染、体积和色彩空间约束。

清单、资产及其嵌套对象均拒绝未知字段。不能用近似字段名重新塞入旧合同,也不能声明构建器或质量分析器没有执行的规则。

三、Python 与依赖

Python 依赖由 design-pipeline/requirements.txt 锁定,当前 Pillow 版本为 12.3.0。唯一解释器解析逻辑位于 design-pipeline/scripts/python-runtime.mjs,顺序为:

  1. 显式 PYTHON
  2. design-pipeline/.venv
  3. Windows Python Manager 的真实入口;
  4. 可实际执行的系统命令。

所有 Python 构建和测试都通过统一执行器加入 -B,禁止在源码目录生成 __pycache__.pyc。不透明缩放、居中 cover 裁切与暖金边框提取统一由 design-pipeline/scripts/build_raster_assets.py 实现,Node 入口只负责严格清单校验、解释器编排和质量审计,不再保留 G01、模块背景或 Sharp 专用分支。

四、当前验证命令

design-pipeline/ 目录运行:

npm.cmd test
npm.cmd run validate:shared-scroll-skins
npm.cmd run validate:page-backgrounds
npm.cmd run validate:g01-state-frame
npm.cmd run validate:runtime-assets
npm.cmd run build:shared-scroll-skins
npm.cmd run build:page-backgrounds
npm.cmd run build:g01-state-frame
npm.cmd run verify:shared-scroll-skins

其中 npm.cmd test 同时执行 Node 和 Python 测试。质量报告只允许保存工作区相对路径;同一母版与相同参数连续构建必须产生相同字节哈希和相同报告。

在项目根目录运行:

powershell -ExecutionPolicy Bypass -File tests/runtime-assets-contract.ps1
powershell -ExecutionPolicy Bypass -File tests/retired-asset-removal-contract.ps1
powershell -ExecutionPolicy Bypass -File tests/a01-retired-pipeline-removal-contract.ps1
powershell -ExecutionPolicy Bypass -File tests/a01-no-photoshop-pipeline-contract.ps1
powershell -ExecutionPolicy Bypass -File tests/mumu-visual-acceptance-boundary-contract.ps1
powershell -ExecutionPolicy Bypass -File tests/project-responsive-layout-contract.ps1
powershell -ExecutionPolicy Bypass -File tests/compile-audit.ps1

五、视觉验收

  • 当前只维护用户确认的浅色国风主题;深色与跟随系统延期到后续独立版本,不能在页面内散落未生效的主题入口或覆盖样式。
  • 内部响应式基线为 320×568360×640360×800412×915G01 连续长背景另做 412×1000 压力检查。这些内部尺寸不能替代最终 MuMu 证据。
  • 浏览器截图只可用于逻辑调试,不能作为视觉通过证据。
  • 仓库不再维护自动浏览器截图助手、联系表或截图自证合同;浏览器运行时测试只保留 CDP、DOM、状态、溢出和内容可达性断言,不写入截图。确需临时截图调试时应使用仓库外命令,不能提交为长期证据。
  • 最终视觉复核只能使用用户当前在线的 MuMu 安卓模拟器,不得由代理启动、关闭或调整模拟器。
  • 生成成功和像素质量通过不等于页面视觉通过;相关页面仍需在 MuMu 检查默认、错误、取消、完成和重复进入等实际状态。
  • 不通过压缩字号、行高、控件尺寸或单设备补丁掩盖布局问题。
  • 普通页面、卡片、表单和说明由内容自然撑高;只有弹窗和明确独立滚动区域可以使用视口 max-height 与内部滚动。
  • 九宫格和 border-image-slice 的唯一所有者是 styles/adaptive-frame-profiles.scss;Vue 页面和组件只能消费其公开混入,不能直接重复声明。
  • 响应式扫描范围只属于 tests/responsive-layout-coverage.json,固定尺寸例外只属于 tests/responsive-layout-allowlist.json
  • 安全区、软键盘、约 1.3 倍系统字号、长文本和 Android 返回手势必须在对应页面验证;主要触控目标不小于约 44dp
  • G 系列共享连续家谱背景,T、F、R、N、M 使用各自模块背景;具体消费者、渲染方式和当前视觉数值只由源码及机器合同拥有,本文件不复制尺寸、哈希、透明度或选择器。
  • G 系列背景映射只由 components/GenealogyPageBackground.vue 消费,当前正式运行图是 static/assets/modules/genealogy/opaque/genealogy-page-background-long.pngT、F、R、N、M 的映射只由 components/ModulePageBackground.vue 消费。等比、裁切、贴底和透明度等渲染数值继续由这两个组件拥有。
  • 复杂水墨、品牌装饰和完整视觉面使用正式位图;文字、布局、状态与交互由代码承担。整页截图不得成为运行时资产,可变高度装饰不得绕过共享九宫格所有者。
  • 用户可见示例姓名统一使用“某某某”等通用表达;fixture 和 mock 数据可以保留真实感测试样本,但不能把样本姓名写成产品提示。

六、参考图与正式资产边界

以下两张图片是用户已批准的 A01 选型证据,只用于后续人工视觉复核,标记为 reference-only / non-runtime,不进入运行时注册表,也不能因零代码引用被删除:

  • docs/design/assets/a01-vnext/A01-shared-scroll-skins-with-dialog-approved.png
  • docs/design/assets/a01-vnext/A01-shared-skin-family-option-2-selected.png

G01 的 A/B/C 方向候选、无确定变换的 add-sheet/close 色键源、重复的旗舰 ImageGen 源、旧 static/icons 和未接入业务的 TAC 文件已经退役。正式 add-sheet 与 close 位图作为 committed-binaryapplication-runtime-assets.json 锁定;六张长背景及 G01 空态边框则保留可执行母版和 schema v3 构建链。不得重新引入候选入口、虚构可重建关系或在文档复制正式输出哈希。