验收完成40%

This commit is contained in:
2026-07-17 08:08:31 +08:00
parent 23cfd365a1
commit 887481a4ab
172 changed files with 855 additions and 577 deletions
@@ -6,9 +6,8 @@
## 1. 已归档的美术锚点
- 文件:[`screens/A01-启动登录引导-效果稿-v1-显式协议.png`](screens/A01-启动登录引导-效果稿-v1-显式协议.png)
- 效果稿 v2[`screens/A01-启动登录引导-效果稿-v2-独立注册.png`](screens/A01-启动登录引导-效果稿-v2-独立注册.png),记录此前“四个独立按钮”的尝试;该入口结构已失效,不作当前方案依据
- 当前效果稿 v3[`screens/A01-启动登录引导-效果稿-v3-文字注册入口.png`](screens/A01-启动登录引导-效果稿-v3-文字注册入口.png),保留第 2 节的入口层级归档;它不再定义运行时像素坐标。
- v1–v3 早期整页效果稿已于 2026-07-17 上传前清理;历史入口结构保留在本记录与项目外完整归档中,不再作为当前方案依据。
- 当前可恢复美术源:[`assets/a01-vnext/source/A01-layered-source-v1.psd`](assets/a01-vnext/source/A01-layered-source-v1.psd) 与 [`a01-psd-manifest.json`](assets/a01-vnext/source/a01-psd-manifest.json)
- 当前运行时视觉基准:[`screens/A01-启动登录引导-栅格验收-412x915.png`](screens/A01-启动登录引导-栅格验收-412x915.png),用于 A-01 协议未勾选状态的同尺寸像素比对;`pages/auth/entry.vue` 必须使用真实页面结构还原,不得将整张效果图作为页面内容。
- 用途:保留本轮已确认的“家祠卷轴”欢迎页美术方向,不作为可直接还原的代码布局图,也不作为功能图标资产。
- 画面方向:朱砂家祠红头、暖宣纸主体、古金细线与云纹、墨褐标题、两侧淡墨建筑/竹影与底部山水。登录欢迎页后续必须使用独立的红头/宣纸背景组合,不复用 G01 的列表页大山水底图。
@@ -59,7 +58,7 @@
| 资产 | 用途 | 来源或生成提示 | 尺寸与验收 |
| --- | --- | --- | --- |
| `docs/design/screens/A01-启动登录引导-效果稿-v3-文字注册入口.png` | A-01 视觉比对依据 | 已归档并由用户确认的 v3 效果稿 | `852 × 1846px` PNG;仅作真实 DOM 页面还原和运行时验收对照,不直接作为页面内容 |
| `docs/design/assets/a01-vnext/source/A01-layered-source-v1.psd` | A-01 可恢复视觉源 | 当前分层 PSD 与清单 | 页面以真实 DOM 和导出位图还原,不把整页设计图作为页面内容 |
| `static/assets/backgrounds/auth-ancestral-header-v1.png``auth-rice-paper-v1.jpg``auth-ink-scenery-v1.png` | A-01 分层页面背景 | 2026-07-13 内置图像生成 | 当前 A-01 使用;不得复用 G-01 背景 |
| `static/assets/icons/auth/login-outline-v1.png``static/assets/icons/auth/wechat-licensed-v1.png` | A-01 两个按钮图标 | 登录图标复用项目既有资产;微信图标来源与许可见旧记录 | 当前 A-01 使用;微信图标免费使用须在应用“关于/设置”及应用商店描述中保留 Icons8 署名链接 |
| `static/assets/foundation/opaque/a01-primary-button.png``a01-secondary-button.png` | A01 登录与微信登录的完整按钮皮肤 | 2026-07-13 以运行时视觉基准的比例与画风生成;不裁切设计图 | `1877 × 418px``1881 × 419px` 不透明 PNG;分别承担底色、双线边框和四角纹样,DOM 仅叠放图标与文案 |
@@ -1,23 +1,25 @@
# G01 列表背景候选与换机重建
> 日期:2026-07-16
> 状态:三个母版已生成并通过本机确定性构建;尚未由用户选择,不得接入页面或写成已验收
> 状态:A/B/C 历史母版与旗舰长屏母版均已保存并通过本机确定性构建;用户已确认旗舰长屏方向作为 9 个活动 G 页面的公共背景,并确认共享图片画层使用 28% 不透明度。当前仅有 H5 运行证据,不得写成任一页面整页已验收或 Android 已通过
## 1. 为什么重做
现有 `footer-mountain-bamboo.png``750×360`,视觉主体集中在底部,上半部留白较大;页面又把它定位到整个内容末尾并使用 `scaleToFill` 拉伸,因此列表变长时山水被推到“添加家谱”下方。用户提出背景应更早出现,并进一步提出 G01 可能只滚动下方列表、上方当前家谱与快捷入口固定。
滚动结构暂不实施。新背景先作为列表滚动窗口候选资产保存,下一轮选择方向并确认滚动边界后再接入
连续长背景只替换各 G 页面最底层视觉。G01 固定区/独立滚动边界已在后续同日按用户确认方案单独实施,不影响其他 G 页面;具体合同见 `docs/superpowers/specs/2026-07-16-g01-fixed-header-independent-list-scroll-design.md`
## 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`
- `docs/design/assets/g01-background/masters/genealogy-page-background-long-flagship-imagegen-source.png`(原始 ImageGen 输出,793×1983
- `docs/design/assets/g01-background/masters/genealogy-page-background-long-flagship-master.png`(确定性归一化母版,1536×3840)
准确提示词、标题、处理模式、源尺寸和生成输出路径由 `design-pipeline/manifests/g01-background-candidates.json` 单一维护。A/B 使用纯 `#00ff00` 绿幕并提取透明叠加层;C 保留完整暖宣纸底。
准确提示词、标题、处理模式、源尺寸、目标尺寸、选择状态和运行输出路径由 `design-pipeline/manifests/g01-background-candidates.json` 单一维护。A/B 使用纯 `#00ff00` 绿幕并提取透明叠加层;C 与旗舰长屏图保留完整暖宣纸底。当前公共运行输出是 `static/assets/modules/genealogy/opaque/genealogy-page-background-long.png`,由 `components/GenealogyPageBackground.vue` 唯一持有路径、贴底规则和 `opacity: 0.28` 显示规则;各 G 页面不得重复覆盖。旧 `genealogy-page-background.png` 不覆盖、不删除,仅作为上一轮 C 输出保留。
## 3. 跨电脑重建
@@ -42,6 +44,7 @@ node --test design-pipeline/tests/g01-background-candidates.test.mjs
- `g01-list-background-direction-a.png`
- `g01-list-background-direction-b.png`
- `g01-list-background-direction-c.png`
- `genealogy-page-background-long-flagship.png`
- `build-report.json`
Node 入口只使用内置模块做路径与清单编排;图片解码、尺寸检查和像素处理由锁定版本的 Pillow 统一负责,因此 G01 候选构建不依赖已删除的 `node_modules`。项目其他使用 Sharp 的旧流水线仍需执行 `npm.cmd ci --prefix design-pipeline`
@@ -55,8 +58,9 @@ Node 入口只使用内置模块做路径与清单编排;图片解码、尺寸
| 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` |
| 旗舰长屏 | opaque-paper-resize | 1440×3600 | 6,538,134 | `9aa9ebdd231eddbc151e238ba340a00f8603f23143117ad8c93009947dcca2e2` |
张输出均满足:可见绿幕残留 0、透明 RGB 0、尺寸错误 0、体积错误 0、sRGB 警告 0。本机连续构建两次的报告与文件 SHA-256 完全一致。若另一台电脑因 Python、Pillow 或压缩实现差异产生不同文件哈希,应先核对锁定依赖,再比较解码后的 RGBA 像素和质量报告,不能只凭压缩字节差异判定视觉失败。
张输出均通过清单尺寸、处理模式和 sRGB 构建检查;A/B/C 继续保持原质量基线。旗舰长屏原始 ImageGen 输出为 2,333,286 字节、SHA-256 `3d5ada7a23edd8db98b3511d308d2d240d80fdd4ff9280a8c434b50fb68cac3a`1536×3840 归一化母版为 6,822,092 字节、SHA-256 `2fb3aa9be7772beb6f620c49f096ed6d9c045a56cfe7ae342664ee05ca58862b`。若另一台电脑因 Python、Pillow 或压缩实现差异产生不同文件哈希,应先核对锁定依赖,再比较解码后的 RGBA 像素和质量报告,不能只凭压缩字节差异判定视觉失败。
## 5. 可复现边界
@@ -66,7 +70,6 @@ Node 入口只使用内置模块做路径与清单编排;图片解码、尺寸
## 6. 下一步
1. 用户比较 A/B/C 后选择一个方向,或提出组合要求
2. 选择后只保留一个正式母版合同,创建版本化 `static/assets/` 运行输出
3. 再讨论并实现:标题栏、当前家谱大卡片和快捷入口固定;从“我创建的”开始独立滚动;背景固定在列表滚动窗口背后
4. 完成 320×568、360×640、360×800、412×915 H5 截图和 Android/HBuilderX 复核。
1. 用户查看 G01 固定信息区/独立列表滚动的实际 H5 页面;当前五档 runtime 截图仍是内部候选证据
2. 用户确认 G01 整页后,再保存一张长期代表证据并更新视觉证据索引
3. 完成 Android/HBuilderX 真机或模拟器复核,并专项检查区域滚动手感及 4GB Android 上约 19.8MiB 解码内存、切页与回收
@@ -25,7 +25,7 @@
| `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/g01-my-genealogies` | G01 我的家谱 | `pages/genealogy/g01-my-genealogies.vue` | 用户已选择 C 作为 9 个 G 页面的公共背景;完整宽度显示、固定贴底与上方宣纸承接的新四档 H5 候选待复核,整页仍为 `[~]`,固定区/独立滚动和 Android 待审核 |
| `pages/genealogy/g03-create-genealogy` | G03 创建家谱/始祖录入 | `pages/genealogy/g03-create-genealogy.vue` | `step=create|ancestor`;已获用户验收,视觉冻结 |
| `pages/genealogy/g05-genealogy-overview` | G05 家谱总览 | `pages/genealogy/g05-genealogy-overview.vue` | `loading|ready|empty|error`;视觉候选已实现,待集中审美确认 |
| `pages/genealogy/g06-search-genealogies` | G06 公开家谱搜索/结果/无结果 | `pages/genealogy/g06-search-genealogies.vue` | 已收敛 G07;朱砂题签三态候选已截图,待集中审美确认 |
@@ -119,9 +119,13 @@ 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 待选 | 母版保留;未接入页面 |
| `docs/design/assets/g01-background/masters/g01-list-background-direction-a-chroma-master.png` | candidate master / 1024×1536 | G01 背景 A,绿幕透明历史候选 | 未接入 | 母版保留,不删除 |
| `docs/design/assets/g01-background/masters/g01-list-background-direction-b-chroma-master.png` | candidate master / 1024×1536 | G01 背景 B,绿幕透明历史候选 | 未接入 | 母版保留,不删除 |
| `docs/design/assets/g01-background/masters/g01-list-background-direction-c-paper-master.png` | historical selected master / 1024×1536 | 上一轮 G 模块公共暖宣纸背景 C 的稳定母版 | `genealogy-page-background.png` | 历史方向保留,不删除 |
| `docs/design/assets/g01-background/masters/genealogy-page-background-long-flagship-imagegen-source.png` | source master / 793×1983 | 用户确认的连续长背景原始 ImageGen 输出 | 归一化母版输入 | 原稿保留,不删除 |
| `docs/design/assets/g01-background/masters/genealogy-page-background-long-flagship-master.png` | selected master / 1536×3840 | G 模块旗舰长屏连续背景稳定母版 | `genealogy-page-background-long.png` | 当前选定母版;确定性输出输入 |
| `modules/genealogy/opaque/genealogy-page-background.png` | opaque / 1024×1536 | 上一轮 C 公共运行图 | 当前无页面入口 | 历史输出保留,不删除 |
| `modules/genealogy/opaque/genealogy-page-background-long.png` | opaque / 1440×3600 | G 模块公共旗舰长屏云竹亭台连续宣纸景 | 9 个活动 G 页面通过 `GenealogyPageBackground.vue` 使用,`widthFix` 固定贴底 | 当前公共运行输出;H5 候选已覆盖五档,待逐页审核及 Android 复核 |
| `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 改前截图生成,页面只叠放真实文字和点击层;待集中审美确认 |
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 343 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 360 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 359 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 360 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 350 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 288 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 318 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 321 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 264 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 251 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 312 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 326 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 320 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 318 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 322 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 439 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 343 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 237 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 294 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 360 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 453 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 276 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 701 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 360 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 286 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 340 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 352 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 355 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 229 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 290 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 355 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 454 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 359 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 359 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 456 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 359 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 352 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 284 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 356 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 360 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 457 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 359 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 456 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 360 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 457 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 276 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 346 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 360 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 457 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 275 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 346 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 350 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 451 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 237 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 300 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 352 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 697 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 288 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 368 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 281 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 367 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 314 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 406 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 318 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 331 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 278 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 284 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 282 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 284 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 288 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 284 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 490 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 280 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 283 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 284 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 251 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 426 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 250 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 256 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 289 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 368 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 260 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 264 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 697 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 262 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 693 KiB

Some files were not shown because too many files have changed in this diff Show More