Files
jiapuapp/docs/交接记录.md
T
2026-07-16 07:58:53 +08:00

335 lines
23 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 后的唯一接管入口。
> 当前阶段:只做页面样式与视觉流程验收;不对接接口,不做功能验收。
> 当前施工停点:A01 至 T04 共 15 页已有内部 H5 候选,均尚未通过用户验收;下一页是 T07 成员目录。
## 1. 接管后先复述的准确停点
- `pages.json` 当前实际注册 **53 条最终路由**
- A02 已删除并合入 A01;不存在需要保留的 A02 兼容入口。
- `docs/验收规划.md` 当前统计为:**53 个待审核、0 个已验收、0 个返工标记**。
- 历史上曾标记通过的 A01、A02、A04、A05、A06、G01、G03 只保留为历史视觉证据,**本轮全部重新审核**。
- 当前没有任何页面处于视觉冻结状态;只有用户在本轮明确说“通过”后,对应页面才能改为 `[x]` 并冻结。
- 2026-07-16 已按用户“继续按验收规划自主推进”的最新授权,完成 **A01、A04、A05、A06、G01、G03、G05、G06、G08、G09、G10、G11、G12、T01、T04** 的内部 H5 候选、聚焦合同和运行时检查;这些结果都只是待审候选,不能写成“用户已验收”或“已冻结”。
- A01 当前候选已落实:闭眼图标保留中心瞳孔;密码行使用项目现有锁图标;短信验证码输入图标使用自生成的“消息气泡 + 三点”;不得恢复勾选图标或临时第三方 SVG。密码/短信两态代表联系表为 `docs/design/screens/handoff/2026-07-16/A01-current-password-sms-contact-824x915.png`
- 当前施工停在 **T04 新增亲属之后**,下一页严格按 `docs/验收规划.md` 进入 **T07 成员目录**。T01 收敛时删除了未注册路由但仍被 Git 跟踪的旧占位文件 `pages/tree/t02-tree-states.vue`;T04 复核时把共用成员表单残留的原生 `uni.showModal` 替换为项目自定义冲突说明层。用户明早仍需从 A01 开始逐页审核;未明确说“通过”的页面一律保持 `[~]`
如果其他文档仍写“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. `design-qa.md`(历史内部 QA 证据不等于本轮用户验收)
阅读后先运行:
```powershell
git status --short
```
必须保留全部已有未提交改动。不要因为文件是未跟踪状态就删除,也不要用旧提交覆盖当前工作区。
随后先向用户复述:53 条最终路由、53 页全部待审核、当前无冻结页、内部候选施工停在 T01 之后、用户逐页审核仍从 A01 开始、下一施工页是 T04,以及准备使用的技能。复述准确前不要继续修改页面。
## 3. 文档权威顺序
发生冲突时按以下顺序判断:
1. 用户在当前对话中的最新明确决定。
2. `docs/交接记录.md`:真实停点、风险、下一步。
3. `docs/验收规划.md`:53 页流程顺序、状态合同、视觉验收规则和勾选状态。
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`
- 最新可跨电脑查看的代表图:`docs/design/screens/handoff/2026-07-15/A01-current-sms-generated-412x915.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。
- 最新真实运行截图已确认短信验证码行显示棕色消息气泡三点图标。
- A01 整页仍缺少本轮用户最终确认;当前浅色国风主题的四档尺寸完整复核和 Android 真机复核均不能写成已通过。深色与跟随系统已由用户决定延期到下一版本,不是基础版本验收门槛。
- 旧的 `A01-password-icons-412x915.png` 实际仍是短信 Tab 且使用旧临时图标,不能当密码态证据。
### 4.4 最新资产生产决策
- 用户已决定停止扩展 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 新电脑恢复代码资产流水线
仓库必须保留以下可复现文件:
- `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
```
预期输出分别包含 `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]` 并冻结;否则保持 `[~]`,明确返工时改 `[!]`
### 第三步:无人审核期间从 T01 继续施工;用户审核时以当前审核页优先
截至 2026-07-16,以下 15 页已生成内部候选并完成聚焦检查,但仍全部为 `[~]`
```text
A01 登录
→ A04 注册
→ A05 重置密码
→ A06 阻断登录状态
→ G01 我的家谱
→ G03 创建家谱/录入始祖
→ G05 家谱总览
→ G06 搜索/邀请码加入
→ G08 加入申请
→ G09 我的申请
→ G10 入谱审核
→ G11 家谱设置
→ G12 字辈诗
→ T01 世系树
→ T04 新增亲属
```
下一施工页是 `T07 成员目录`,随后继续 T03、T05 等验收表顺序。若用户开始逐页审核或指出返工项,立即停下后续施工,回到用户当前指定页面;只有用户明确说“通过”后才能把该页改为 `[x]` 并冻结。
真实入口优先。开发者直达路由只用于排错,不能冒充流程可达证据。不同用户身份、空态、加载、失败、权限、审核中、被拒绝、已退出/移除等状态必须在同一页面验收项下覆盖。
## 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、A06、G01、G03、G05、G06、G08-G10、G11-G12、T01、T03-T08。G05 与 T03-T08 在串联 CDP 测试中曾因页面目标重建瞬时失败,独立重跑均已通过;不要把该诊断噪声写成功能缺陷,也不要隐瞒独立复核方式。
- 实际路由统计为 53`git diff --check` 退出码为 0,仅有 CRLF 警告。
- 长期代表图集中在 `docs/design/screens/handoff/2026-07-16/`,并已登记到 `docs/design/视觉证据索引.md`;这些仍是 H5 候选,Android/HBuilderX 真机或模拟器复核尚未完成。
- 仓库交接截图体积合同未通过,具体数据与处置边界见第 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-15/A01-current-sms-generated-412x915.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`
## 12. 仓库体积与本地缓存规则
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 或重建仓库规避。