1.ws优化bet.win订阅,修复中大奖没有推送

This commit is contained in:
2026-05-26 19:10:23 +08:00
parent 6d3711e1db
commit 4c69a8c77f
3 changed files with 90 additions and 17 deletions

View File

@@ -845,7 +845,7 @@
- **`data.payout_pending_review`**`bool``true` 表示已中奖但派彩待后台大奖审核,尚未入账(仍应展示中奖 UI
- **合并赔率字段**(与 §7.1.2A 一致):`current_streak``streak_level``odds_factor``is_jackpot`
- `data.server_time`Unix 秒
- **服务端去重**Redis Key `dfw:v1:ws:betwin:{period_id}:{user_id}`TTL 86400s**每期每用户至多推送一次**;与 `user.streak` / `wallet.changed` 的整期去重键 `dfw:v1:settle:notify:{period_id}` **分离**,避免后者先占位导致 `bet.win` 被吞
- **服务端去重**Redis Key `dfw:v1:ws:betwin:{period_id}:{user_id}`TTL 86400s**入队成功后再写入**每期每用户至多推送一次;与 `dfw:v1:settle:notify:{period_id}` **分离**。结算推送以库内已结算中奖注单为准重建载荷,避免内存聚合丢失
- **补偿**:若内存聚合 `bet_wins` 为空但库内已有本期已结算中奖注单,结算服务会从库重建载荷并补发(`buildBetWinPayloadsFromSettledOrders`)。
- **大奖审核通过后**:后台 `approveJackpot` 会再次向该用户推送 `bet.win`(入账后)。
- **`jackpot.hit`(公共大奖广播,补充)**:在 **`bet.win` 之后**(同一结算批次内),若本期存在**大奖档命中**用户,**额外**向公共频道推送一帧,供全站公告/跑马灯;无大奖命中则不推送。**个人弹窗仍以 `bet.win` 为主**`jackpot.hit` 用于全站展示昵称与金额。