From aacd503e2f2d49b91e3073de4ac1b7b2884c2904 Mon Sep 17 00:00:00 2001 From: rain Date: Mon, 13 Jul 2026 11:22:52 +0800 Subject: [PATCH] docs: plan A01 login guide --- .../plans/2026-07-13-a01-login-guide.md | 319 ++++++++++++++++++ 1 file changed, 319 insertions(+) create mode 100644 docs/superpowers/plans/2026-07-13-a01-login-guide.md diff --git a/docs/superpowers/plans/2026-07-13-a01-login-guide.md b/docs/superpowers/plans/2026-07-13-a01-login-guide.md new file mode 100644 index 0000000..c1ff9de --- /dev/null +++ b/docs/superpowers/plans/2026-07-13-a01-login-guide.md @@ -0,0 +1,319 @@ +# A-01 启动/登录引导页 Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use `superpowers:executing-plans` to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** 新增不接接口的 A-01 登录方式选择页,以账号密码为主入口,并要求用户主动勾选协议后才允许进入已设计完成的下一页。 + +**Architecture:** A-01 使用独立的 `pages/auth/entry.vue`,不改动现有 `pages/auth/login.vue` 的临时密码登录骨架,避免破坏现有核心流程合同。页面状态只包含 `consented` 和点击守卫;视觉由现有本地纸纹、朱砂红头、祠堂线描与山水资产组合,微信图标以本地透明 PNG 引入。A-02/A-03 的最终跳转仅在两页都完成设计并注册路由后接通。 + +**Tech Stack:** uni-app、Vue 3 ` +``` + +本任务阶段不得引入 `appApi`、`calcMD5`、真实登录、真实微信授权或不存在的 A-02/A-03 路由;跨页跳转在 Task 5 的执行门槛满足后替换。 + +- [ ] **Step 3: 写入页面主体,保持三种入口与显式复选框** + +```vue + +``` + +- [ ] **Step 4: 完成最小 SCSS 外观** + +要求:用 `background-image` 组合 `header-cinnabar-texture-v2.jpg`、`paper-rice-texture-v2.jpg`;红头可见祠堂线描;纸面底部可见但低对比的 `footer-mountain-bamboo.png`;按钮高度至少 `88rpx`;不使用 CSS Grid、`gap`、`clip-path`、滤镜或外部 URL。协议区域不得使用“登录即表示同意”文案,未选中复选框只显示古金圆圈,选中后显示朱砂对勾。 + +- [ ] **Step 5: 运行合同测试,确认通过** + +Run: `powershell -ExecutionPolicy Bypass -File tests\a01-login-guide-contract.ps1` +Expected: `PASS A-01 login guide contract`. + +- [ ] **Step 6: 做一次静态构建健康检查** + +Run: `powershell -ExecutionPolicy Bypass -File tests\compile-audit.ps1` +Expected: `PASS compile audit`. + +- [ ] **Step 7: 提交独立 A-01 页面** + +```powershell +git add pages/auth/entry.vue pages.json tests/a01-login-guide-contract.ps1 +git commit -m "feat: add A01 login guide" +``` + +### Task 4: 视觉验收与设计状态记录 + +**Files:** +- Modify: `docs/规划.md` +- Test: `tests/a01-login-guide-contract.ps1`, HBuilderX Android 小屏预览 + +**Interfaces:** +- Consumes: Task 3 完成的页面与合同 +- Produces: D2 阶段下 A-01 的真实设计状态 + +- [ ] **Step 1: 在 HBuilderX 中预览 `pages/auth/entry` 的 `360 × 800dp` 画面** + +检查:红头、标题、三个按钮和未勾选协议同时可见;账号密码为唯一红色主操作;宣纸与山水不压住协议;没有底部 Tab。 + +- [ ] **Step 2: 手动验证两种协议状态** + +1. 初始未勾选,分别点击三个入口,均显示“请先阅读并同意相关协议”,且不跳转。 +2. 勾选后复选框显示朱砂对勾;三个入口只显示本地确认提示,不请求网络。 + +- [ ] **Step 3: 仅在上述视觉和手动检查通过后更新 `docs/规划.md`** + +将 `A-01 启动 / 登录引导页` 改为“视觉完成(已验收)”;D2 保持“进行中”,因为 A-02 至 A-06 尚未完成。 + +- [ ] **Step 4: 重跑最终验证** + +Run: + +```powershell +powershell -ExecutionPolicy Bypass -File tests\a01-login-guide-contract.ps1 +powershell -ExecutionPolicy Bypass -File tests\compile-audit.ps1 +powershell -ExecutionPolicy Bypass -File tests\uni-scss-injection.ps1 +``` + +Expected: 三条命令均输出 `PASS`. + +- [ ] **Step 5: 提交验收记录** + +```powershell +git add docs/规划.md +git commit -m "docs: mark A01 visual review" +``` + +### Task 5: D2 跨页设计完成后的路由接通(执行门槛任务) + +**Precondition:** A-02 与 A-03 的设计说明、页面文件和 `pages.json` 路由均已通过各自视觉验收;否则此任务不得开始。 + +**Files:** +- Modify: `pages/auth/entry.vue` +- Test: `tests/a01-login-guide-contract.ps1`(扩展路由断言) + +**Interfaces:** +- Consumes: A-02 的已验收密码页路由;A-03 的已验收验证码/微信回跳页路由 +- Produces: `entryRoutes`,键固定为 `password`、`phone`、`wechat` + +- [ ] **Step 1: 扩展合同,要求所有目标路由已在 `pages.json` 注册** + +```powershell +foreach ($route in @('pages/auth/password-login', 'pages/auth/phone-login')) { + if ($route -notin $paths) { throw "Missing approved auth target route: $route" } +} +``` + +- [ ] **Step 2: 将 Task 3 的本地确认提示替换为唯一的目标映射** + +```js +const entryRoutes = { + password: '/pages/auth/password-login', + phone: '/pages/auth/phone-login', + wechat: '/pages/auth/phone-login?source=wechat' +} + +const enterLogin = (entry) => { + if (!consented.value) { + uni.showToast({ title: '请先阅读并同意相关协议', icon: 'none' }) + return + } + uni.navigateTo({ url: entryRoutes[entry] }) +} +``` + +模板调用固定为 `enterLogin('password')`、`enterLogin('phone')`、`enterLogin('wechat')`。不得在 A-01 增加任何接口调用或注册入口。 + +- [ ] **Step 3: 运行合同和 A-02/A-03 各自的视觉合同** + +Run: `powershell -ExecutionPolicy Bypass -File tests\a01-login-guide-contract.ps1` +Expected: `PASS A-01 login guide contract`. + +- [ ] **Step 4: 提交跨页接通** + +```powershell +git add pages/auth/entry.vue tests/a01-login-guide-contract.ps1 +git commit -m "feat: connect A01 auth routes" +``` + +## Self-Review + +- **规格覆盖:** Task 1 和 Task 3 覆盖三入口、主次层级、本地资产、无接口和显式协议;Task 4 覆盖小屏视觉与两种协议状态;Task 5 覆盖 A-02/A-03 的跳转契约且被 D2 设计完成门槛锁住。 +- **占位检查:** 没有未落实的实现步骤。Task 2 的来源 URL 是执行时取得的审计事实;没有可验证来源即停止该任务,不得提交资产。 +- **命名一致性:** 页面状态固定为 `consented`,守卫固定为 `enterLogin`,跨页唯一映射固定为 `entryRoutes`;Task 1 与 Task 5 的测试和实现使用同一命名。