32 lines
2.1 KiB
Markdown
32 lines
2.1 KiB
Markdown
# 新手机号授权自动建号修复
|
||||
|
|
|
|||
|
|
## 原因与修复
|
|||
|
|
|
|||
|
|
线上 API 的 `ONBOARDING_SELF_SIGNUP_TENANT_IDS` 为空。微信手机号授权成功后,已有自动建号代码因此拒绝创建新账号,并返回 `SMS_ACCOUNT_NOT_REGISTERED`。这不是需要先绑定设备的业务限制。
|
|||
|
|
|
|||
|
|
2026-09-16 已在 82.157.201.114 当前部署的 `deploy/server/.env` 明确配置客户组织 public_id:`10000000-0000-0000-0000-000000000010`。只重建 API 容器并刷新网关解析,未更换后端镜像,未修改数据库结构,未发布小程序。
|
|||
|
|
|
|||
|
|
## 预期流程
|
|||
|
|
|
|||
|
|
1. 微信首次登录:请求授权手机号。
|
|||
|
|
2. 后端向微信校验授权结果,按已验证手机号查找账号。
|
|||
|
|
3. 未注册的手机号:在部署配置指定的客户组织创建普通客户账号,关联微信并返回登录凭据。
|
|||
|
|
4. 已注册的手机号:复用原账号,不重复创建。
|
|||
|
|
5. 新账号没有家庭、老人和设备绑定,由用户登录后自行创建。
|
|||
|
|
|
|||
|
|
只输入手机号或密码不能绕过手机号验证自动建号;管理员登录不开放自动注册。
|
|||
|
|
|
|||
|
|
## 验证
|
|||
|
|
|
|||
|
|
- 线上 HTTPS `/api/v1/web/login/session` 返回 HTTP 200,`signup_enabled=true`。
|
|||
|
|
- 12 项微信与短信登录测试通过(另含两个子用例),包括新增 `TestWeChatNewPhoneCreatesCustomerWithoutFamilyOrDevice`。
|
|||
|
|
- 新增用例覆盖:授权前不建号、首次授权创建普通客户账号、没有家庭/设备也能注册、重复微信登录复用账号。
|
|||
|
|
- 数据库测试使用独立临时数据库(仅复制线上结构,无线上用户数据)和独立 Redis;执行后均已移除。
|
|||
|
|
- 测试使用模拟微信/短信提供方,没有给真实手机号发短信,没有预先注册用户的测试账号。真机微信授权需用户重新尝试。
|
|||
|
|
|
|||
|
|
## 部署注意
|
|||
|
|
|
|||
|
|
后续迁移或重新部署须保留这一配置。不能仅检查已有账号能登录,应同时检查 `signup_enabled`,并执行全新手机号授权建号回归。
|
|||
|
|
|
|||
|
|
当前部署环境文件留有修复前的受限备份 `.env.before-customer-signup-20260916`,仅用于定向回滚,勿覆盖后续新增配置。
|