视觉审核完成30%
@@ -0,0 +1,72 @@
|
||||
# G01 列表背景候选与换机重建
|
||||
|
||||
> 日期:2026-07-16
|
||||
> 状态:三个母版已生成并通过本机确定性构建;尚未由用户选择,不得接入页面或写成已验收。
|
||||
|
||||
## 1. 为什么重做
|
||||
|
||||
现有 `footer-mountain-bamboo.png` 为 `750×360`,视觉主体集中在底部,上半部留白较大;页面又把它定位到整个内容末尾并使用 `scaleToFill` 拉伸,因此列表变长时山水被推到“添加家谱”下方。用户提出背景应更早出现,并进一步提出 G01 可能只滚动下方列表、上方当前家谱与快捷入口固定。
|
||||
|
||||
滚动结构暂不实施。新背景先作为列表滚动窗口候选资产保存,下一轮选择方向并确认滚动边界后再接入。
|
||||
|
||||
## 2. 稳定输入
|
||||
|
||||
三个母版位于:
|
||||
|
||||
- `docs/design/assets/g01-background/masters/g01-list-background-direction-a-chroma-master.png`
|
||||
- `docs/design/assets/g01-background/masters/g01-list-background-direction-b-chroma-master.png`
|
||||
- `docs/design/assets/g01-background/masters/g01-list-background-direction-c-paper-master.png`
|
||||
|
||||
准确提示词、标题、处理模式、源尺寸和生成输出路径由 `design-pipeline/manifests/g01-background-candidates.json` 单一维护。A/B 使用纯 `#00ff00` 绿幕并提取透明叠加层;C 保留完整暖宣纸底。
|
||||
|
||||
## 3. 跨电脑重建
|
||||
|
||||
要求:Windows、Node.js 22+、npm、Python 3.12+。本机验证环境为 Node `24.15.0`、npm `11.12.1`、Python `3.14.6`、Pillow `12.3.0`。
|
||||
|
||||
在项目根目录执行:
|
||||
|
||||
```powershell
|
||||
python --version
|
||||
node --version
|
||||
npm.cmd --version
|
||||
python -m venv design-pipeline/.venv
|
||||
design-pipeline/.venv/Scripts/python.exe -m pip install --upgrade pip
|
||||
design-pipeline/.venv/Scripts/python.exe -m pip install -r design-pipeline/requirements.txt
|
||||
npm.cmd --prefix design-pipeline run build:g01-background-candidates
|
||||
design-pipeline/.venv/Scripts/python.exe -m unittest design-pipeline/tests/test_build_g01_backgrounds.py -v
|
||||
node --test design-pipeline/tests/g01-background-candidates.test.mjs
|
||||
```
|
||||
|
||||
构建输出进入已忽略目录 `design-pipeline/generated/g01-background/`:
|
||||
|
||||
- `g01-list-background-direction-a.png`
|
||||
- `g01-list-background-direction-b.png`
|
||||
- `g01-list-background-direction-c.png`
|
||||
- `build-report.json`
|
||||
|
||||
Node 入口只使用内置模块做路径与清单编排;图片解码、尺寸检查和像素处理由锁定版本的 Pillow 统一负责,因此 G01 候选构建不依赖已删除的 `node_modules`。项目其他使用 Sharp 的旧流水线仍需执行 `npm.cmd ci --prefix design-pipeline`。
|
||||
|
||||
## 4. 当前质量基线
|
||||
|
||||
本机输出:
|
||||
|
||||
| 候选 | 模式 | 像素 | 字节 | SHA-256 |
|
||||
| --- | --- | ---: | ---: | --- |
|
||||
| A | chroma-key | 1024×1536 | 2,280,297 | `7b8a8abecc651b1bc4c589607780c8ff00ea0f13de018ca4b27a479b2a870fe4` |
|
||||
| B | chroma-key | 1024×1536 | 1,890,556 | `3a0420eaaac9a2821da0f9a2ddbbbd6fb29b463fa6f41be7fa5c23948f782e2a` |
|
||||
| C | opaque-paper | 1024×1536 | 2,407,477 | `f14aeed81046d2d5e7ae78b1e62f572689c38261a2cc043142bef9f70200dc5b` |
|
||||
|
||||
三张输出均满足:可见绿幕残留 0、透明 RGB 0、尺寸错误 0、体积错误 0、sRGB 警告 0。本机连续构建两次的报告与文件 SHA-256 完全一致。若另一台电脑因 Python、Pillow 或压缩实现差异产生不同文件哈希,应先核对锁定依赖,再比较解码后的 RGBA 像素和质量报告,不能只凭压缩字节差异判定视觉失败。
|
||||
|
||||
## 5. 可复现边界
|
||||
|
||||
- 精确可复现:从仓库内保存的母版执行清单、Python 和 Node 流程,得到相同 RGBA 像素处理结果。
|
||||
- 方向可复现但非逐像素:在另一台电脑上使用清单中的提示词重新调用图像模型。
|
||||
- 不可依赖:Codex 本机生成目录、`tmp/`、`node_modules/`、`.venv/`、`generated/` 或未进入仓库的聊天图片。
|
||||
|
||||
## 6. 下一步
|
||||
|
||||
1. 用户比较 A/B/C 后选择一个方向,或提出组合要求。
|
||||
2. 选择后只保留一个正式母版合同,创建版本化 `static/assets/` 运行输出。
|
||||
3. 再讨论并实现:标题栏、当前家谱大卡片和快捷入口固定;从“我创建的”开始独立滚动;背景固定在列表滚动窗口背后。
|
||||
4. 完成 320×568、360×640、360×800、412×915 H5 截图和 Android/HBuilderX 复核。
|
||||
@@ -1,6 +1,6 @@
|
||||
# P00 页面结构与资产清单
|
||||
|
||||
> 状态:54 条最终编号路由已落地;A01/A02/A04/A05/A06/G01 两种状态与 G03 `create|ancestor` 已验收;其余 47 条路由均已有 `[~]` 视觉候选和真实运行截图,等待用户逐页审核。
|
||||
> 状态覆盖:当前实际为 52 条活动路由、52 页全部 `[~]` 待审核、0 页冻结;A06 已封存且保留实现。页面状态以 `docs/交接记录.md` 与 `docs/验收规划.md` 为准。
|
||||
> 目的:让页面、路由和资产都有唯一、可读、可审计的归属;本文件是 P-00 的执行清单。
|
||||
|
||||
## 1. 页面命名规则
|
||||
@@ -20,7 +20,10 @@
|
||||
|
||||
| 当前路由 | 当前可确认用途 | 目标文件 | 处理状态 |
|
||||
| --- | --- | --- | --- |
|
||||
| `pages/auth/a01-entry` | A01 启动/登录引导 | `pages/auth/a01-entry.vue` | 已迁移;视觉冻结;完整按钮资产待补 |
|
||||
| `pages/auth/a01-entry` | A01 启动/登录引导 | `pages/auth/a01-entry.vue` | 7 类非滑动验证视觉状态已获用户确认;真实滑动验证用接口组件自带样式,待接入审核;Android 复核前保持 `[~]` |
|
||||
| `pages/auth/a04-register` | A04 注册账号 | `pages/auth/a04-register.vue` | 当前 8 类 H5 视觉状态已获用户确认;真实滑动验证、接口结果态与 Android/HBuilderX 待审核;保持 `[~]` |
|
||||
| `pages/auth/a05-reset-password` | A05 重置密码 | `pages/auth/a05-reset-password.vue` | 当前 7 类 H5 视觉状态已获用户确认;接口回流手机号/焦点、真实滑动验证与 Android/HBuilderX 待审核;保持 `[~]` |
|
||||
| (已从 `pages.json` 移除) | A06 登录阻断状态(封存) | `pages/auth/a06-auth-status.vue` | 用户确认当前样式没有问题,但当前流程暂时不用;源码、测试和证据保留,不计入活动验收统计,恢复时重新接入真实入口并审核 |
|
||||
| `pages/auth/a02-login` | A02 账号登录 | `pages/auth/a02-login.vue` | 已迁移;已验收,视觉冻结 |
|
||||
| `pages/genealogy/g01-my-genealogies` | G01 我的家谱 | `pages/genealogy/g01-my-genealogies.vue` | 已迁移;视觉冻结 |
|
||||
| `pages/genealogy/g03-create-genealogy` | G03 创建家谱/始祖录入 | `pages/genealogy/g03-create-genealogy.vue` | `step=create|ancestor`;已获用户验收,视觉冻结 |
|
||||
@@ -83,7 +86,7 @@ static/assets/
|
||||
transparent/
|
||||
```
|
||||
|
||||
当前已迁入的资产以第 4 节台账为准。A01 已使用 `a01-primary-button.png`、`a01-secondary-button.png` 两张完整按钮皮肤替换旧角标拼接实现;是否维持用户验收效果仍以运行时截图回归为准。
|
||||
当前已迁入的资产以第 4 节台账为准。A01 已引用版本化的卷轴祥云四件套 v3:主/次按钮与弹窗使用 `aspectFit`,Toast 使用固定切片的 `border-image`;文字和交互由代码承载。旧资产与 v2 试点资产保留,不覆盖、不删除。v3 已通过本机自动质量门和 H5 四尺寸检查,但尚未获得 Android 与用户验收。
|
||||
|
||||
## 4. 当前资产台账
|
||||
|
||||
@@ -98,11 +101,17 @@ static/assets/
|
||||
| `foundation/transparent/auth-ink-scenery.png` | transparent / 750×1334 | 认证页淡墨叠层 | A01、A02、A04、A05、A06 | 保留 |
|
||||
| `foundation/transparent/auth-title-cloud.png` | transparent / 200×120 | 认证标题右侧云纹 | A01、A02、A04、A05、A06 | 保留 |
|
||||
| `foundation/transparent/auth-divider-knot.png` | transparent / 160×96 | 认证标题与正文结饰 | A01、A04、A05、A06 | 保留 |
|
||||
| `foundation/opaque/a01-primary-button.png` | opaque / 1877×418 | A01 朱砂主按钮完整皮肤 | A01、A02、A04、A05、A06 | 保留;A01、A02、A04、A05、A06 已验收 |
|
||||
| `foundation/opaque/a01-secondary-button.png` | opaque / 1881×419 | A01 宣纸次按钮完整皮肤 | A01 | 保留;待运行截图回归 |
|
||||
| `modules/auth/opaque/a02-login-panel.png` | opaque / 940×1672 | 认证完整卷轴面板,含纸纹、双金线、角纹、云纹与底部山水 | A02、A04、A05、A06 | 保留;A02、A04、A05、A06 已验收 |
|
||||
| `modules/auth/transparent/a02-agreement-unchecked.png` | transparent / 96×96 | 认证未同意协议图标 | A02、A04 协议确认行,叠在卷轴面板上 | 保留;A02、A04 已验收 |
|
||||
| `modules/auth/transparent/a02-agreement-checked.png` | transparent / 96×96 | 认证已同意协议图标 | A02、A04 协议确认行,叠在卷轴面板上 | 保留;A02、A04 已验收 |
|
||||
| `foundation/opaque/a01-primary-button.png` | opaque / 1877×418 | 旧朱砂主按钮皮肤 | 其他仍实际引用的模块页面 | 暂时保留;A01、A04、A05、A06 已停止引用,其他页面需逐页迁移 |
|
||||
| `foundation/opaque/a01-secondary-button.png` | opaque / 1881×419 | 旧宣纸次按钮皮肤 | 其他仍实际引用的页面 | 暂时保留;A01 可见按钮和 Toast 已停止引用,其他页面未逐页迁移 |
|
||||
| `foundation/transparent/a01-primary-button-v2.png` | transparent / 1866×276 | A01 固定槽位主按钮历史试点 | 当前 A01 已停止引用 | 保留,不覆盖、不删除 |
|
||||
| `foundation/transparent/a01-secondary-button-v2.png` | transparent / 1866×300 | A01 固定槽位次按钮历史试点 | 当前 A01 已停止引用 | 保留,不覆盖、不删除 |
|
||||
| `foundation/transparent/a01-scroll-primary-v3.png` | transparent / 1866×276 | 卷轴祥云朱砂主按钮皮肤 | A01 登录、A04 注册、A05 重设、A06 恢复入口及弹层按钮 | A01/A04/A05 当前 H5 状态已获用户确认;A06 待逐态审核;均待 Android 复核 |
|
||||
| `foundation/transparent/a01-scroll-secondary-v3.png` | transparent / 1866×300 | 卷轴祥云宣纸次按钮皮肤 | A01 微信按钮 | 用户 H5 视觉审核通过;待 Android 复核 |
|
||||
| `foundation/transparent/a01-scroll-toast-v3.png` | transparent / 1770×246 | 卷轴祥云 Toast 可切片表面 | A01、A04、A05 自定义反馈 Toast | A01/A04 用户 H5 审核通过;A05 待逐态审核;均待 Android 复核 |
|
||||
| `modules/auth/transparent/a01-scroll-dialog-v3.png` | transparent indexed PNG / 1860×1560 | 卷轴祥云对话容器 | A01 历史验证占位、A05 成功结果、A06 恢复说明 | A01 不得用于最终滑动验证;A05/A06 仅用于本地结果或说明候选 |
|
||||
| `modules/auth/opaque/a02-login-panel.png` | opaque / 940×1672 | 旧认证完整卷轴面板 | 当前认证页无引用 | 历史保留,不覆盖、不删除 |
|
||||
| `modules/auth/transparent/a02-agreement-unchecked.png` | transparent / 96×96 | 认证未同意协议图标 | A01、A04 协议确认行 | 保留;A01/A04 用户 H5 审核通过 |
|
||||
| `modules/auth/transparent/a02-agreement-checked.png` | transparent / 96×96 | 认证已同意协议图标 | A01、A04 协议确认行 | 保留;A01/A04 用户 H5 审核通过 |
|
||||
| `foundation/transparent/auth-login-outline.png` | transparent / 96×96 | 登录/状态图标 | A01、A06 | 保留 |
|
||||
| `foundation/transparent/auth-wechat.png` | transparent / 96×96 | 微信图标 | A01 | 保留 |
|
||||
| `foundation/transparent/brand-seal.png` | transparent / 240×288 | 品牌谱印 | A01、A02、A04、A05、A06、G06、`PageHeader` | 保留 |
|
||||
@@ -110,6 +119,9 @@ static/assets/
|
||||
| `foundation/transparent/footer-mountain-bamboo.png` | transparent / 750×360 | 根页底部山水竹影 | G01、G06 | 保留 |
|
||||
| `foundation/transparent/notice.png` | transparent / 96×96 | 通知图标 | `PageHeader` | 保留 |
|
||||
| `foundation/transparent/chevron-right.png` | transparent / 96×96 | 返回与列表箭头 | A02、A04、A05、A06、`GenealogyCard` | 保留 |
|
||||
| `docs/design/assets/g01-background/masters/g01-list-background-direction-a-chroma-master.png` | candidate master / 1024×1536 | G01 列表背景 A,绿幕透明候选 | G01 待选 | 母版保留;未接入页面 |
|
||||
| `docs/design/assets/g01-background/masters/g01-list-background-direction-b-chroma-master.png` | candidate master / 1024×1536 | G01 列表背景 B,绿幕透明候选 | G01 待选 | 母版保留;未接入页面 |
|
||||
| `docs/design/assets/g01-background/masters/g01-list-background-direction-c-paper-master.png` | candidate master / 1024×1536 | G01 列表背景 C,完整宣纸候选 | G01 待选 | 母版保留;未接入页面 |
|
||||
| `modules/genealogy/opaque/g01-empty-panel.png` | opaque / 1122×1402 | 无家谱空态完整宣纸卡,双金线、角饰、云纹与下沿山水 | G01 `state=empty` | 保留;由 ImageGen 生成,已获用户验收 |
|
||||
| `modules/genealogy/opaque/g03-create-flow-panel.png` | opaque / 1122×1500 | 完整宣纸任务面板,双金线、回纹角饰、云纹与下沿淡墨山水 | G03、G08、G11、G12、T01、T03 至 T06、T08、F/R/N/M 表单/详情/设置/状态 | 保留;由 ImageGen 生成,G03 已获用户验收,复用页待审 |
|
||||
| `modules/genealogy/opaque/g05-overview-surface.png` | opaque / 1122×1506 | 家谱总览完整视觉表面,含墨蓝谱名区、四宫格宣纸槽、金线近况分隔与底部访问说明面 | G05 `loading|ready|empty|error` | 保留;由 ImageGen 参考 G05 改前截图生成,页面只叠放真实文字和点击层;待集中审美确认 |
|
||||
@@ -142,14 +154,19 @@ static/assets/
|
||||
|
||||
本轮已迁入 38 项在用资产,删除 24 项运行时零引用的旧副本。A01 的两张完整按钮皮肤与 G06 检索资产均由图像生成工具制作,不是设计图裁切;G06 不再使用大型检索面板,当前使用朱砂题签、宽版输入框与搜索按钮三张独立位图,页面只叠放真实品牌印、文字与交互控件。旧版设计记录中的历史路径不再是资产依据;后续只按本台账引用和维护。
|
||||
|
||||
## 5. 图片属性规则
|
||||
## 5. 混合资产属性规则
|
||||
|
||||
完整生产、质量门和换机恢复方法以 `docs/design/设计资产生产流水线规范.md` 为准。P00 只登记最终资产归属,不重复维护算法和阈值。
|
||||
|
||||
| 类型 | 文件格式与内容 | 典型用途 | 页面使用规则 |
|
||||
| --- | --- | --- | --- |
|
||||
| 不透明底图 | JPG 或无透明区域 PNG;包含完整底色、纹理、边框和四角 | 页面纸纹、朱砂页头、完整主/次按钮、卡片、导航 | 直接作为对应区域的完整视觉面,不再靠 CSS 补色或叠加边角 |
|
||||
| 透明叠加图 | RGBA PNG;四周透明,主体边界干净 | Logo、图标、祥云、谱印、分隔纹、边框 | 明确记录叠在何种不透明底图上;不单独承担底色 |
|
||||
| 代码原生 | Vue/SCSS,不产生图片 | 布局、文字、间距、普通分隔线、纯色和交互状态 | 不伪造复杂品牌装饰;普通内容保持正常布局流 |
|
||||
| 固定比例位图 | JPG、PNG 或 WebP;比例与槽位一致 | 宗祠、水墨背景、固定比例复杂视觉面 | manifest 声明槽位和 `uniform-only`;禁止变形拉伸 |
|
||||
| 透明叠加图 | RGBA PNG/WebP;外缘透明、主体边界干净 | Logo、图标、祥云、谱印、分隔纹 | manifest 声明 Alpha 与边缘策略;禁止白边、绿边 |
|
||||
| 可伸缩装饰框 | 九宫格或经过验证的等价组件资产 | 多宽度按钮框、卡片框、弹窗框 | 必须先验证 H5 与 Android;四角和边线不得被整体拉伸 |
|
||||
| 平铺纹理 | 可无缝重复的小图 | 宣纸、无方向纹理 | manifest 明确平铺/覆盖策略,不承担文字或边框 |
|
||||
|
||||
禁止项:整页截图、设计图局部裁切、半边边框、按钮角标拼接、CSS/SVG 绘制可见装饰、同一语义的多版本长期共存。
|
||||
禁止项:整页截图、设计图局部页面裁切、半边边框、按钮角标拼接、临时 CSS/SVG 伪造复杂品牌装饰、未声明的 `scaleToFill`/`fit: 'fill'`、同一语义的多版本长期共存。
|
||||
|
||||
## 6. 资产清理登记规则
|
||||
|
||||
|
||||
|
After Width: | Height: | Size: 2.0 MiB |
|
After Width: | Height: | Size: 1.9 MiB |
|
After Width: | Height: | Size: 1.9 MiB |
|
After Width: | Height: | Size: 1.9 MiB |
|
After Width: | Height: | Size: 1.3 MiB |
|
After Width: | Height: | Size: 1.4 MiB |
|
After Width: | Height: | Size: 1.2 MiB |
|
After Width: | Height: | Size: 2.3 MiB |
|
After Width: | Height: | Size: 2.0 MiB |
|
After Width: | Height: | Size: 2.3 MiB |
|
Before Width: | Height: | Size: 1.7 MiB |
|
Before Width: | Height: | Size: 1.7 MiB |
@@ -0,0 +1,28 @@
|
||||
# 上传前文件清理审计(2026-07-16)
|
||||
|
||||
## 审计边界
|
||||
|
||||
- 只检查仓库长期交接截图、未跟踪二进制资产和已忽略的本地生成目录。
|
||||
- 不清理 `tmp/`、`runtime/`、测试、脚本、候选母版或用户已有修改。
|
||||
- 不修改仓库截图体积阈值,不执行任何 Git 暂存、提交、推送、重置或检出操作。
|
||||
|
||||
## 本轮已清理
|
||||
|
||||
以下两张旧 A01 全页截图没有被任何文档、索引、清单、代码或测试引用;逐张查看后确认其视觉方案已被 2026-07-16 的 A01 当前代表图和状态联系表替代,因此删除:
|
||||
|
||||
- `docs/design/screens/handoff/2026-07-15/A01-selected-password-brand-seal-841x1870.png`(1,805,168 字节)
|
||||
- `docs/design/screens/handoff/2026-07-15/A01-selected-sms-brand-seal-841x1870.png`(1,785,574 字节)
|
||||
|
||||
合计减少 3,590,742 字节。没有删除其他历史 handoff 证据。
|
||||
|
||||
## 保留结论
|
||||
|
||||
- `docs/design/assets/g01-background/masters/` 下三张 G01 背景母版均被候选清单和换机重建文档引用,必须保留。
|
||||
- 当前其他未跟踪二进制资产均有文档、清单、代码或测试引用,不按“未跟踪”直接删除。
|
||||
- `design-pipeline/generated/`、`design-pipeline/.venv/`、`docs/design/screens/runtime/`、`tmp/` 等目录处于 Git 忽略状态,不会进入正常提交;本轮不做破坏性本地清理。
|
||||
|
||||
## 仍未解决的仓库合同
|
||||
|
||||
清理后,`docs/design/screens/handoff/` 仍有 50 个文件、29,887,097 字节,继续超过 35 个文件/20MB 的交接截图合同。剩余文件存在有效引用或属于长期证据,不能为了让测试变绿而擅自删除;后续仍需用户决定归档策略。
|
||||
|
||||
`tests/repository-handoff-size-contract.ps1` 还会把已忽略的 runtime 截图统计在内,因此必须同时如实报告脚本结果与 handoff 专项目录结果,不能放宽阈值掩盖问题。
|
||||
@@ -1,30 +1,31 @@
|
||||
# 家谱 APP 视觉设计交接手册
|
||||
|
||||
> **2026-07-15 状态覆盖说明:** 本手册中的截图方法、资产规则和验证流程继续有效;“54 条路由、7 页已验收/冻结”的旧状态不再有效。当前为 53 条最终路由、53 页全部重新待审核、0 页冻结,正在返工 A01。接管时先读 `docs/交接记录.md` 与 `docs/验收规划.md`。
|
||||
> **2026-07-16 状态覆盖说明:** 本手册中的截图方法、资产规则和验证流程继续有效;旧路由与验收数字不再有效。当前为 52 条活动路由、52 页全部 `[~]` 待审核、0 页冻结;A06 已从路由与活动验收队列封存但保留实现。接管时先读 `docs/交接记录.md` 与 `docs/验收规划.md`。
|
||||
|
||||
> 更新日期:2026-07-14
|
||||
> 用途:在新电脑或交给新的 GPT 后,按本手册恢复当前工作;它只记录已发生的事实,不把待验收写成已完成。
|
||||
|
||||
## 0. 给新 GPT 的可直接执行指令
|
||||
|
||||
你接手的是一个 **uni-app Android 家谱项目的高质量视觉设计任务**,全程中文工作;它不是只改 CSS 的任务。先不修改代码,完整阅读:`AGENTS.md`、`docs/交接记录.md`、本手册、`docs/规划.md`、`docs/design/D1_安卓视觉规范与页面壳.md`、`docs/design/P00_页面结构与资产清单.md`、`docs/superpowers/plans/2026-07-13-product-design-visual-refinement.md`、`design-qa.md`。随后只向用户简洁复述当前停点和准备如何处理反馈。
|
||||
你接手的是一个 **uni-app Android 家谱项目的高质量视觉设计任务**,全程中文工作;它不是只改 CSS 的任务。先不修改代码,完整阅读:`AGENTS.md`、`docs/交接记录.md`、本手册、`docs/规划.md`、`docs/design/D1_安卓视觉规范与页面壳.md`、`docs/design/P00_页面结构与资产清单.md`、`docs/design/设计资产生产流水线规范.md`、`docs/superpowers/plans/2026-07-13-product-design-visual-refinement.md`、`design-qa.md`。随后只向用户简洁复述当前停点和准备如何处理反馈。
|
||||
|
||||
必须保留已有未提交改动;不使用 worktree 或多代理;不执行 `git add`、`git commit`、`git push`、上传、`git reset` 或 `git checkout`。A01、A02、A04、A05、A06、G01、G03 的可见效果已获用户验收并冻结,不能以重构或顺手优化的名义改变。G07 是 G06 的页面内状态,不得重新建为独立页。
|
||||
必须保留已有未提交改动;不使用 worktree;不执行 `git add`、`git commit`、`git push`、上传、`git reset` 或 `git checkout`。旧阶段的 A01、A02、A04、A05、A06、G01、G03 验收/冻结记录只作历史证据;本轮 52 个活动页面全部重新待审核。A06 已封存,G07 是 G06 的页面内状态,不得重新建为独立页。
|
||||
|
||||
用户已授权先完成全部页面候选、后集中审核。54 条最终路由均已覆盖:7 个已验收冻结,其余 47 个统一标 `[~]`;不得把候选写成用户已验收。下一阶段由用户按规划逐页勾选,接口只作功能布局参考,本轮没有对接。
|
||||
当前实际为 52 条活动路由,52 页全部标 `[~]`,0 页冻结;已有 14 个活动页面内部 H5 候选,A06 候选另行封存,均不得写成用户已正式验收。用户下一活动审核页是 G01;无人审核时下一施工页是 T07。接口只作功能布局参考,本轮没有对接。
|
||||
|
||||
新环境必须可用并实际调用:`product-design:index`、`product-design:audit`、`imagegen`、`superpowers:test-driven-development`、`superpowers:systematic-debugging`、`superpowers:verification-before-completion`。没有这些能力时,先安装/启用同等能力,不得假装已经完成设计审视或位图生成。
|
||||
|
||||
## 1. 当前停点:先看这一节
|
||||
|
||||
项目已有 54 条最终编号路由;T02 已收敛到 T01 同页状态。这不等于 54 个页面已完成视觉验收。
|
||||
项目实际有 52 条活动路由;A02 已合并进 A01,A06 已封存,T02 已合并进 T01且遗留占位文件已删除。`docs/验收规划.md` 中 52 个活动页面全部为 `[~]`,0 页已验收,0 页冻结。
|
||||
|
||||
- 用户已经验收的视觉基准有七个:**A01 启动/登录引导**、**A02 账号登录**、**A04 注册账号**、**A05 重置密码**、**A06 登录状态**、**G01 我的家谱**、**G03 创建家谱**。它们的可见效果已冻结。
|
||||
- **A02 账号登录**已经完成资产化重做、功能回归和多尺寸截图,并于 2026-07-14 获用户审美验收。A03 已删除;A02 的短信 Tab 是唯一手机号验证码登录入口。A04、A05、A06 均于同日完成独立重做并获用户审美验收;G02 已按用户确认合并为 G01 的 `?state=empty`;G04 已合并为 G03 的 `?step=ancestor`;G07 已合并为 G06 的初始/结果/无结果状态。G06 三态候选截图和内部审视已经完成,但尚未获得用户视觉验收。
|
||||
- G05、G06、G08–G12、T01、T03–T08、F01–F10、R01–R11、N01–N02、M01–M10 已完成候选截图和审视;共享 `ModulePage.vue` 已升级为全位图高规格母版,不再是旧 CSS 过渡壳。
|
||||
- 已有 14 个活动页面内部 H5 候选:A01、A04、A05、G01、G03、G05、G06、G08、G09、G10、G11、G12、T01、T04。A06 的 H5 候选、源码、测试和证据已封存保留。
|
||||
- 这些候选、内部 smoke、GPT 审视和旧 QA 都不等于用户正式验收。
|
||||
- 用户下一活动审核页是 G01;无人审核时下一施工页是 T07 成员目录。
|
||||
- 基础版本只做浅色国风主题;深色和跟随系统延期。
|
||||
- 不提交、不推送、不上传 Git;由用户自行处理版本库操作。
|
||||
|
||||
下一位执行者先读取当前停点与已验收页面,然后按 `docs/规划.md` 的 `[~]` 清单协助用户逐页审核。默认只从 `docs/design/视觉证据索引.md` 打开一张代表图或一张状态联系表;多尺寸、before/after 与历史废稿仅在发现问题时展开。旧 `G06-no-panel-*` 图只能帮助理解迭代原因,不能用于当前验收。全部 47 个候选都等待用户逐页确认,不再按模块批量推进新页面。
|
||||
下一位执行者先读 `docs/交接记录.md` 和 `docs/验收规划.md`,再按 `[~]` 清单协助用户逐页审核。默认只打开一张代表图或一张复杂状态联系表;多尺寸、before/after 与历史废稿仅在发现问题时展开。
|
||||
|
||||
## 1.1 迁移前必须保留的文件
|
||||
|
||||
@@ -40,6 +41,7 @@
|
||||
| `docs/规划.md` | 54 条独立路由的范围、模块顺序和“完成”的定义。 |
|
||||
| `docs/design/D1_安卓视觉规范与页面壳.md` | Android 页面、资产、布局与中文注释的硬约束。 |
|
||||
| `docs/design/P00_页面结构与资产清单.md` | 路由、页面文件和资产台账的唯一清单。 |
|
||||
| `docs/design/设计资产生产流水线规范.md` | 混合代码/位图落地、manifest、Node/Sharp/Python 分工、质量门和跨电脑恢复合同。 |
|
||||
| `docs/superpowers/plans/2026-07-13-product-design-visual-refinement.md` | 已批准的分模块视觉精修计划和验收顺序。 |
|
||||
| `docs/design/2026-07-13-A01-G01-A02-视觉审视.md` | A01/G01 视觉证据与旧 A02 的问题定位。 |
|
||||
| `docs/design/A02_账号登录_设计记录.md` | A02 当前实现、资产、截图和测试记录。 |
|
||||
@@ -59,14 +61,16 @@
|
||||
|
||||
必须遵守:
|
||||
|
||||
1. 完整按钮、卡片、标题签、页面头图和有边框的装饰面,使用完整的**不透明位图资产**承载底色、纹理和边框。
|
||||
2. 透明 PNG 仅承担 Logo、图标、祥云、纹样等叠加元素;CSS 只承担布局、文字、状态与交互,不能伪造完整框、祥云、按钮或卡片。
|
||||
1. 最新生产方法以 `docs/design/设计资产生产流水线规范.md` 为准:代码承担布局、文字、间距、状态和普通结构;复杂水墨、品牌装饰和代码无法忠实表达的视觉使用真实位图。
|
||||
2. 固定比例完整位图、透明叠加资产和经 H5/Android 验证的九宫格必须在 manifest 中声明真实槽位、缩放和 Alpha 策略;不得默认使用 `scaleToFill` 或 Sharp `fit: 'fill'` 掩盖比例错误。
|
||||
3. 不能把整张设计截图或局部截图裁进运行页面;运行资产必须是可复用的独立元素。
|
||||
4. 不要修改 A01/G01 已验收的可见布局、比例、配色或装饰。可读其实现和资产,但不能借“整理”改变效果。
|
||||
4. A01/G01 历史证据仍是品牌观察真源,但不等于本轮已验收或冻结;当前状态以 `docs/交接记录.md` 与 `docs/验收规划.md` 为准。
|
||||
5. 不要用一个通用卡片母版覆盖所有模块。家谱、世系树、内容档案、人物记录、通知和设置必须在同一视觉语言下有各自的信息密度与层级。
|
||||
|
||||
## 4. A02 的精确状态
|
||||
|
||||
> 本节是 2026-07-14 的历史实现记录,不是当前路由或验收状态。当前 A02 已删除并合入 A01,本轮不得恢复 A02 路由;最新状态以 `docs/交接记录.md` 为准。
|
||||
|
||||
### 实现内容
|
||||
|
||||
- 路由与页面:`pages/auth/a02-login.vue`
|
||||
@@ -124,7 +128,9 @@ node scripts/capture-chrome-page.js `
|
||||
|
||||
## 6. 后续执行顺序与每轮产物
|
||||
|
||||
### 门禁 0:A02 与 A04 已通过
|
||||
### 历史门禁记录(本轮已失效)
|
||||
|
||||
以下内容只解释旧阶段为何保留某些资产,不得据此把任何页面写成当前已验收或冻结。
|
||||
|
||||
1. A02 与 A04 均已通过;不因后续页面改动而触碰其可见效果。
|
||||
2. 若用户提出明确调整:只在对应页面修正,先调整对应契约测试,再改页面/资产,重新截图复核。
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
- A01 当前密码/短信登录联系表(待审核,不代表通过):[824×915 真实运行代表图](screens/handoff/2026-07-16/A01-current-password-sms-contact-824x915.png)
|
||||
- A04 当前注册页(待审核,不代表通过):[412×915 真实运行代表图](screens/handoff/2026-07-16/A04-current-register-412x915.png)
|
||||
- A05 当前重设密码页(待审核,不代表通过):[412×915 真实运行代表图](screens/handoff/2026-07-16/A05-current-reset-412x915.png)
|
||||
- A06 当前风险限制页(待审核,不代表通过):[412×915 真实运行代表图](screens/handoff/2026-07-16/A06-current-risk-412x915.png)
|
||||
- A06 封存前风险限制页(样式无异议但不代表完整验收):[412×915 真实运行代表图](screens/handoff/2026-07-16/A06-current-risk-412x915.png)
|
||||
- G01 当前默认/空态联系表(待审核,不代表通过):[720×800 真实运行联系表](screens/handoff/2026-07-16/G01-current-default-empty-contact-720x800.png)
|
||||
- G06 当前搜索初始/结果/邀请码联系表(待审核,不代表通过):[1080×800 真实运行联系表](screens/handoff/2026-07-16/G06-current-initial-results-invite-contact-1080x800.png)
|
||||
- G08 当前搜索申请/邀请码直加联系表(待审核,不代表通过):[720×800 真实运行联系表](screens/handoff/2026-07-16/G08-current-search-invite-contact-720x800.png)
|
||||
@@ -17,7 +17,7 @@
|
||||
- G12 当前字辈列表/编辑联系表(待审核,不代表通过):[720×800 真实运行联系表](screens/handoff/2026-07-16/G12-current-list-edit-contact-720x800.png)
|
||||
- T01 当前世系树/空态联系表(待审核,不代表通过):[720×800 真实运行联系表](screens/handoff/2026-07-16/T01-current-tree-empty-contact-720x800.png)
|
||||
- T04 当前新增亲属表单/成功态联系表(待审核,不代表通过):[720×800 真实运行联系表](screens/handoff/2026-07-16/T04-current-form-success-contact-720x800.png)
|
||||
- 当前实际为 53 页全部重新待审核;下方旧“已验收”图片只作为历史视觉基础,不计入本轮完成状态。
|
||||
- 当前实际为 52 个活动页面全部 `[~]` 待审核;A06 证据封存保留,不计入活动验收统计。下方旧“已验收”图片只作为历史视觉基础,不计入本轮完成状态。
|
||||
|
||||
> 本仓库只保留低负担交接证据:每页一张代表图,复杂模块使用联系表。完整 before/after、多尺寸、历史废稿和全部运行截图保存在项目外本地归档,不进入 Git。
|
||||
|
||||
|
||||
@@ -0,0 +1,374 @@
|
||||
# 家谱 APP 设计资产生产流水线规范
|
||||
|
||||
> 状态:已批准并完成 A01 卷轴祥云四件套 v3 的本机 H5 试点;仍待 Android/HBuilderX、跨电脑复现和用户正式验收。
|
||||
> 更新日期:2026-07-16。
|
||||
> 适用范围:本项目后续页面重设计、独立视觉资产生产、跨电脑恢复与质量审计。
|
||||
> 当前边界:manifest v2、Python/Pillow 质量门和 A01 主按钮、次按钮、Toast、验证弹窗四张 v3 资产已经落地并通过本机 H5 四尺寸检查;这不代表 Android 已复核、用户已验收或流水线可以推广到其他页面。
|
||||
|
||||
## 1. 目标
|
||||
|
||||
本项目采用“混合落地”方式,不把所有视觉都做成整张位图,也不把复杂国风装饰退化为临时 CSS 或手绘 SVG。
|
||||
|
||||
目标是:
|
||||
|
||||
1. 设计稿中的布局、文字、间距、状态和普通结构由 Vue/SCSS 负责。
|
||||
2. 复杂水墨、宗祠、品牌印、专用图标和难以代码复现的装饰由真实位图资产负责。
|
||||
3. 可复用且需要伸缩的装饰框优先进入经过 Android/H5 验证的九宫格或组件化资产方案。
|
||||
4. Node.js、Sharp 与 Python 读取同一份 JSON manifest,禁止在脚本、页面和文档中重复维护尺寸规则。
|
||||
5. 自动化负责消除机械错误;真实运行截图和用户逐页审核仍是最终视觉判断来源。
|
||||
|
||||
流水线不能保证任意扁平设计图自动拆成一比一资产。要获得稳定质量,页面设计阶段必须同时明确组件边界、目标槽位、伸缩策略和独立资产任务。
|
||||
|
||||
## 2. 已有雏形与升级原则
|
||||
|
||||
仓库现有可复现雏形:
|
||||
|
||||
- `design-pipeline/package.json`
|
||||
- `design-pipeline/package-lock.json`
|
||||
- `design-pipeline/manifests/a01.json`
|
||||
- `design-pipeline/scripts/build-a01.mjs`
|
||||
- `tests/a01-code-pipeline-contract.ps1`
|
||||
|
||||
原 schema v1 雏形已经具备 Node.js、Sharp、JSON 清单、路径约束、尺寸/Alpha/体积检查和 A01 预览组合能力,但单独使用时仍不是合格的资产生产线,原因包括:
|
||||
|
||||
- 对所有资产统一使用 `fit: 'fill'`,不能阻止比例拉伸。
|
||||
- manifest 只记录文件像素,不记录页面真实槽位和允许的缩放策略。
|
||||
- 没有检查白边、绿边、半透明脏边、预乘 Alpha、色彩空间和边缘污染。
|
||||
- 代码预览不是 uni-app 真实运行截图。
|
||||
- `source === output` 主要保证换机可验证,不能替代新资产的生产与质量处理。
|
||||
|
||||
升级时保留已有目录、Node/Sharp 依赖和清单入口,不另建一条互相冲突的流水线。新合同升级为 manifest v2;A01 试点通过前不得批量迁移其他页面。
|
||||
|
||||
2026-07-16 已实现的 v2 试点包括:
|
||||
|
||||
- `design-pipeline/manifests/a01-buttons-v2.json`:尺寸、槽位、缩放、透明边、质量阈值和消费者的单一机器合同。
|
||||
- `design-pipeline/scripts/rebuild-a01-buttons.mjs` 与 `rebuild_a01_buttons.py`:Node 编排、Pillow 横向三段式离线重建。
|
||||
- `design-pipeline/scripts/verify-assets.mjs`、`verify-assets.py` 与 `asset_quality.py`:尺寸、Alpha 外圈、绿边、浅色半透明边、透明 RGB、体积和色彩声明检查。
|
||||
- `design-pipeline/requirements.txt`:锁定 `Pillow==12.3.0`。
|
||||
- Node/Python 单元测试、A01 静态契约、资产审计和四档 H5 运行时检查。
|
||||
|
||||
在双按钮试点基础上,用户选择“方案 2:卷轴祥云”并批准扩展为四件套 v3:
|
||||
|
||||
- `design-pipeline/manifests/a01-scroll-skins-v3.json`:四件套源母图、输出槽位、缩放、透明边、体积和消费者的唯一机器合同。
|
||||
- `build-a01-scroll-skins.mjs`、`build_scroll_skins.py`:Node 编排与 Pillow 确定性构建;构建会清除外缘绿边、浅色半透明脏边和透明 RGB 残留。
|
||||
- 主/次按钮和弹窗按固定比例等比输出;Toast 输出可切片透明 PNG,由页面 `border-image` 承担自适应宽度。
|
||||
- 弹窗采用带透明度表的索引 PNG 控制体积,质量门读取真实透明通道,不通过放宽阈值换取通过。
|
||||
|
||||
旧 schema v1 仍保留给现有 A01 预览流程;不得把它的 `fit: 'fill'` 规则复制到 v2 固定比例资产。
|
||||
|
||||
## 3. 资产分类与唯一落地方式
|
||||
|
||||
每个设计元素在 manifest 中只能属于以下一种主要类型:
|
||||
|
||||
| 类型 | `assetClass` | 正确落地 | 典型内容 |
|
||||
| --- | --- | --- | --- |
|
||||
| 代码原生 | `code-native` | Vue/SCSS | 布局、文字、间距、纯色、普通分隔线、状态与交互 |
|
||||
| 固定比例位图 | `fixed-bitmap` | 精确槽位比例的 PNG/WebP,不允许变形 | 宗祠头图、复杂水墨、固定比例品牌视觉面 |
|
||||
| 透明叠加资产 | `transparent-overlay` | 干净 RGBA PNG/WebP | Logo、印章、云纹、专用图标、结饰 |
|
||||
| 可伸缩装饰框 | `nine-slice` | 经 H5/Android 验证的九宫格或等价组件 | 多宽度按钮框、卡片框、弹窗框 |
|
||||
| 平铺纹理 | `tile-texture` | 明确的重复或覆盖策略 | 小尺寸宣纸纹、无方向噪声纹理 |
|
||||
|
||||
禁止:
|
||||
|
||||
- 把整页设计截图或局部页面截图直接裁入运行页面。
|
||||
- 用 emoji、文本符号、临时第三方 SVG、CSS 拼画代替缺失的品牌装饰或图标。
|
||||
- 同一资产既声明固定比例又在页面中随意拉伸。
|
||||
- 未经 manifest 授权使用 `scaleToFill` 或 Sharp `fit: 'fill'`。
|
||||
- 把候选图、审阅图、runtime 截图或 `generated/` 中间文件当成唯一正式源。
|
||||
|
||||
## 4. 单一 manifest v2 合同
|
||||
|
||||
manifest 是资产生产、页面接入和质量验证的唯一机器可读所有者。建议结构:
|
||||
|
||||
```json
|
||||
{
|
||||
"schemaVersion": 2,
|
||||
"page": "A01",
|
||||
"assets": [
|
||||
{
|
||||
"id": "a01-primary-button-v2",
|
||||
"assetClass": "fixed-bitmap",
|
||||
"source": "static/assets/foundation/transparent/a01-primary-button-v2.png",
|
||||
"output": "static/assets/foundation/transparent/a01-primary-button-v2.png",
|
||||
"logicalSlot": {
|
||||
"widthRpx": 622,
|
||||
"heightRpx": 92
|
||||
},
|
||||
"outputPixels": {
|
||||
"width": 1866,
|
||||
"height": 276
|
||||
},
|
||||
"render": {
|
||||
"scalePolicy": "uniform-only",
|
||||
"uniMode": "aspectFit",
|
||||
"allowDistortion": false
|
||||
},
|
||||
"alpha": {
|
||||
"required": true,
|
||||
"transparentOutsideFrame": true,
|
||||
"cornerMaxAlpha": 0
|
||||
},
|
||||
"edge": {
|
||||
"forbidChromaResidue": true,
|
||||
"forbidLightFringe": true,
|
||||
"premultipliedAlphaCheck": true
|
||||
},
|
||||
"quality": {
|
||||
"maxBytes": 500000,
|
||||
"symmetry": "horizontal",
|
||||
"colorSpace": "sRGB"
|
||||
},
|
||||
"consumers": [
|
||||
"pages/auth/a01-entry.vue"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
正式实现时应为 schema v2 编写 JSON Schema 或等价的严格校验器。未知字段、缺失字段、越出工作区的路径、重复 ID 和未登记消费者都应尽早失败。
|
||||
|
||||
## 5. Node.js 与 Sharp 的职责
|
||||
|
||||
Node.js 是流水线编排层,继续复用当前 `design-pipeline/`:
|
||||
|
||||
1. 解析并校验 manifest。
|
||||
2. 检查路径只能位于工作区内。
|
||||
3. 调用 Sharp 读取元数据、裁切、等比缩放、格式转换、压缩和预览组合。
|
||||
4. 根据 `scalePolicy` 选择算法;`uniform-only` 禁止 `fit: 'fill'`。
|
||||
5. 扫描 Vue/SCSS 中的资产引用、`mode` 和显示槽位。
|
||||
6. 检查资源比例与页面逻辑槽位比例,默认容差不超过 0.5%。
|
||||
7. 禁止页面引用未进入 manifest 的新视觉资产。
|
||||
8. 生成包含 SHA-256、尺寸、字节数、Alpha、消费者和检查结果的构建报告。
|
||||
9. 使用现有 Chrome CDP 9222 对真实 H5 页面做尺寸、资源加载和局部截图验证。
|
||||
|
||||
Node/Sharp 不负责艺术判断,也不把代码组合预览当作用户验收证据。
|
||||
|
||||
## 6. Python 的职责
|
||||
|
||||
Python 是像素质量层,建议使用 Pillow;只有 Pillow 无法稳定完成的边缘分析再引入 OpenCV,避免不必要的重依赖。
|
||||
|
||||
职责:
|
||||
|
||||
1. 验证 PNG/WebP 解码、实际尺寸、通道数和 sRGB 色彩空间。
|
||||
2. 检查透明角、外框外 Alpha、可见内容边界和空白边距。
|
||||
3. 检测绿幕残留、异常高亮边缘和半透明脏边。
|
||||
4. 对透明边缘执行去污染与正确的 Alpha 处理,避免 Android 缩放后出现白边或绿边。
|
||||
5. 检查预乘 Alpha 风险;完全透明像素不得保留会渗出的异常 RGB。
|
||||
6. 对要求对称的按钮和装饰框检查左右差异。
|
||||
7. 生成局部边缘放大图、资产联系表和机器可读报告。
|
||||
8. 质量不达标时返回非零退出码,禁止继续接入页面。
|
||||
|
||||
白边检测不能简单地“禁止白色”,因为次按钮内部可能本来就是暖白宣纸。检查必须只针对外框外区域、半透明边界和 manifest 声明的允许色板。
|
||||
|
||||
## 7. 资产生产流程
|
||||
|
||||
### 7.1 设计阶段
|
||||
|
||||
设计或 ImageGen 输出页面方向时,同时登记:
|
||||
|
||||
- 页面逻辑尺寸和目标视口。
|
||||
- 组件边界与逻辑槽位。
|
||||
- 哪些内容必须由代码渲染。
|
||||
- 哪些内容需要独立透明资产。
|
||||
- 哪些装饰允许伸缩以及不可伸缩安全区。
|
||||
- 字体、字号、颜色和状态。
|
||||
|
||||
不接受只有一张扁平页面图而没有资产任务单的“最终设计”。
|
||||
|
||||
### 7.2 候选生产
|
||||
|
||||
1. 只有缺少完整位图资产时使用 ImageGen。
|
||||
2. 输入图必须明确角色:编辑目标、风格参考或组合参考。
|
||||
3. 生成内容不包含应由代码渲染的按钮文字、表单文字和状态文案。
|
||||
4. 中间候选进入忽略目录,不覆盖正式资产。
|
||||
5. 选择一个母图后再进入确定性处理;候选图不长期堆入仓库。
|
||||
|
||||
ImageGen 的艺术输出不能保证跨电脑逐像素复现。跨电脑可复现的是“已选择母图之后的处理、验证和页面接入”。需要长期重建的唯一母图必须进入受控正式路径或由最终资产本身承担稳定输入。
|
||||
|
||||
### 7.3 确定性处理
|
||||
|
||||
1. 按 manifest 裁切或补透明边距。
|
||||
2. 以目标槽位比例导出 2×/3×文件。
|
||||
3. 清理 Alpha、白边、绿边和异常 RGB。
|
||||
4. 转为 sRGB,使用高质量等比缩放。
|
||||
5. 输出新的版本化文件,不直接覆盖当前正式资产。
|
||||
6. Python 质量门通过后,才允许更新页面引用。
|
||||
|
||||
### 7.4 页面接入
|
||||
|
||||
1. 先写或调整资产合同并看到预期失败。
|
||||
2. 页面使用 manifest 指定的渲染模式。
|
||||
3. 文字、图标和交互状态保持独立可访问节点。
|
||||
4. 只在真正需要叠层的地方使用定位;普通内容保持正常布局流。
|
||||
5. 禁止为了匹配截图而恢复错误比例或无依据的定位。
|
||||
|
||||
### 7.5 运行验证
|
||||
|
||||
最低验证层级:
|
||||
|
||||
1. manifest/schema 合同。
|
||||
2. Python 像素质量检查。
|
||||
3. Node/Sharp 构建和引用检查。
|
||||
4. H5 Chrome 真实运行:320×568、360×640、360×800、412×915。
|
||||
5. 一张代表图或一张复杂状态联系表。
|
||||
6. Android/HBuilderX 真机或模拟器复核。
|
||||
7. 用户明确逐页验收。
|
||||
|
||||
H5、自动截图差异、内部 smoke 和 GPT 审视都不能替代第 6、7 层。
|
||||
|
||||
## 8. 质量门槛
|
||||
|
||||
### 8.1 通用门槛
|
||||
|
||||
- 输出像素必须与 manifest 完全一致。
|
||||
- 固定比例资产与逻辑槽位比例误差默认不超过 0.5%。
|
||||
- `uniform-only` 资产不得出现非等比缩放。
|
||||
- PNG 声明透明时必须真正包含 Alpha 通道。
|
||||
- 声明透明角时,指定角点 Alpha 必须为 0。
|
||||
- 禁止绿幕残留和未授权的浅色外缘。
|
||||
- 文件必须为 sRGB;不得依赖另一台电脑上的专有字体、PSD 或本机临时目录。
|
||||
- 体积超过 `maxBytes` 时失败,不通过降低清晰度或删除证据掩盖。
|
||||
|
||||
### 8.2 固定按钮门槛
|
||||
|
||||
- 图片中不包含按钮文字和微信图标。
|
||||
- 外框之外透明,内部视觉面完整。
|
||||
- 四角、双边和装饰连续,不得出现切口或拼接缝。
|
||||
- 3×输出缩小到真实槽位后,金线仍连续且不过度发虚。
|
||||
- 按钮点击区域由代码控制,不由图片透明区决定。
|
||||
|
||||
### 8.3 自动差异的边界
|
||||
|
||||
截图差异只比较同视口、同状态和同字体环境。字体抗锯齿、WebView 与 Chrome 的细小差异不能用单一全屏像素阈值判死刑;应优先比较资产局部裁图、尺寸、边缘和结构,再由人工判断整体视觉。
|
||||
|
||||
## 9. A01 卷轴祥云资产试点
|
||||
|
||||
流水线首先用两张 v2 按钮验证固定槽位,随后按用户选定方向升级为四件套 v3。当前 A01 实际引用:
|
||||
|
||||
- `a01-scroll-primary-v3.png`:`1866×276px`,登录主按钮。
|
||||
- `a01-scroll-secondary-v3.png`:`1866×300px`,微信次按钮。
|
||||
- `a01-scroll-toast-v3.png`:`1770×246px`,反馈 Toast 九宫格/切片表面。
|
||||
- `a01-scroll-dialog-v3.png`:`1860×1560px`,安全验证弹窗表面。
|
||||
|
||||
当前 `a01-primary-button.png`、`a01-secondary-button.png` 的原始比例与页面槽位不一致,且次按钮外缘存在高亮白/浅绿色像素,不能作为新流水线质量样板。
|
||||
|
||||
本机 H5 试点结果:
|
||||
|
||||
- 四张 v3 输出通过尺寸、Alpha 外圈、透明 RGB、绿边、浅色半透明边、体积和色彩声明检查;旧资产和 v2 试点资产原样保留。
|
||||
- A01 主/次按钮与弹窗使用 v3 路径和 `aspectFit`;Toast 使用 v3 切片资产;所有文字、微信图标和交互仍由页面代码独立承载。
|
||||
- 自动质量门与 `320×568`、`360×640`、`360×800`、`412×915` H5 运行检查通过。
|
||||
- 412×915 默认态、Toast 和验证弹窗真实运行截图未见原来的外缘白/浅绿边、角饰断裂或整体比例拉伸;仍需 Android/HBuilderX 与用户确认。
|
||||
|
||||
试点规则:
|
||||
|
||||
1. 保留当前资产,不覆盖、不删除。
|
||||
2. 新资产使用版本化路径。
|
||||
3. 先通过 Python/Node 自动质量门,再接入 A01。
|
||||
4. 接入后只保存一张 412×915 代表图;四尺寸可以自动检查但不连续保存大量相似截图。
|
||||
5. H5 通过只能写“内部候选”;Android 和用户确认之前,A01 仍为 `[~]`。
|
||||
6. 只有用户确认试点资产质量达到标准,才把 manifest v2 和混合流水线推广到其他页面。
|
||||
|
||||
## 10. 跨电脑环境合同
|
||||
|
||||
### G01 列表背景候选扩展
|
||||
|
||||
2026-07-16 已把混合流水线扩展到 G01 背景候选,但尚未推广为正式运行资产。三个 ImageGen 母版、准确提示和处理模式保存在 `docs/design/assets/g01-background/masters/` 与 `design-pipeline/manifests/g01-background-candidates.json`;`build-g01-backgrounds.mjs` 使用 Node 内置模块编排,`build_g01_backgrounds.py` 使用锁定的 Pillow 完成绿幕转 Alpha、去绿边、透明 RGB 清理、sRGB 写入和确定性 PNG 输出。
|
||||
|
||||
执行 `npm.cmd --prefix design-pipeline run build:g01-background-candidates` 可在另一台电脑从仓库母版重建三个候选。模型重新生成不能保证逐像素一致;精确重建必须使用仓库内母版。完整步骤、当前哈希和质量基线见 `docs/design/G01_列表背景候选与换机重建.md`。
|
||||
|
||||
### 10.1 当前已可运行的 Node 雏形
|
||||
|
||||
新电脑需要 Windows、Node.js 22 或更高版本、npm、HBuilderX、Chrome 和项目完整工作区。当前 Node 24 已验证可用。
|
||||
|
||||
```powershell
|
||||
node --version
|
||||
npm --version
|
||||
npm.cmd ci --prefix design-pipeline
|
||||
npm.cmd --prefix design-pipeline run build:a01
|
||||
powershell.exe -NoProfile -ExecutionPolicy Bypass -File tests/a01-code-pipeline-contract.ps1
|
||||
```
|
||||
|
||||
这些命令只证明现有 schema v1 雏形可运行,不证明新质量门已经实现。
|
||||
|
||||
### 10.2 manifest v2 的 Python 环境
|
||||
|
||||
`design-pipeline/` 已提供锁定依赖、统一 Node 入口和 Python 质量脚本;不得要求接管者凭经验安装不确定版本。当前结构:
|
||||
|
||||
```text
|
||||
design-pipeline/
|
||||
package.json
|
||||
package-lock.json
|
||||
requirements.txt
|
||||
manifests/
|
||||
scripts/
|
||||
rebuild-a01-buttons.mjs
|
||||
rebuild_a01_buttons.py
|
||||
verify-assets.mjs
|
||||
verify-assets.py
|
||||
generated/ # 忽略,可再生成
|
||||
```
|
||||
|
||||
恢复和验证命令:
|
||||
|
||||
```powershell
|
||||
python --version
|
||||
python -m venv design-pipeline/.venv
|
||||
design-pipeline/.venv/Scripts/python.exe -m pip install --upgrade pip
|
||||
design-pipeline/.venv/Scripts/python.exe -m pip install -r design-pipeline/requirements.txt
|
||||
npm.cmd ci --prefix design-pipeline
|
||||
npm.cmd --prefix design-pipeline run test:v2
|
||||
npm.cmd --prefix design-pipeline run validate:a01-buttons
|
||||
npm.cmd --prefix design-pipeline run rebuild:a01-buttons
|
||||
npm.cmd --prefix design-pipeline run verify:assets
|
||||
npm.cmd --prefix design-pipeline run validate:a01-scroll-skins
|
||||
npm.cmd --prefix design-pipeline run build:a01-scroll-skins
|
||||
npm.cmd --prefix design-pipeline run verify:a01-scroll-skins
|
||||
design-pipeline/.venv/Scripts/python.exe -m unittest discover -s design-pipeline/tests -p "test_*.py" -v
|
||||
```
|
||||
|
||||
Node 入口优先使用 `PYTHON` 环境变量,其次自动使用 `design-pipeline/.venv/Scripts/python.exe`,最后才回退到系统 `python`。本机已按以上依赖完成验证;跨电脑仍必须真实执行并保存输出,不能只因文件齐全就写成换机复现通过。
|
||||
|
||||
### 10.3 可迁移文件
|
||||
|
||||
至少保留:
|
||||
|
||||
- `design-pipeline/package.json`
|
||||
- `design-pipeline/package-lock.json`
|
||||
- 实施后新增的 Python 锁定依赖文件
|
||||
- manifest、JSON Schema、构建/质量脚本和对应测试
|
||||
- manifest 引用的正式资产
|
||||
- 页面源码和真实截图工具
|
||||
- 本规范、`docs/交接记录.md` 与 P00 资产台账
|
||||
|
||||
不得依赖:
|
||||
|
||||
- `node_modules/`
|
||||
- Python 虚拟环境
|
||||
- `design-pipeline/generated/`
|
||||
- `tmp/`
|
||||
- 本机 Chrome 用户目录
|
||||
- Photoshop/PSD
|
||||
- 未进入仓库的候选图或 runtime 截图
|
||||
|
||||
## 11. 失败处理
|
||||
|
||||
- 依赖安装失败:停止并报告缺失环境,不绕过锁文件。
|
||||
- manifest 不合法:修正单一数据源,不在页面里增加例外。
|
||||
- 比例不匹配:回到目标槽位或重新导出,禁止 `fill` 掩盖。
|
||||
- 白边/绿边:回到 Alpha 去污染步骤,禁止用页面背景色遮盖。
|
||||
- H5 与组合预览不同:以真实 H5 为准并查明差异。
|
||||
- H5 与 Android 不同:不得冻结资产,记录 WebView/字体/缩放差异后修正。
|
||||
- 自动检查通过但用户认为不好看:状态仍为待审核,视觉判断以用户最新决定为准。
|
||||
|
||||
## 12. 推广条件
|
||||
|
||||
以下条件全部满足后,才能从 A01 推广:
|
||||
|
||||
1. A01 四张 v3 卷轴祥云资产通过 manifest、Python、Node 和四尺寸检查。
|
||||
2. 412×915 真实 H5 代表图没有白边、绿边、拉伸或模糊。
|
||||
3. Android/HBuilderX 已复核。
|
||||
4. 用户明确确认四件套资产质量和 A01 整页达到标准。
|
||||
5. 新电脑按文档能够从锁文件恢复环境并得到一致的质量报告。
|
||||
|
||||
当前仅满足第 1、2 项;第 3、4、5 项尚未满足。因此本规范和 A01 试点仍不是整项目推广或用户验收完成证明。
|
||||