Files
shaguabijia-app-server/docs/api/tasks-claim.md
T
OuYingJun1024 32d04d7008 fix(welfare): 消息提醒可重复领取并发重复发放修复 + review 清理
代码 review(本分支未提交 WIP)发现并修复:
- 高: enable_notification 可重复领取的发放是无锁读-算-写,并发/连点会算出同一序号
  双倍发钱。给 coin_transaction 加 (user_id,biz_type,ref_id) 部分唯一索引(仅 task_*),
  claim 撞唯一约束→IntegrityError 回滚兜底成 AlreadyClaimedError(409),不双发。
  配套 alembic 迁移 coin_txn_task_ref_uq(挂 head=drop_force_onboarding)。
- 中: 加领取封顶 rewards.notification_max_claims(减半到底=1 后不再可领),挡通知一直关着
  时无限刷 1 金币;列表领满后 claimed 置 True 供客户端隐藏。
- 中: _notification_grant_times 改只数 amount>0 流水,避免日后冲正/负向流水把次数算大。
- 低: 合并 ops_marquee._nickname 两个一字不差的重复分支。
- 文档: tasks-list / tasks-claim 补可重复领取/逐次减半/409 语义。
- 测试: 新增「领满到底→409 + claimed=True」用例;test_welfare 全绿(3 个 proxy 失败
  为 pre-existing httpx mock 问题,与本次无关)。

注: review 标的「do_signin 未归一化老 cycle_day」经验算为非 bug(x%LEN+1 对越界值
本就周期正确,且与 get_status 预览公式恒等),未改。

含本分支签到7天改制/任务文案/膨胀金币等 WIP。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 23:39:27 +08:00

1.1 KiB
Raw Blame History

POST /api/v1/tasks/{task_key}/claim — 领取任务奖励

所属:Tasks 组(前缀 /api/v1/tasks | 鉴权:Bearer | ← 返回 API 索引

入参(path

字段 类型 必填 说明
task_key string 任务标识(见 tasks-listtask_key

出参

响应 200:TaskClaimResultOut

字段 类型 说明
task_key string 任务标识
coin_awarded int 本次发放金币
coin_balance int 领奖后金币余额

错误码

  • 404 未知任务(unknown task
  • 409 任务已领取(task already claimed)。一次性任务为已领过;可重复任务(enable_notification)为 并发/连点撞同一序号、或已「减半到底领满」不再可领。客户端遇 409 视为本次无发放(不再加币)。

说明

发奖端 gate 由后端把控(如「打开消息提醒」须客户端确认权限已开后才调)。金币已计入余额。 可重复任务每次领取金额逐次减半,按 (user_id, biz_type, ref_id) 唯一索引去重挡并发重复发放。