# 新手机号授权自动建号修复 ## 原因与修复 线上 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`,仅用于定向回滚,勿覆盖后续新增配置。