petstore-docs/架构决策-下线未实现微信网页OAuth-2026-08-02.md

26 lines
2.0 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.

# 架构决策:下线未实现的微信网页 OAuth
> 日期2026-08-02
> 决策:删除 `GET /api/wechat/authorize`、`GET /api/wechat/callback` 与 `WECHAT_REDIRECT_URI`
> 保留:微信小程序手机号核验登录 `/api/user/wx-phone-login`
## 背景
旧代码保留了一组公开网页 OAuth demo授权地址使用 `qrconnect`,回调没有向微信换取身份,而是把请求中的 `code` 拼成 `demo_openid_` 后返回“微信授权成功”。它不签发 Petstore session但会对外表达不存在的身份核验结果也让生产发布多维护一个实际不使用的 `WECHAT_REDIRECT_URI`
当前试点只有小程序登录:客户端通过 `getPhoneNumber``wx.login` 获取一次性 code后端 `WechatMiniProgramService` 分别向微信换取已核验手机号和 openid/unionid再由 `/api/user/wx-phone-login` 建立真实账号与 session。Admin、H5 和小程序源码均未调用旧网页 OAuth 端点。
## 决策
1. 删除 `WechatController` 与只服务于它的 `WechatConfig`;旧路径不再公开放行,也不提供伪成功兼容响应。
2. 生产配置和 release preflight 不再要求 `WECHAT_REDIRECT_URI``WECHAT_APPID`、`WECHAT_APPSECRET` 继续作为小程序服务必填项。
3. 从机器本体和动作文档删除两个 deprecated/gap 入口,使本体只描述实际存在的 HTTP 契约。
4. 不在本阶段补做 PC 扫码登录、公众号网页授权或第二套账号绑定模型;未来若有真实场景,必须以独立 PRD、威胁模型和新 API 契约重新设计。
## 兼容与发布影响
- 数据库无迁移,现有 session、用户、预约、报告和小程序登录不受影响。
- 若外部仍请求旧路径,将不再得到 demo 成功响应;这属于预期的 fail-closed 行为。
- 生产环境文件应删除废弃变量,避免运维人员误以为仍需配置网页回调。
- 三角色验收继续只验证微信小程序手机号核验、员工邀请手机号一致性和旧注册入口 410不验证网页 OAuth。