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

281 lines
17 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
> 用途:更换电脑、重新打开 Codex/GPT 后的唯一接管入口。
> 当前阶段:只做页面样式与视觉流程验收;不对接接口,不做功能验收。
> 当前工作页:A01 登录页,尚未通过用户验收。
## 1. 接管后先复述的准确停点
- `pages.json` 当前实际注册 **53 条最终路由**
- A02 已删除并合入 A01;不存在需要保留的 A02 兼容入口。
- `docs/验收规划.md` 当前统计为:**53 个待审核、0 个已验收、0 个返工标记**。
- 历史上曾标记通过的 A01、A02、A04、A05、A06、G01、G03 只保留为历史视觉证据,**本轮全部重新审核**。
- 当前没有任何页面处于视觉冻结状态;只有用户在本轮明确说“通过”后,对应页面才能改为 `[x]` 并冻结。
- 当前停在 **A01 登录页视觉返工**。用户认为整页与选定设计稿仍有明显差距,A01 不得写成“完成”或“通过”。
- 最新完成的局部修正是:闭眼图标保留中心瞳孔;短信验证码输入图标改为自生成的“消息气泡 + 三点”,不再复用锁、勾选或临时第三方 SVG。
- 下一步不是跳去 G05,也不是批量改其他页面;应先继续完成 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 页全部待审核、当前无冻结页、当前停在 A01、准备使用的技能、A01 的下一步。复述准确前不要继续修改页面。
## 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 且使用旧临时图标,不能当密码态证据。
## 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]` 并冻结;否则保持 `[~]`,明确返工时改 `[!]`
### 第三步:A01 通过后按真实用户流程继续
严格按 `docs/验收规划.md` 的 53 页表推进:
```text
A01 登录
→ A04 注册
→ A05 重置密码
→ A06 阻断登录状态
→ G01 我的家谱
→ G06 搜索/邀请码加入
→ G08 加入申请
→ G09 我的申请
→ G03 创建家谱/录入始祖
→ G05 家谱总览
→ 后续管理、世系、家族内容、档案、消息和个人中心
```
真实入口优先。开发者直达路由只用于排错,不能冒充流程可达证据。不同用户身份、空态、加载、失败、权限、审核中、被拒绝、已退出/移除等状态必须在同一页面验收项下覆盖。
## 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. 每轮完成前验证
先跑当前页面的聚焦验证。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/screens/handoff/2026-07-15/A01-current-sms-generated-412x915.png`
- A01 当前页面实际引用的全部新增 PNG 资产
- `static/vendor/tac/`(后续行为验证功能阶段需要)
`docs/design/screens/runtime/``tmp/` 和本机 Chrome 调试目录不能作为换机后的唯一资料来源。最终运行资产必须在 `static/assets/`,长期代表证据必须在 `docs/design/screens/handoff/`,决策与下一步必须写进本文件或 `docs/验收规划.md`
## 12. 仓库体积与本地缓存规则
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/``/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 或重建仓库规避。