限制手机号注册流程使用号码复用

This commit is contained in:
QLHazyCoder
2026-05-15 18:23:41 +08:00
parent 81fc40706a
commit 4c2ab31b07
9 changed files with 929 additions and 26 deletions
@@ -0,0 +1,126 @@
# 手机号注册禁用号码复用开发方案
## 1. 需求结论
手机号注册流程中,手机号是账号主身份,不应进入普通号码复用、白嫖复用、自动白嫖复用、优先号码等复用链路。邮箱注册流程中的手机接码才是附加验证资源,才允许复用。
本次开发目标:
1. 手机号注册模式下,复用相关功能自动显示为关闭并禁止修改。
2. 切回邮箱注册模式后,恢复用户原本保存的复用偏好。
3. 后台运行时必须有硬约束,不能只依赖 UI 禁用。
4. 手动白嫖保存入口必须阻断手机号注册身份,避免绕过 UI。
5. 测试覆盖普通复用、白嫖复用、优先号码、设置保存和消息入口。
## 2. 设计边界
### 2.1 符合要求的部分
- 手机号注册时禁用复用符合身份模型:手机号是账号标识,不是后续 add-phone 验证资源。
- 邮箱注册时恢复复用符合用户预期:用户原本的复用配置不应因为临时切到手机号注册而丢失。
- 后台硬约束是必要的:自动运行、导入配置、消息入口都可能绕过侧边栏状态。
### 2.2 需要避免的缺陷
1. 只改 UI 不改运行时:仍会被自动运行或消息入口绕过。
2. 切到手机号注册时把配置永久写成 false:切回邮箱注册后用户偏好丢失。
3. 只禁用普通复用,不禁用白嫖复用:白嫖复用优先级更高,仍会污染手机号身份。
4. 只禁用白嫖开关,不禁用手动记录按钮:用户仍可把手机号注册订单写成白嫖资源。
5. 忽略优先号码:优先号码本质上也是复用,应在手机号注册模式下不参与。
6. 清空复用池:这会破坏邮箱注册模式下的历史资源;本次只做有效禁用,不主动清空。
## 3. 开发清单
### 阶段 1:后台运行时复用边界硬约束
目标:
- 新增统一判断:当前状态是否为手机号注册身份流程。
- 手机号注册身份下跳过普通复用和优先号码。
- 手机号注册成功后不写入普通复用池。
- 手机号注册身份下不触发白嫖复用保存、白嫖终态跳过、自动白嫖 handoff。
自检项:
- `prepareSignupPhoneActivation` 不会复用旧号码。
- `finalizeSignupPhoneActivationAfterSuccess` 仍会正常完成接码订单,但不保存为复用资源。
- Step9 边界场景即使状态误带手机号身份,也不会走普通/白嫖复用。
- 不清空原有邮箱模式复用资源。
- 无拼写错误、无乱码、无无关重构。
### 阶段 2:侧边栏 UI 有效禁用与偏好保留
目标:
- 手机号注册模式下普通号码复用、白嫖复用、自动白嫖复用显示关闭并禁用。
- 优先号码和白嫖号码运行态入口在手机号注册模式下不可修改。
- 切回邮箱注册时恢复 `latestState` 中保存的原始偏好。
- 保存设置时不把手机号模式下的 UI 强制 false 写回持久配置。
自检项:
- 手机号注册切换时控件不会闪回可用。
- 邮箱注册切回后复用偏好恢复。
- 自动运行锁和手机号注册锁不互相覆盖。
- 变更不影响 provider 切换、价格区间、接码展开折叠。
- 无 UI 文案乱码。
### 阶段 3:消息入口与手动白嫖保存拦截
目标:
- `SET_FREE_REUSABLE_PHONE` 在手机号注册身份下返回明确错误。
- `SAVE_SETTING` 在手机号注册有效模式下忽略复用开关改动,保留历史偏好。
- 后台约束与 UI 约束一致。
自检项:
- 侧边栏按钮和外部消息都无法在手机号注册身份下保存白嫖号。
- 邮箱注册模式下原行为保持。
- 不影响清除白嫖号码能力。
- 不影响导入旧配置的兼容读取。
### 阶段 4:测试覆盖
目标:
- 补充 phone verification flow 测试。
- 补充 sidepanel 设置保存测试。
- 补充 message router 保存拦截测试。
自检项:
- 手机号注册不读取普通复用。
- 手机号注册不读取白嫖复用。
- 手机号注册不自动保存白嫖资源。
- 手机号注册保存设置不会覆盖邮箱模式复用偏好。
- 邮箱注册复用路径不回归。
### 阶段 5:全面审查与提交
目标:
- 运行相关测试。
- `git diff` 审查每个改动点。
- 检查中文文档和 UI 字符串没有乱码。
- 检查没有误改无关文件。
- 使用中文提交信息提交代码。
自检项:
- 相关测试通过。
- 没有遗留调试代码。
- 没有破坏当前工作区的其他改动。
- 提交内容只包含本需求相关文件。
## 4. 完成标准
本需求只有同时满足以下条件才算完成:
1. 手机号注册模式下所有复用链路运行时失效。
2. 手机号注册模式下侧边栏无法修改复用相关控件。
3. 切回邮箱注册后原复用偏好恢复。
4. 白嫖复用不能通过手动消息入口绕过。
5. 单元测试覆盖新增边界。
6. 全面审查无设计缺陷、边界遗漏、乱码和无关改动。
7. 最终使用中文提交信息完成 commit。