Files
jiapuapp/docs/交接记录.md
T
2026-07-17 08:08:33 +08:00

350 lines
34 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-16
> 用途:更换电脑、重新打开 Codex/GPT 后的唯一接管入口。
> 当前阶段:只做页面样式与视觉流程验收;不对接接口,不做功能验收。
> 当前施工停点:52 个活动页面均已有基础内部 H5 样式候选;A06 另行封存并保留实现。用户下一审核页仍是 G01,当前没有未施工页面,后续按用户逐页审核意见返工。
## 1. 接管后先复述的准确停点
- `pages.json` 当前实际注册 **52 条活动路由**A06 已从路由表移除但源码保留。
- A02 已删除并合入 A01;不存在需要保留的 A02 兼容入口。
- `docs/验收规划.md` 当前活动页统计为:**52 个待审核、0 个已验收、0 个返工标记、0 个冻结**;A06 属于封存页,不计入这些数量。
- 历史上曾标记通过的 A01、A02、A04、A05、A06、G01、G03 只保留为历史视觉证据;活动页必须在本轮重新审核,A06 按最新决定封存。
- 当前没有任何页面处于视觉冻结状态;只有用户在本轮明确说“通过”后,对应页面才能改为 `[x]` 并冻结。
- 2026-07-16 用户要求在次日审核前把全部页面样式先设计并落地。当前 **52 个活动页面** 均已有基础内部 H5 样式候选:A 系列保留已确认视觉;G 系列以 G01 为母体;T、F、R、N、M 各自拥有独立长背景和内容气质,但共享浅色国风、楷体、宣纸、朱砂、古金与 A 系列控件。静态合同与无截图运行 smoke 已覆盖主要页面状态;这些结果都只是待审候选,不能写成“用户已验收”或“已冻结”。A06 的候选实现和证据另行封存。
- A01 当前候选已落实:闭眼图标保留中心瞳孔;密码行使用项目现有锁图标;短信验证码输入图标使用自生成的“消息气泡 + 三点”;不得恢复勾选图标或临时第三方 SVG。密码/短信两态代表联系表为 `docs/design/screens/handoff/2026-07-16/A01-current-password-sms-contact-824x915.png`
- 2026-07-16 用户已逐态确认 A04 当前可实现的 8 类 H5 视觉状态;A04 继续保持 `[~]`,因为真实滑动验证必须使用接口组件自带样式,注册成功/失败真实链路和 Android/HBuilderX 复核尚未完成。当前用户逐页审核位置已推进到 **A05 重置密码**
- A05 已按用户决定向 A01 完整收拢 Logo、全局楷体、标题分隔、两处朱砂按钮、浅色卷轴 Toast 和成功结果卷轴;旧验证面板、伪“验证码已发送”和“重新获取”状态已移除。2026-07-16 用户已逐态确认当前 7 类 H5 视觉状态;返回 A01 后“回填手机号、聚焦密码框”由用户明确延期到真实重置接口链路接入时解决,不阻塞当前样式验收。真实滑动验证、接口结果和 Android/HBuilderX 仍待复核,A05 继续保持 `[~]`、不冻结。
- A06 已向 A01 完整收拢 Logo、全局楷体、标题分隔、页面主按钮、恢复层按钮和恢复卷轴。2026-07-16 用户确认样式没有问题,但判断当前流程暂时不用该页,并选择第二种封存方式:从 `pages.json` 和活动验收表移除,保留 `pages/auth/a06-auth-status.vue`、测试、设计记录与截图证据。A06 不标 `[x]`、不冻结,也不计入活动页 `[~]` 数量;运行 smoke 在封存期间明确 SKIP。
- G01 审核中已把“加入申请”三张卡改为独立 `12rpx` 间距并通过 H5 合同与运行截图;页面尚未整体通过。用户随后确认顶部标题、当前家谱大卡片、四个快捷入口和金色分隔线固定,仅从“我创建的”开始独立滚动;2026-07-16 已按该设计形成内部 H5 候选,五档尺寸、弹层保持位置、切换家谱回顶和底部入口可达性均通过运行 smoke,等待用户查看实际页面,不能写成整页已验收。
- G01 旧 C 图固定贴底后,在高屏上与纯色宣纸承接区出现明显横向分界线。2026-07-16 用户随后确认新生成的连续长背景,并决定仍作为 G01、G03、G05、G06、G08、G09、G10、G11、G12 共 9 个活动 G 页面的公共背景。ImageGen 原稿 `793×1983` 已原样保留;确定性归一化母版为 `1536×3840`APP 运行图为 `1440×3600`,唯一运行入口是 `GenealogyPageBackground.vue``genealogy-page-background-long.png`。图片继续以 `widthFix` 按页面宽度等比完整显示并固定贴底,短屏只裁顶部安全区,左右不裁剪、不变形;用户查看多档对比后确认共享图片画层使用 `opacity: 0.28`,宣纸底色与页面内容层不变。旧 A/B/C 母版和旧 C 运行图均保留且不再作为当前入口。本机四候选构建、Python/Node/静态契约、G01 四档基础尺寸与 `412×1000` 压力档、其余 G 页面运行 smoke 均已覆盖,H5 截图未见旧横向接缝。该公共背景决定不等于 G01 或其他 G 页面整页验收;Android/HBuilderX 和 4GB Android 图片解码/切页/回收仍未复核。用户已查看 G01 固定区/独立滚动实际 H5 页面并确认背景浓度,但未给出 G01 整页正式验收。换机命令和质量哈希见 `docs/design/G01_列表背景候选与换机重建.md`
- 用户随后指出 G01“加入申请”说明和状态文字偏小偏浅;首轮 `26rpx / 25rpx` 实际生效但肉眼变化不够明显,用户最终选择 B 方案:说明使用 `28rpx / 500 / #62584c / 1.4`,状态使用 `27rpx / 600`,审核中为 `#7f4f16`、被拒绝保留 `#a7160c`、已退出为 `#62584c`。本次全线视觉收敛又把当前家谱和列表卡片的地区、人数、角色、更新时间统一改为 `#62584c` 与中等字重;共享家谱卡“更新于”等现已纳入该全局可读性调整。Android/HBuilderX 与 G01 整页验收仍待完成。
- 全局控件现以 A 系列为唯一视觉标准:新增 `AppButton.vue``AppDialog.vue``AppToast.vue``AppLoading.vue`;活动代码中的旧不透明 A01 按钮引用与 `uni.showToast``uni.showModal``uni.showLoading``uni.showActionSheet` 均为 0。普通 `PageHeader` 已把“返回”文字换成真实左箭头。G01/G09/G10 与 T04T06 的当前对话场景已接入 A 系列卷轴对话框;其他按钮统一消费 A 系列透明卷轴资产。
- T、F、R、N、M 已分别生成并接入 `1440×3600` 长背景,正式输入保存在 `docs/design/assets/module-backgrounds/masters/`,运行资产位于各模块 `static/assets/modules/*/opaque/`,重建脚本为 `design-pipeline/scripts/build_module_page_backgrounds.py`,清单为 `design-pipeline/manifests/module-page-backgrounds.json`。G 系列继续只使用既定 G01 公共长背景,不与其他模块背景混用。
- 当前没有未施工页面。用户下一活动审核页仍为 **G01 我的家谱**;后续只根据用户逐页审核意见做局部返工,不再按旧“无人审核时施工 T07”的规则自动推进。真实接口状态、Android/HBuilderX、系统字体放大、软键盘和 4GB Android 长图性能仍待复核。
如果其他文档仍写“53/54 条路由、7 个已验收或冻结”,那是旧阶段记录。当前状态和验收数量以本文件、实际 `pages.json``docs/验收规划.md` 为准。
## 2. 新电脑启动时必须完整阅读
按以下顺序阅读,不要跳过:
1. `AGENTS.md`
2. `docs/交接记录.md`(本文件)
3. `docs/验收规划.md`
4. `docs/规划.md`(用于项目范围和历史结构;其中旧验收数字不再有效)
5. `docs/design/视觉设计交接手册.md`(用于截图、资产和审视方法;其中旧冻结状态不再有效)
6. `docs/design/视觉证据索引.md`
7. `docs/design/D1_安卓视觉规范与页面壳.md`
8. `docs/design/P00_页面结构与资产清单.md`
9. `docs/design/设计资产生产流水线规范.md`
10. `design-qa.md`(历史内部 QA 证据不等于本轮用户验收)
阅读后先运行:
```powershell
git status --short
```
必须保留全部已有未提交改动。不要因为文件是未跟踪状态就删除,也不要用旧提交覆盖当前工作区。
随后先向用户复述:52 条活动路由、52 页全部待审核、当前无冻结页、52 页均已有基础内部 H5 样式候选、A06 封存保留、用户下一审核页是 G01、当前没有未施工页面,以及准备使用的技能。复述准确前不要继续修改页面。
## 3. 文档权威顺序
发生冲突时按以下顺序判断:
1. 用户在当前对话中的最新明确决定。
2. `docs/交接记录.md`:真实停点、风险、下一步。
3. `docs/验收规划.md`:52 页活动流程顺序、封存页记录、状态合同、视觉验收规则和勾选状态。
4. 实际代码、`pages.json` 和测试:当前实现事实。
5. `docs/design/视觉证据索引.md`:默认展示证据。
6. `docs/design/视觉设计交接手册.md``docs/规划.md`:历史方法、范围和背景。
7. `design-qa.md`:历史内部审视记录。
内部测试、旧 QA 的 `passed`、旧截图或 GPT 自己的判断都不能替代用户本轮确认。
## 4. 当前 A01 的真实状态
### 4.1 已确定的页面合同
- APP 没有游客模式,启动入口是 A01。
- A01 同页包含密码登录、短信验证码登录、微信登录、注册、忘记密码和协议入口。
- 首次默认密码登录;后续只恢复用户上次选择的密码/短信方式,不保存密码。
- 登录在本地字段与协议校验通过后才显示行为验证弹层。
- 未勾选协议时使用页内高亮、错误文案和轻微震动,不使用原生 Toast 或原生确认框。
- 320×568 下保持正常字号、触控高度和设计比例,允许自然纵向滚动;不得为了全部入口同屏而压扁品牌区或表单。
- 微信登录保留入口,真实登录留到功能阶段。
- 行为验证当前只审核弹层外观状态;真实 TAC、`validToken` 和接口续接留到功能阶段。
### 4.2 当前代码与关键资产
- 页面:`pages/auth/a01-entry.vue`
- 路由:`pages/auth/a01-entry`
- 契约测试:`tests/a01-a02-ui-contract.ps1`
- 页面头部:`static/assets/modules/auth/opaque/a01-login-header-v1.png`
- 精确头部叠层:`static/assets/modules/auth/opaque/a01-login-header-exact-v2.png`
- 卷轴框:`static/assets/modules/auth/transparent/a01-login-scroll-frame-v1.png`
- 标题分隔:`static/assets/modules/auth/opaque/a01-title-divider-v2.png`
- 手机图标:`static/assets/modules/auth/transparent/a01-icon-phone-v1.png`
- 密码图标:`static/assets/modules/auth/transparent/a01-icon-lock-v1.png`
- 睁眼图标:`static/assets/modules/auth/transparent/a01-icon-eye-open-v1.png`
- 闭眼图标:`static/assets/modules/auth/transparent/a01-icon-eye-closed-pupil-v2.png`
- 短信验证码图标:`static/assets/modules/auth/transparent/a01-icon-sms-code-v2.png`
- 卷轴祥云主按钮:`static/assets/foundation/transparent/a01-scroll-primary-v3.png`
- 卷轴祥云微信按钮:`static/assets/foundation/transparent/a01-scroll-secondary-v3.png`
- 卷轴祥云 Toast`static/assets/foundation/transparent/a01-scroll-toast-v3.png`
- 卷轴祥云安全验证弹窗:`static/assets/modules/auth/transparent/a01-scroll-dialog-v3.png`
- 最新可跨电脑查看的代表图:`docs/design/screens/handoff/2026-07-16/A01-current-password-sms-contact-824x915.png`
`static/assets/modules/auth/transparent/a01-icon-sms-code-v1.svg``a01-icon-verification-v1.png` 等未引用候选仍可能存在于工作区。当前不要顺手清理;页面样式全部完成后再单独做文档与资产清理。
### 4.3 最新验证事实
- `tests/a01-a02-ui-contract.ps1` 已要求页面引用 `a01-icon-sms-code-v2.png`,并禁止回退到勾选图标和临时 SVG。
- 最新真实运行截图已确认短信验证码行显示棕色消息气泡三点图标。
- 2026-07-16 用户已在浏览器中逐状态确认 A01 的密码默认、密码掩码、密码明文、短信默认、字段错误 Toast、协议错误和协议已勾选共 7 类视觉状态;顶部 Logo 缩小为 `184×221rpx` 后也已确认。以上子项标记为“用户视觉审核通过”。
- 用户同时决定:真实滑动验证的滑块、轨道、拼图和结果状态使用接口组件自带样式,延期到接口接入阶段审核;当前卷轴安全验证弹窗只是流程占位,不是最终视觉,不计入通过项。
- A01 整页仍缺少本轮用户最终确认;当前浅色国风主题的四档尺寸完整复核和 Android 真机复核均不能写成已通过。深色与跟随系统已由用户决定延期到下一版本,不是基础版本验收门槛。
- 旧的 `A01-password-icons-412x915.png` 实际仍是短信 Tab 且使用旧临时图标,不能当密码态证据。
### 4.4 最新资产生产决策
- 2026-07-16 用户批准将现有 Node.js/Sharp 雏形升级为混合资产流水线:Node.js 负责 manifest、编排、代码引用和 Chrome CDP 运行验证;Sharp 负责确定性裁切、等比缩放、格式和压缩;Python/Pillow(必要时 OpenCV)负责 Alpha、白边、绿边、预乘 Alpha 和像素边缘质量。唯一规范见 `docs/design/设计资产生产流水线规范.md`
- 后续页面采用混合落地:代码负责布局、文字、间距、状态和普通结构;真实位图负责复杂水墨、品牌装饰和代码无法忠实表达的视觉;可复用装饰框只有通过 H5/Android 验证后才进入九宫格方案。禁止把所有元素机械做成整张位图,也禁止用临时 CSS/SVG 伪造复杂资产。
- schema v1 仍只是旧预览雏形,统一 `fit: 'fill'`、基础尺寸/Alpha 检查和代码组合预览不足以证明资产质量。2026-07-16 已新增 manifest v2、`Pillow==12.3.0`、Node/Python 重建与质量脚本;A01 卷轴祥云四件套 v3 已通过自动质量门、静态契约、资产审计和 H5 四尺寸检查。跨电脑、Android/HBuilderX 与用户正式验收仍未完成。
- 第一试点从登录/微信双按钮扩展为用户选定并批准的“方案 2:卷轴祥云”四件套。当前实际资产为 `a01-scroll-primary-v3.png`1866×276)、`a01-scroll-secondary-v3.png`1866×300)、`a01-scroll-toast-v3.png`1770×246)和 `a01-scroll-dialog-v3.png`(1860×1560)。主/次按钮和弹窗等比接入;Toast 使用固定切片 `border-image` 自适应文案宽度。文字、微信图标和交互仍由代码承载。旧原图与 v2 试点资产保留不覆盖。试点未获 Android 与用户整页确认前,不推广到其他页面。
- 用户已决定停止扩展 PhotoshopPSD 生产链,改用“ImageGen 原始母图 + 纯代码处理与渲染”的新流水线。
- 2026-07-16 用户最新决定:不保留 `design-pipeline/node_modules/``design-pipeline/generated/``docs/design/assets/a01-vnext/candidates/``docs/design/assets/a01-vnext/review/`;这些目录既不进入 Git,也不留在当前电脑。Photoshop 历史脚本仍作为文字/实现历史保留,但新流水线不得依赖已删除的 PSD、候选图或审阅中间稿。
- 新流水线使用独立目录,以 JSON 作为页面图层、状态、尺寸和导出路径的唯一机器可读所有者;Node.js 负责组合,Sharp 负责裁切、透明处理、缩放、体积检查和 PNG 导出。
- A01 的稳定输入已迁移为 Git 中正式保留的 `static/assets/modules/auth/` 运行资产;`design-pipeline/manifests/a01.json` 的每个 `source``output` 指向同一正式资产,流水线负责验证这些正式资产并生成多尺寸预览。这样任何电脑只需仓库内容和 npm 依赖即可运行,不需要本机候选图或 Photoshop。
- 同一批源资产同时生成独立页面资产、四尺寸设计预览和复杂状态联系表,避免“设计图与页面资产来自两套像素”。设计预览仍只是候选证据,最终必须进入 uni-app 并获取真实运行截图。
- 先只以 A01 验证完整流水线;A01 未经用户确认前不推广到其他 52 页,也不清理旧实验文件。
- 基础版本只支持当前浅色国风主题;深色与跟随系统整体延期到下一版本。
### 4.5 新电脑恢复代码资产流水线
仓库必须保留以下可复现文件:
- `docs/design/设计资产生产流水线规范.md`
- `design-pipeline/package.json`
- `design-pipeline/package-lock.json`
- `design-pipeline/manifests/a01.json`
- `design-pipeline/scripts/build-a01.mjs`
- `static/assets/modules/auth/` 中清单引用的正式资产
- `tests/a01-code-pipeline-contract.ps1`
新电脑在项目根目录执行:
```powershell
node --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 雏形的恢复命令。manifest v2 与 Python 质量门的换机命令已写入 `docs/design/设计资产生产流水线规范.md`;本机已验证,但新电脑必须真实安装并执行后才能宣称跨电脑复现通过。
预期输出分别包含 `A01-CODE-PIPELINE BUILD PASS``A01-CODE-PIPELINE-CONTRACT PASS`。构建结果生成在被忽略的 `design-pipeline/generated/a01/`;它只用于本机预览和验证,不得提交。需要再次腾出空间时可以删除 `design-pipeline/node_modules/``design-pipeline/generated/`,下次重新执行 `npm.cmd ci` 与构建命令即可。不得把已删除的 `candidates/``review/` 恢复为清单输入。
## 5. 下一步严格执行顺序
### 第一步:恢复环境与确认文件完整
```powershell
python --version
node --version
git status --short
```
项目没有可依赖的 `package.json` 启动脚本。使用 HBuilderX 启动 H5,确认:
```text
http://localhost:5173/#/pages/auth/a01-entry
```
换机前用户需要自行把当前修改和未跟踪的最终资产加入 Git 并同步;GPT 不执行 Git 暂存、提交、推送或上传。特别确认本节列出的 A01 PNG 资产、测试、本文件和交接截图已被用户纳入 Git,否则换电脑后会缺图。
### 第二步:先让用户从 A01 开始审核现有候选
1. 打开 A01 密码登录态,确认手机、锁、闭眼/睁眼图标在真实尺寸下清晰且风格统一。
2. 打开短信登录态,使用当前生成的消息气泡三点图标;不要恢复锁、勾选或第三方临时 SVG。
3. 对照当前选定方向检查整体层级:红色宗祠顶部、完整宣纸卷轴登录区、标题、Tab、输入区、主按钮、微信入口、注册与协议必须形成一个整体,不能只修局部 CSS。
4. 优先修用户在审核时指出的明显问题;返工只触碰当前审核页,避免相邻页面一起漂移。
5. 基础版本只完成当前浅色国风主题;深色与跟随系统延期到下一版本,不在 A01 本轮验收项内实施。
6. 内部检查 320×568、360×640、360×800、412×915;默认只向用户展示一张代表图。密码/短信等复杂状态用一张联系表,不连续发送大量对比图。
7. 用户明确确认 A01 通过后,才把 `docs/验收规划.md` 中 A01 从 `[~]` 改为 `[x]` 并冻结;否则保持 `[~]`,明确返工时改 `[!]`
### 第三步:52 页基础候选已覆盖;用户审核时以当前审核页优先
截至 2026-07-16`pages.json` 中 52 个活动页面均已有基础内部 H5 样式候选,但仍全部为 `[~]`,不表示用户已验收。G 系列以 G01 为风格母体,T、F、R、N、M 已形成同一浅色国风主题下的独立模块背景;A 系列按钮、弹窗、Toast 和 Loading 为全局控件标准。
用户下一活动审核页是 `G01 我的家谱`,当前没有未施工页面。若用户开始逐页审核或指出返工项,只处理用户当前指定页面;只有用户明确说“通过”后才能把活动页面改为 `[x]` 并冻结。A06 不在该队列内,其源码、测试和证据保留供未来恢复。
真实入口优先。开发者直达路由只用于排错,不能冒充流程可达证据。不同用户身份、空态、加载、失败、权限、审核中、被拒绝、已退出/移除等状态必须在同一页面验收项下覆盖。
## 6. 必须使用的技能与触发时机
每次调用技能前在中文进度消息中告诉用户“正在用什么、为什么”。
| 技能 | 必须使用的场景 | 本项目的正确做法 |
| --- | --- | --- |
| `product-design:index` | 开始设计、审视、复刻或评价页面时 | 先选择正确的产品设计流程,不能把任务当成普通 CSS 调整 |
| `product-design:audit` | 审核已运行页面或完整用户流程时 | 必须先获取真实运行截图,再根据截图报告层级、可用性、适配和无障碍问题 |
| `product-design:ideate` | 没有明确视觉真源,需要探索多个设计方向时 | 给可比较的视觉方案,用户选定后再实施;不在代码里盲试方向 |
| `product-design:image-to-code` | 已有选定截图、效果稿或设计图,需要一比一落地时 | 以选定图为视觉真源,做响应式还原,再用真实截图比对 |
| `imagegen` | 缺少完整位图视觉资产时 | 只生成缺失资产;参考现有页面风格,验证尺寸、Alpha、边缘和缩小后的清晰度后再接入 |
| `superpowers:brainstorming` | 新模块、复杂交互、用户流程或视觉方向尚未明确时 | 先把目标、状态、身份、错误路径和验收标准问清楚 |
| `superpowers:writing-plans` | 多步骤页面或模块准备实施时 | 写成可勾选、可验证的小步骤;本项目禁止加入提交 Git 的步骤 |
| `superpowers:test-driven-development` | 修改页面行为、路由、状态合同或可审计结构前 | 先改最小契约测试并看到 RED,再做最小实现至 GREEN |
| `superpowers:systematic-debugging` | 截图、构建、路由、样式、测试或热更新异常时 | 先稳定复现并定位根因;不能靠删测试、乱改 rpx/px 或堆覆盖样式掩盖问题 |
| `superpowers:verification-before-completion` | 任何“完成、修好、通过”表述前 | 重新运行受影响测试、真实截图复核和 `git diff --check`;没有证据就只能报告未验证 |
截图审视时必须调用 Product Design 审核流程;只有看源码不能判断页面是否好看。图像生成只用于缺失的完整位图资产,已有可用资产不重复生成。
## 7. 截图与视觉证据规则
先启动独立 Chrome 调试实例:
```powershell
$chrome = "$env:ProgramFiles\Google\Chrome\Application\chrome.exe"
Start-Process -FilePath $chrome -WindowStyle Hidden -ArgumentList `
'--remote-debugging-port=9222', `
"--user-data-dir=$env:TEMP\jiapu-chrome-debug", `
'http://localhost:5173/#/pages/auth/a01-entry'
```
确认调试页:
```powershell
Invoke-RestMethod 'http://127.0.0.1:9222/json/list' | ConvertTo-Json -Depth 3
```
A01 短信态截图示例:
```powershell
node scripts/capture-chrome-page.js `
'http://localhost:5173/#/pages/auth/a01-entry' `
'#app' `
'docs/design/screens/runtime/<日期>/A01-sms-412x915.png' `
412 915 sms-tab
```
- 新截图先放 `docs/design/screens/runtime/<日期>/`;该目录默认不进入 Git。
- 用户确认需要跨电脑保留时,只复制一张代表图或一张联系表到 `docs/design/screens/handoff/<日期>/` 并更新索引。
- 不把运行截图放进 `static/assets/` 当页面资源。
- 默认每页展示一张代表图;复杂状态展示一张联系表。
- 历史 before/after、多尺寸和废稿只在定位问题时从视觉证据索引展开。
- H5 Chrome 截图是候选证据,不能替代最终 Android/HBuilderX 真机或模拟器复核。
## 8. 页面样式验收的全局底线
- 不是简单改 CSS;必须同时考虑用户流程、身份、错误操作、状态反馈、弹窗、加载、空态、主题、适配和性能。
- 所有提示、确认、结果、底部选择和加载效果使用项目自定义组件;禁止直接展示原生 `uni.showToast``uni.showModal``uni.showLoading``uni.showActionSheet`
- 基础版本固定使用当前浅色国风主题,不展示未生效的主题入口;深色与跟随系统延期到下一版本,并在升级时另建全局主题合同与冻结页面回归计划。
- 列表接近底部时使用项目自定义“正在展开更多……”视觉;失败保留已加载内容并允许重试;结束显示“已阅至末尾”。
- 兼容 320×568、360×640、360×800、412×915、系统字体放大、状态栏、安全区、软键盘和返回手势。
- 动画只使用 `transform``opacity` 等低成本属性;避免大面积高频重绘、同步阻塞、重复图片解码和无边界监听。
- 代码必须精准、可读、方便修改;禁止压缩代码、复制堆叠样式、无意义抽象和难以解释的补丁。
- 关键状态、兼容处理和非显然逻辑写中文注释;不要给一眼能看懂的代码堆无用注释。
- 接口文档只用于理解功能、字段和状态位置;当前禁止接接口或伪造接口已通过。
## 9. 禁止事项
- 不使用 worktree。
- 不使用多代理或子代理。
- 不执行 `git add``git commit``git push`、上传、`git reset``git checkout`
- 不删除、覆盖或清理用户已有未提交改动。
- 不因“整理代码”顺手修改当前验收项以外的页面。
- 不对接接口,不修改接口合同,不打 Android 包。
- 不用原生 UniApp 弹窗、Toast、Loading 或 ActionSheet 作为最终视觉。
- 不用 CSS 伪造本应是完整位图的卷轴、牌匾、按钮、卡片或装饰面。
- 不把直接路由打开当作用户流程已经可达。
- 不把内部测试、GPT 审视、旧 QA 或 H5 截图写成用户已经验收。
- 不连续展示大量相似截图。
- 不在页面样式验收完成前集中清理 `docs/``scripts/``tmp/``tests/` 或未引用候选资产。
## 10. 每轮完成前验证
2026-07-16 已取得的内部验证证据如下(均不等于用户验收或 Android 通过):
- 静态合同通过:A01/A02、A04、A05、A06 封存合同、G01、G03、G05、G06、G08-G10、G11-G12、T01、T03-T08,以及截图脚本和整页视觉合同。
- H5 运行时 smoke 分别通过:A01、A04、A05、G01、G03、G05、G06、G08-G10、G11-G12、T01、T03-T08A06 因路由封存明确输出 `SKIP archived route`。G05 与 T03-T08 在串联 CDP 测试中曾因页面目标重建瞬时失败,独立重跑均已通过;不要把该诊断噪声写成功能缺陷,也不要隐瞒独立复核方式。
- 实际活动路由统计为 52;A06 源码保留但未注册。
- 长期代表图集中在 `docs/design/screens/handoff/2026-07-16/`,并已登记到 `docs/design/视觉证据索引.md`;这些仍是 H5 候选,Android/HBuilderX 真机或模拟器复核尚未完成。
- 本轮全模块基础视觉的 12 组专项静态合同、10 组无截图 H5 运行 smoke、52 路由合同、编译审计、Vue 3 入口合同、文档合同和清单合同已通过;五张模块长背景可重复构建,输出尺寸与 SHA-256 和交接清单一致。
- 两个旧总合同仍与最新权威决定冲突,未为绿灯而放宽:`core-flow-contract.ps1` 仍要求视觉阶段的 G03 调用 `appApi.createPerson``foundation-asset-audit.ps1` 仍把已确认并全局采用的 A 系列 `-v1/-v2/-v3` 资产统一判作临时名。当前专项 G03 静态/运行合同和全局 A 系列视觉合同均已通过。
- 仓库交接截图体积合同未通过,具体数据与处置边界见第 12 节。
先跑当前页面的聚焦验证。A01 当前最小集合:
```powershell
powershell.exe -NoProfile -ExecutionPolicy Bypass -File tests/a01-a02-ui-contract.ps1
node scripts/capture-chrome-page.js `
'http://localhost:5173/#/pages/auth/a01-entry' `
'#app' `
'docs/design/screens/runtime/<日期>/A01-sms-412x915.png' `
412 915 sms-tab
git diff --check
```
页面准备提交用户审核时,还需完成:
1. 受影响的 PowerShell 契约测试。
2. 适用的运行时 smoke。
3. 真实路由截图并人工查看,不只确认文件生成。
4. 四档尺寸内部复核。
5. 当前浅色国风主题及状态栏配色复核;深色与跟随系统不在基础版本范围内。
6. `git diff --check`
7. 用户明确确认。
任何一项没有执行,都必须明确写“未验证”,不得使用“已完成、已修好、已通过”。CRLF 警告本身不等于失败;真正的空白错误或非零退出码才算失败。
## 11. 换机前用户需要自行确认的 Git 文件
GPT 不操作 Git。用户切换电脑前应自行确认以下内容已纳入版本控制并同步:
- `pages.json`
- `pages/auth/a01-entry.vue`
- A02 删除记录及相关路由/测试收敛文件
- `tests/a01-a02-ui-contract.ps1`
- `tests/a02-route-removal-contract.ps1`
- `docs/验收规划.md`
- `docs/交接记录.md`
- `docs/design/视觉证据索引.md`
- `design-qa.md`
- `docs/design/screens/handoff/2026-07-16/A01-current-password-sms-contact-824x915.png`
- `docs/design/screens/handoff/2026-07-16/` 中 A01 至 G12 的当前代表图
- A01 当前页面实际引用的全部新增 PNG 资产
- 2026-07-16 新增的各页面聚焦合同、运行时 smoke、截图脚本和实施计划
- `static/vendor/tac/`(后续行为验证功能阶段需要)
`docs/design/screens/runtime/``tmp/` 和本机 Chrome 调试目录不能作为换机后的唯一资料来源。最终运行资产必须在 `static/assets/`,长期代表证据必须在 `docs/design/screens/handoff/`,决策与下一步必须写进本文件或 `docs/验收规划.md`
项目全部页面、接口与 Android 复核结束时,必须把本文件整理为最终交接文档,至少记录:最终活动路由与验收数量、A06 等封存页面及恢复步骤、延期到接口阶段的问题、Android/HBuilderX 验证结论、长期证据索引、遗留风险,以及交接当时已有修改和未跟踪内容。A06 恢复时必须先由产品确认独立阻断页仍有必要,再恢复路由、接入真实登录结果与恢复服务,并重新完成四档 H5、Android/HBuilderX 和用户审核。
## 12. 仓库体积与本地缓存规则
### 2026-07-16 下班前资产与清理交接
- G01 已保存 A/B/C 历史母版与旗舰长屏母版;用户已选择旗舰长屏并接入为 9 个 G 页面的公共背景,且确认共享图片画层使用 28% 不透明度,历史输入/输出继续保留,不删除。页面“上方固定、下方列表独立滚动”已按用户确认方向形成内部 H5 候选,用户已查看实际 H5 页面并确认背景浓度,五档运行证据已更新;G01 整页仍未验收,Android/HBuilderX 仍待复核。
- 跨电脑重建入口为 `npm.cmd --prefix design-pipeline run build:g01-background-candidates`,完整环境、依赖、输出哈希与可复现边界见 `docs/design/G01_列表背景候选与换机重建.md`
- 上传前审计只删除了两张无任何引用且已被新版证据替代的 2026-07-15 A01 旧全页截图,共减少 3,590,742 字节;精确清单见 `docs/design/上传前文件清理审计_2026-07-16.md`
- 2026-07-17 用户确认上传前清理后,handoff 专项目录为 30 个文件、16,899,601 字节;连同 `docs/design/screens/` 根目录保留的四档 A01 栅格图和 G01 v5 稿,全目录为 35 个文件且低于 20MB,满足仓库截图合同。20 张被新版联系表/正式母版替代的 handoff 旧图、7 张被正式 PSD/当前证据替代的早期整页稿已删除并迁移长期引用。生成母版、清单、脚本、测试、`requirements.txt` 和 APP 运行图均保留。
2026-07-16 推送失败根因已处理:原本地提交包含约 **229,085,446 字节**新 Blob,混入嵌套 `node_modules`、生成预览、4 个大型 PSD 和候选中间 PNG,压缩上传包达到 81.39MiB 后被远端断开。清单改为正式运行资产自包含后,上述四类目录已从提交和本机删除;最新待推送提交的新 Blob 总量复核约 **20,518,032 字节**。旧大对象可能暂时存在于本机 `.git` reflog/对象库,但不再由最新提交引用,也不会随本次正常推送上传;不要为清理它们执行 reset 或手工删除 `.git` 对象。
2026-07-16 最新检查:`tests/repository-handoff-size-contract.ps1` **未通过**,报告 `too many handoff screenshots: 217`(该次检查发生在新增 T04 代表图之前)。该脚本当前统计了 `docs/design/screens/` 下包含已忽略 runtime 在内的全部截图;最终单独统计长期交接目录 `docs/design/screens/handoff/`**52 个文件、33,477,839 字节(约 31.93MB**,同样超过合同的 35 个文件/20MB门槛。本轮遵守用户禁令,没有删除、覆盖或清理任何历史证据、候选资产、runtime、tmp 或测试,也没有为了变绿而擅自放宽阈值。换机后应先让用户决定历史证据的归档策略,再单独处理体积合同;在此之前必须如实保留失败状态。
2026-07-15 已完成一次安全瘦身:项目总占用从约 1.03GB 降到约 232.76MB`tmp/` 从 922.89MB 降到 22.18MB。被清理的是 7 组可再生成的 `tmp/chrome-qa-*` 无头 Chrome 用户目录,没有删除源码、最终资产、代表证据或 ImageGen 源稿。
- `.git` 当前约 101.64MB`git fsck --full` 退出码为 0,只有可忽略的 dangling tree/blob,没有对象损坏报告。
- 当前受版本控制的最大单文件约 2.91MB,不存在单文件 100MB 上传阻断。
- 本轮需要用户纳入 Git 的新增规划、A01 资产、TAC 和代表图合计约 4.73MB。
- `.gitignore` 已忽略 `/tmp/``/unpackage/`、任意层级 `node_modules/``design-pipeline/generated/`、A01 `candidates/`、A01 `review/``/docs/design/screens/runtime/``/.superpowers/` 和临时 G01 审计图。
- 后续启动截图 Chrome 时,`--user-data-dir` 必须放在 `$env:TEMP`,禁止再把 Chrome 用户目录放进项目 `tmp/`
- `tmp/` 只允许保存短期诊断图和 ImageGen 中间源,最终资产必须进入 `static/assets/`,换机代表证据必须进入 `docs/design/screens/handoff/`
- 不要执行 `git add .` 后盲目提交;用户应先用 `git status --short --ignored` 确认缓存目录仍为 `!!` 忽略状态。
- 当前不重写 Git 历史、不执行 `git gc`、不删除 `.git` 内的孤立索引;若远端仍拒绝推送,应保留完整错误信息,再按远端限制单独排查,不能用 reset 或重建仓库规避。