Files
jiapuapp/docs/superpowers/specs/2026-07-15-code-first-asset-pipeline-design.md
T
2026-07-16 07:58:53 +08:00

101 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 家谱 APP 纯代码资产流水线设计规格
> 日期:2026-07-15
> 当前试点:A01 登录页
> 状态:等待用户复核规格,尚未开始实现
## 1. 目标
建立一条不依赖 Photoshop、Figma 或人工反向切图的资产生产链。复杂国风位图只在缺失时由 ImageGen 生成一次原始母图;之后的透明处理、裁切、缩放、组合、预览和运行资产导出全部由代码完成。整页设计预览与 uni-app 使用的独立 PNG 必须来自同一批源像素和同一份布局清单。
首轮只验证 A01,不修改其他 52 页。成功标准不是脚本能够输出图片,而是 A01 的代码预览、独立资产、uni-app 真实运行画面和验收规划中的页面合同能够形成可重复验证的闭环。
## 2. 当前版本范围
- 基础版本固定使用当前浅色国风主题。
- 深色与跟随系统整体延期到下一版本,不阻塞本轮 53 页验收。
- 下一版本增加主题时必须另建全局主题合同,并对已冻结页面执行影响分析和真实截图回归。
- 当前只做页面样式、视觉状态和 Android 兼容性,不对接接口,不宣称 Mock 状态代表功能通过。
## 3. 保留现场
- 现有 `docs/design/assets/a01-vnext/`、PSD、Photoshop 脚本、候选图片和历史证据全部保留。
- 不删除、不移动、不覆盖旧实验文件。
- Photoshop 生产链停止扩展,新流水线不得引用 Photoshop COM、JSX 或 PSD 作为运行依赖。
- 旧文件是否归档必须等 A01 新流水线和真实页面通过后另行决定。
## 4. 唯一所有者与目录边界
新流水线使用以下边界:
```text
design-pipeline/
manifests/ 页面、状态、图层、尺寸和导出合同
sources/ 经确认的原始母资产,只读输入
scripts/ Node.js 渲染、切图、校验和报告脚本
generated/ 可再生成的设计预览、联系表和检查报告
static/assets/ 用户确认后进入页面的正式运行资产
docs/design/screens/ 真实运行截图证据,不作为页面资源
```
页面清单是坐标、状态、源文件、目标文件、尺寸和复用关系的唯一机器可读所有者。脚本和页面不得重新硬编码同一套资产规则;uni-app 页面只消费已确认的正式运行资产及必要布局常量。
## 5. 技术结构
- Node.js:命令入口、清单读取、状态遍历、输出隔离和失败报告。
- Sharp/libvipsAlpha、裁切、合成、缩放、PNG 优化、尺寸与体积检查。
- JSON:页面画布、图层顺序、资产槽位、状态差异和导出规格。
- ImageGen:只生成缺失的完整复杂位图母资产;不生成带表单文字的整页截图,不重绘现有 `brand-seal.png`
- uni-app:最终页面实现与真实交互状态;不把整页设计预览当运行资产。
## 6. A01 首轮输出
同一次构建必须生成:
1. A01 独立透明 PNG 资产及尺寸、Alpha、SHA256 和文件体积报告。
2. 密码登录与短信验证码登录的 412×915 代表图。
3. 复杂状态联系表,至少覆盖密码隐藏、密码显示、短信默认和短信倒计时。
4. 320×568、360×640、360×800、412×915 四尺寸布局预览。
5. 可供 A01 契约测试读取的生成清单。
代码预览必须覆盖 A01 当前合同:现有 `brand-seal.png`、现有锁图标、保留中心瞳孔的闭眼图标、消息气泡加且仅加三点的短信图标、忘记密码位于密码横线下方,以及密码/短信两种独立状态。
## 7. 验收边界
- 代码生成图只用于选择和定位视觉问题,不计为真实运行证据。
- A01 实施后必须从真实路由进入,获取当前浅色国风主题的运行截图。
- 内部检查四档尺寸、默认字号与约 1.3 倍字号、状态栏、安全区、软键盘、返回手势和图片解码表现。
- 320×568 下品牌区、登录方式、当前表单、登录按钮、微信入口、注册、忘记密码和协议入口必须同屏可见且不依赖纵向滚动。
- 默认只向用户展示一张代表图;密码/短信等复杂状态使用一张联系表。
- H5 截图是候选证据,最终仍需 Android/HBuilderX 真机或模拟器复核。
- 用户明确确认前,A01 保持 `[~]`,不得写成已验收或冻结。
## 8. 性能与工程约束
- 正式 PNG 按实际显示槽位输出,不让页面解码无必要的超大位图。
- 同一公共资产只保留一个正式来源;页面状态不得复制公共背景和按钮像素。
- 脚本拒绝覆盖已存在的版本化输出,失败时保留旧结果并返回非零退出码。
- 生成目录与正式运行目录严格分离;只有用户确认的资产才进入 `static/assets/`
- 不使用整页截图作为运行资产,不用 CSS 或手写 SVG 假造完整卷轴、宗祠、牌匾、按钮和装饰面。
- 所有可见提示继续使用项目自定义组件,禁止以原生 UniApp 提示作为最终视觉。
## 9. 测试与证据
- 先建立纯代码流水线契约测试并确认因入口和清单缺失而失败。
- 最小实现后验证清单、源文件、四尺寸输出、状态输出、PNG 尺寸、Alpha、文件体积和哈希。
- A01 页面实施前先更新页面契约测试并确认 RED,实施后恢复 GREEN。
- 运行受影响测试、运行时 smoke、真实截图人工复核和 `git diff --check`
- 不执行 `git add`、commit、push、reset、checkout、上传、worktree 或多代理。
## 10. 推广门槛
A01 只有同时满足以下条件,纯代码流水线才可推广:
1. 同一清单能够稳定重复生成全部 A01 候选资产和预览。
2. 独立 PNG 与设计预览来自相同源像素,不再需要人工反向切图。
3. A01 真实运行截图与选定预览达到用户认可的视觉一致性。
4. 四档尺寸、约 1.3 倍字号、软键盘、安全区和 Android 复核有真实证据。
5. 用户明确确认 A01 基础版本通过。
未达到推广门槛时,只修正 A01 流水线和页面,不修改其他页面。