docs: add signup bonus requirement

This commit is contained in:
QiuSW
2026-07-08 14:19:00 +08:00
parent 1394cded49
commit 02aa12e8b9
18 changed files with 104 additions and 45 deletions
+21
View File
@@ -1455,3 +1455,24 @@
- `docs/api.md`:在版本检查接口段落补充对接文档链接。
- 验证:纯文档修改;`git diff --check` 通过。
- 下一步:按业务优先级继续处理真实支付回调到账闭环、客户端下载包发布或真实图片耗时验证。
## 2026-07-08 决策:T-608 新用户注册赠送 100 点试用点数
- 状态:DONE(文档决策与任务拆分,未改代码)。
- 背景:产品新增需求「用户注册送 100 点」。该需求涉及可消费点数,不能简单把注册后的钱包初始值从 0 改成 100;必须纳入 billing 账本、流水、幂等和防刷设计。
- 需求口径:
- 新用户注册成功后一次性赠送 100 点试用点数。
- 只对 T-608 上线后的新注册用户自动发放;历史用户是否补发需另行审批和单独批处理任务。
- 当前注册策略仍为免邮箱验证、注册即可用、邮箱必填且唯一;注册送点会提高刷号动机,实施时需补基础注册限流,并登记图形验证码 / 人机验证等上线前风控项。
- 技术口径:
- 注册赠点必须经 `apps.billing` 服务发放,不得在 allauth adapter / view / signal 中直接写 `UserWallet.points_balance`。
- 新增 `PointsLedger.ChangeType.SIGNUP_BONUS`,写 `PointsLedger(signup_bonus, +100, balance_after, reason="new_user_registration")`。
- 采用 MySQL 可落地的数据库级幂等兜底,推荐 `SignupBonusGrant(user UNIQUE)`;不使用 MySQL 不支持的 partial unique / 条件唯一约束,也不使用会误伤其他流水类型的 `PointsLedger(user, change_type)` 全局唯一。
- `grant_signup_bonus(user, points=100)` 负责锁/创建钱包、创建幂等标记、加点和写流水;重复调用或并发触发不得重复发放。
- 文档变更:
- `README.md`、`docs/00-ai-start-here.md`、`docs/01-vision.md`、`docs/02-requirements.md`、`docs/03-tech-stack.md`、`docs/04-architecture.md`、`docs/05-coding-rules.md`、`docs/api.md`、`docs/routes.md`、`docs/brand.md`:同步新需求、账本规则、幂等与防刷要求。
- `docs/06-tasks.md`:新增 T-608「新用户注册赠送 100 点试用点数」,状态 TODO,并把复杂活动赠点 / 历史用户补发移回 Backlog。
- `docs/current-state.md`:记录 T-608 为下一个可领取任务,并明确当前代码仍是旧行为,尚未实现注册送点。
- `docs/mvp-acceptance.md`、`docs/phase-4-review.md`、`docs/README.md`:标注 T-501/T-402/Phase 4 审核中的“注册不送点”属于历史口径,已被 T-608 新需求变更。
- 验证:纯文档修改;后续执行 T-608 时需补迁移、目标测试、`check` 和 `git diff --check` 证据。
- 下一步:领取 T-608,先实现 billing 层注册赠点服务和幂等数据结构,再接 allauth adapter、页面文案和测试。