Files
jiapuapp/docs/superpowers/plans/2026-07-14-remove-a03-redundant-auth-route.md
T
2026-07-14 17:36:43 +08:00

177 lines
8.3 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.
# 移除 A03 重复认证页实施计划
> **For agentic workers:** REQUIRED SUB-SKILL: Use `superpowers:executing-plans` to implement this plan task-by-task in the current workspace. 用户明确禁止子代理、worktree、Git 暂存、提交、推送与上传;不使用 `subagent-driven-development`。
**Goal:** 删除重复的 A03 手机验证码页,让 A02 的短信 Tab 成为唯一手机号验证码登录入口,并把最终路由合同从 59 条收敛到 58 条。
**Architecture:** `pages/auth/a02-login.vue` 已是短信登录的唯一所有者,不改动其可见效果。删除 A03 页面文件、路由声明和临时 `pageCatalog` 条目;页面清单只由 `tests/full-page-visual-contract.ps1` 管理,并在同轮改为 58 条。个人中心绑定手机号和真实微信授权均不在本轮实现。
**Tech Stack:** uni-app Vue 3、PowerShell 契约审计、Chrome DevTools 截图、Git 只读检查。
## Global Constraints
- A01、A02、G01 的可见效果已获用户验收,禁止修改。
- A02 的短信 Tab 是手机号验证码登录的唯一入口;A03 不保留重定向、兼容入口或重复表单。
- 绑定手机号以后属于个人中心安全设置;微信授权取消、失败、受限以后属于 A06。
- 不新增真实短信、微信授权、登录、注册或后端接口,不生成新视觉资产。
- 不执行 `git add``git commit``git push`、上传、reset 或 worktree 操作。
---
### Task 1: 先固化 A03 删除合同,再移除运行时入口
**Files:**
- Create: `tests/a03-route-removal-contract.ps1`
- Modify: `tests/full-page-visual-contract.ps1`
- Modify: `pages.json`
- Modify: `data/page-catalog.js`
- Delete: `pages/auth/a03-mobile-verify.vue`
**Interfaces:**
- Consumes: `pages.json` 的最终路径数组、`data/page-catalog.js` 的临时母版条目。
- Produces: 58 条最终路由;不存在 `pages/auth/a03-mobile-verify``a03` 目录条目或 A03 页面文件。
- [x] **Step 1: 写失败的 A03 删除合同。**
创建 `tests/a03-route-removal-contract.ps1`
```powershell
$ErrorActionPreference = 'Stop'
$root = Split-Path -Parent $PSScriptRoot
$pages = Get-Content -LiteralPath (Join-Path $root 'pages.json') -Raw -Encoding utf8 | ConvertFrom-Json
$catalog = Get-Content -LiteralPath (Join-Path $root 'data/page-catalog.js') -Raw -Encoding utf8
$a03File = Join-Path $root 'pages/auth/a03-mobile-verify.vue'
if ($pages.pages.path -contains 'pages/auth/a03-mobile-verify') { throw 'A-03 must not remain in pages.json' }
if (Test-Path -LiteralPath $a03File) { throw 'A-03 page file must be deleted' }
if ($catalog -match '(?m)^\s*a03\s*:') { throw 'A-03 catalog entry must be deleted' }
if ($pages.pages.Count -ne 58) { throw "Expected 58 final routes, found $($pages.pages.Count)." }
Write-Output 'A03-ROUTE-REMOVAL-CONTRACT PASS'
```
`tests/full-page-visual-contract.ps1` 中删除 `'pages/auth/a03-mobile-verify'`,并把 `59` 改为 `58`
- [x] **Step 2: 运行并确认红灯。**
运行:
```powershell
powershell.exe -NoProfile -ExecutionPolicy Bypass -File tests/a03-route-removal-contract.ps1
powershell.exe -NoProfile -ExecutionPolicy Bypass -File tests/full-page-visual-contract.ps1
```
预期:前者报告 A03 仍在 `pages.json`;后者报告期望 58 条、实际 59 条。
- [x] **Step 3: 最小删除旧合同。**
`pages.json` 删除整个对象:
```json
{
"path": "pages/auth/a03-mobile-verify",
"style": { "navigationStyle": "custom" }
}
```
`data/page-catalog.js` 删除整个 `a03` 单行对象,并删除 `pages/auth/a03-mobile-verify.vue`。不修改 A01、A02、A04--A06 文件。
- [x] **Step 4: 运行绿灯合同。**
运行:
```powershell
powershell.exe -NoProfile -ExecutionPolicy Bypass -File tests/a03-route-removal-contract.ps1
powershell.exe -NoProfile -ExecutionPolicy Bypass -File tests/full-page-visual-contract.ps1
powershell.exe -NoProfile -ExecutionPolicy Bypass -File tests/compile-audit.ps1
```
预期:依次输出 `A03-ROUTE-REMOVAL-CONTRACT PASS``FULL-PAGE-VISUAL-CONTRACT PASS``PASS compile audit`
### Task 2: 同步当前产品事实与旧任务边界
**Files:**
- Modify: `docs/规划.md`
- Modify: `docs/交接记录.md`
- Modify: `docs/design/视觉设计交接手册.md`
- Modify: `docs/design/A01_启动登录引导_设计记录.md`
- Modify: `docs/design/A02_账号登录_设计记录.md`
- Modify: `docs/superpowers/specs/2026-07-14-a02-agreement-control-design.md`
- Modify: `docs/superpowers/plans/2026-07-14-a02-agreement-control.md`
- Modify: `docs/superpowers/plans/2026-07-13-product-design-visual-refinement.md`
**Interfaces:**
- Consumes: `docs/superpowers/specs/2026-07-14-remove-a03-redundant-auth-route-design.md` 的已确认决策。
- Produces: 当前规划、交接和认证设计记录都只把 A02 视为验证码登录入口,并声明 A03 已删除、绑定手机号归个人中心、微信异常归 A06。
- [x] **Step 1: 更新当前范围和计数。**
`docs/规划.md` 中把最终路由数从 59 改为 58,删除 A-03 清单项,把账户模块范围改为 A01、A02、A04--A06,并把下一步改为 A04。
`docs/交接记录.md` 中把“下一步审视 A03”改为“下一步审视 A04”,并明确 A03 已删除、A02 短信 Tab 唯一承接验证码登录。
- [x] **Step 2: 更新认证职责说明。**
在交接手册和 A01/A02 设计记录中把“验证码/微信回跳归 A03”改为:验证码归 A02;微信授权取消、失败、受限归 A06;绑定手机号归个人中心后续独立页。A01 保持当前微信待接入提示,不新增跳转。
- [x] **Step 3: 标记旧 A03 计划已被取代。**
在列出的日期计划和规格中保留历史执行事实,但在开头加入一行:
```markdown
> 现行范围更新:A03 已于 2026-07-14 删除;验证码登录归 A02,绑定手机号归个人中心,微信异常归 A06。历史方案不再作为实现依据。
```
`2026-07-13-product-design-visual-refinement.md` 的认证任务中删除 A03 文件和截图要求,任务名称改为“完成认证模块 A04--A06”。
- [x] **Step 4: 文档引用审计。**
运行:
```powershell
rg -n --glob '!unpackage/**' "a03-mobile-verify|A-03.*手机验证|A03.*手机号验证码" docs pages.json data tests
```
预期:没有当前范围、运行时路径或测试合同仍把 A03 定义为手机号验证码登录;日期历史文档只有明确的“现行范围更新”说明。
### Task 3: 验证 A02 唯一入口与冻结页回归
**Files:**
- Create: `docs/design/screens/runtime/2026-07-14/A02-sms-tab-after-a03-removal-360x800.png`
- Modify: `docs/design/A02_账号登录_设计记录.md`
- Modify: `design-qa.md`
**Interfaces:**
- Consumes: `scripts/capture-chrome-page.js``sms-tab` 动作与 A02 已验收的短信 Tab。
- Produces: A02 短信 Tab 是唯一验证码登录入口的运行时证据;A01/A02 不发生可见回退。
- [x] **Step 1: 捕获并审视 A02 短信 Tab。**
运行:
```powershell
node scripts/capture-chrome-page.js "http://localhost:5173/#/pages/auth/a02-login" ".auth-page" "docs/design/screens/runtime/2026-07-14/A02-sms-tab-after-a03-removal-360x800.png" 360 800 sms-tab
```
打开保存的 PNG,接受条件:祠堂头、卷轴面板、手机号和验证码输入行、获取验证码、朱砂登录按钮均完整;不得出现 A03、CSS 通用表单卡、黑块或半渲染。
- [x] **Step 2: 记录迁移事实。**
在 A02 设计记录和 `design-qa.md` 增加本轮事实:A02 短信 Tab 是唯一入口;A03 重复页已删除;本轮截图已检查。A02 保持 `accepted`,不重新打开其视觉验收。
- [x] **Step 3: 运行最终验证。**
运行:
```powershell
powershell.exe -NoProfile -ExecutionPolicy Bypass -File tests/a03-route-removal-contract.ps1
powershell.exe -NoProfile -ExecutionPolicy Bypass -File tests/a01-a02-ui-contract.ps1
powershell.exe -NoProfile -ExecutionPolicy Bypass -File tests/a02-register-entry-contract.ps1
powershell.exe -NoProfile -ExecutionPolicy Bypass -File tests/capture-chrome-page-contract.ps1
powershell.exe -NoProfile -ExecutionPolicy Bypass -File tests/compile-audit.ps1
powershell.exe -NoProfile -ExecutionPolicy Bypass -File tests/full-page-visual-contract.ps1
git diff --check
```
预期:所有 PowerShell 脚本输出 PASS`git diff --check` 没有真实空白错误。最后报告 A03 已删除、A02 截图已审视,以及 A04 是下一步待审视页面;不声明 A04--A06 已完成。