Files
airz-uniapp/docs/superpowers/plans/2026-10-21-wechat-sms-login.md
T
hujun 2c9d3feab5 feat: 完善登录流程、UI适配及协议文档更新
本次提交包含以下修改:
1. 新增微信登录相关服务及页面逻辑,实现首次微信绑定手机号流程
2. 优化产品匹配卡片 UI,移除不必要状态显示
3. 调整首页 scroll-view 属性及 banner 背景样式
4. 完善积分规则校验逻辑,增加时区及策略格式验证
5. 更新协议草案文档,补充资料清单及功能说明
6. 修复分析结果路由路径,适配新的匹配结果页面
7. 调整品牌 Logo 安卓端字体对齐样式
2026-10-22 11:24:15 +08:00

56 lines
4.9 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.
# 微信首次绑定手机号实施计划
> 本轮用户已明确授权开发,按任务实施并审查;不再询问执行方式。后端任务由subagent-driven-development子代理执行,前端和集成由主代理负责;禁止提交、推送、发布和生产写入。
**Goal:** 微信小程序首次登录必须通过手输手机号和短信验证码绑定到统一账户,后续微信直接登录。
**Architecture:** 服务端验证微信code,以临时票据隔离未完成绑定;专用短信挑战、身份映射双唯一约束、协议确认及现有Token共同完成认证。前端复用登录页,迟到结果不写会话;未来App复用公共账户协议。
**Tech Stack:** PHP7.4、ThinkPHP/FastAdmin、MySQL5.7、Redis、uni-app x/UTS、HBuilderX5.26。
**Spec:** ../specs/2026-10-21-wechat-sms-login-design.md
## Global Constraints
- 保留全部既有未提交改动;不改生产.env,不连接生产存储,不发送真实短信/微信请求/收费模型调用。
- 在两个当前工作区承接最新状态:功能分支和仓库外逐文件快照,不从干净HEAD遗漏既有开发成果。
- 新微信/短信渠道默认关闭;Android/iOS原生微信授权不在本轮启用。
- 文本UTF-8无BOM,关键约束中文注释;不自行提交/推送/PR/部署。
## Task 1: 后端绑定闭环与隔离测试
Files: 新增微信提供方边界、服务端小程序实现、票据服务、绑定业务、v1微信控制器、关闭配置、独立身份表迁移及tests/wechat_login.php;修改application/route.php和SmsVerification用途白名单。禁止修改已有脏schema.sql及其他无关改动。
Consumes/produces: 实现Spec的三个精确JSON端点及认证结果;前端只消费该契约。
- [x] 创建缺功能失败断言并运行,记录RED。
- [x] 实现默认关闭、code2Session验证、票据及新表、绑定专用短信挑战、账户关联/新建、冲突拒绝与同意事务。
- [x] 在全新隔离存储运行真实持久化/HTTP/并发检查,覆盖Spec列出的失败分支;不使用生产.env。394检查/85本机HTTP通过,主代理独立复跑通过。
- [x] 回归短信引擎/账户和密码会话,PHP语法检查;自查并提交审查资料,不创建Git提交。71/271/284回归及13PHP语法通过。
## Task 2: 前端绑定交互和会话隔离
Files: 新增packages/account/services/wechat-login.uts和scripts/test-wechat-login.cjs;修改packages/account/login/login.uvue;必要时仅复用auth.uts的现有会话接受逻辑。
Consumes: Task1三个端点;Produces: 微信授权/首次绑号/取消/过期/协议变化及成功回跳。
- [x] 编写执行真实UTS服务/页面逻辑的失败测试,覆盖绑定前不保存Token及迟到响应不覆盖会话。
- [x] 实现小程序授权适配和JSON服务,返回结果先验证页面代次和会话再保存。
- [x] 在现有登录页增加绑定状态、专用短信发送及取消入口;保留协议、手机号、密码和回跳行为,移除未实现的一键登录入口。
- [x] 运行新行为测试和现有协议/登录回归(19+30通过)。
## Task 3: 集成、构建和交付
- [x] 独立审查后端和前端最终差异,修复有证据的问题。前端审查通过;整体审查I1回滚异常漏撤销Token/M1路由消费s漏查均补RED/GREEN并定向复核通过。
- [x] HBuilderX小程序编译;Browser插件未提供时使用现有Playwright做受控渲染和关键交互,证据保存在仓库外。17:28再次29页编译通过;390×844/1280×900验证完成,未触达真实API。
- [x] 校验既有未提交文件摘要保持(本轮明确更新的交接文档除外),清理本轮合成存储、Token及所属进程。原有无关改动字节保持;隔离表/Redis空、库已删除、所属服务退出、端口释放、测试明文凭据移除;浏览器/Vite关闭。
- [x] 更新本地开发说明、交接和计划状态,明确正式迁移/渠道凭据/真实短信/微信真机/App仍待,不发布。
## 交付记录
本地交付说明:docs/微信与手机号登录开发-20261021.md;私密证据根目录:D:/AAdesk/202609/airz-backups/wechat-sms-login-20261021-r1。
用户后续决定:保留Android/iOS运营商本机号码一键登录作为App待接入功能,与短信登录共用现有userId;最新要求暂缓渠道准备、先还原登录页一键登录按钮,未接通时点击展示原“暂未开放”提示,完成服务开通、服务端核验及真机验证后启用实际认证。实际认证仍为后续App范围,不把它计入上方已完成的小程序/短信开发,也不代替现有微信首次绑定短信验证。
清理脚本发送Redis SHUTDOWN后收到正常连接重置,已定向确认所属两PID消失、端口释放及隔离库目录删除后完成凭据移除,回执backend/cleanup.json。此为测试工具收尾异常,非业务失败。两仓库分支保持codex/wechat-sms-login-20261021,未提交/推送/PR/上线。