This repository has been archived on 2026-10-02. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
NeteaseUrl/web
snowy-yang 5ad2152acc refactor: register 端点拆解(84 行 / 圈 34 → 58 行 / 圈 20 / 嵌套 1)
为什么:注册是站点唯一的建号入口,84 行里五条「建号前失败」路径各自
手写一遍 restore_verify_code(有的还带失败日志),防刷双闸与三种建号
异常的口径全埋在分支里,改任何一条都要通读全函数核对还原时序。

拆出(顺序 = 原执行顺序,逐条语义对应):
- _validate_registration_input:入参四道闸(协议/用户名/密码/邮箱),
  按序返回第一条错误文案
- _reject_registration:统一拒绝出口——还原已消费验证码(可选失败
  日志);五处 restore 收敛为一处,docstring 写明「为何必须还原」
- _register_credits:赠送闸(同设备重复注册归零;顺带删除
  credits<0 死分支——_safe_register_credits 已保证非负)
- _issue_registration_session:成功收尾(login_seq 递增 + 日志 + Cookie)

先写测试后动代码:新增 tests/test_register_flow.py 9 例,在未改动
实现上一次跑绿。验证码由 check_verify_code DELETE 原子消费,测试用
「失败路径后 email_codes 行仍在」做 restore 实证断言(不 mock 还原);
其中用户名重名路径用端到端方式验证——同一验证码不重发即可二次注册。
覆盖此前零测试的路径:IP 闸、设备赠送闸、IntegrityError/ValueError/
读回 None 三种建号异常映射、非预期异常 500 泛化文案。

门禁:ruff 全过 · pyright 0/0 · pytest 339 passed(330→339)。
2026-09-27 10:05:20 +08:00
..