视觉按最新原型,业务按已确认PRD。现有代码为满足设计而改造。执行见按设计实施与任务卡;当前代码与验证范围见消费者功能页。
注册归因与奖励入账独立复审
本页目录
2026-10-03。只读复审;未修改业务代码或生产数据库,未部署或发放真实奖励。
结论:本轮限定范围未发现可复现的 P1/P2 问题。注册归因失败不会使邮箱登录失败;奖励入账按稳定操作 ID 去重,重试不会延长原有效期。
复审范围:官方 Better Auth 1.7.7 的 user.create.after 回调、Node 可信设备/IP 清洗与内部桥接、Go 签名 Cookie 与请求头替换,以及 creditReward 新增的 ttlDays 有效期模式。未审查仍在实施的 I00 邀请领域代码。
实际验证:
- 原目标测试独立重跑:注册归因 5 项、权益领域 19 项,共 24/24 通过;Go 原有两项代理/签名设备测试通过。
- 独立真实 HTTP 与 PostgreSQL 18 测试:缺少或伪造桥接凭据时返回 403,验证码派发和归因回调均为零;未验证的 OTP 请求不能创建归因。
- 两个并发验证码登录请求只创建一个账号、触发一次注册回调。之后使用其他邀请信息登录已有邮箱,不会再次触发或改绑。客户端提交的用户 ID、设备字段不能替代可信上下文。
- 注册归因回调和失败通知同时抛错,官方邮箱登录仍返回成功;随后通过框架会话接口确认账号可用。归因失败通知仅包含
userId和固定错误码,本轮捕获输出没有邮箱或验证码。 - Go 独立临时测试覆盖无 Cookie、未签名伪造 Cookie、被改动的签名、已过期签名和合法签名五种情况。前四种不注入可信设备,合法签名才注入;客户端伪造的设备、IP、内部凭据及转发 IP 请求头均被替换或删除。
- 奖励测试实际阻塞账号行锁后再放行:入账时间不早于锁释放,1 天有效期严格按该入账时间加 24 小时。20 次并发同操作重试、原奖励到期后的重试,均返回原奖励及原到期时间;数据库仍只有一条奖励、一条入账账本和一条 Outbox 事件。
- 改变同一操作的数量、用其他操作重复同一事件、无可信权限、无效天数,以及同时提交
ttlDays和expiresAt,均被拒绝。ttlDays只接受 1–30 的整数。
适用边界:签名 Cookie 证明的是服务端签发的浏览器标识,并不证明唯一物理设备或唯一自然人;邮箱验证也不证明有效观看或可信 App 安装。本轮尚未接入供应方可验证的播放事件及媒体授权能力,因此不能据此声称真实视频次数拦截、邀请有效观看或自动发奖已完整上线。creditReward 仍是可信管理/任务命令,当前公共 HTTP 接口没有直接充值入口。
独立验证使用真实框架、HTTP 和隔离的 PostgreSQL 18 内存数据库;未访问真实视频来源或 SMTP。签名 Cookie 验证采用 Go 临时编译覆盖,未向仓库增加测试文件。初建测试库在显式迁移前出现框架缺表提示;缺少可信 IP 的内部测试请求出现共享限流桶提示。迁移后验证全部通过,Go 入口提供的实际 socket IP 已单独验证。