super_carnival_unlock_flow.md
旧文件/super_carnival_unlock_flow.md · 6.6 KB · 2026-09-22 15:07:00
原始文件 下载

超级嘉年华与 1.0 金库解锁:完整示例

本文用文字字段说明两条链路如何并行,以及为何不会超发。

结论:资金不会叠成超发(始终受「剩余锁定」封顶);流水账与金库已解锁可能对不上,差额看活动「已入账」。


角色与初始状态

用户小王:1.0 迁移用户,已选加速解锁方案

含义 数值
金库原始总额 1000
已解锁金额 50(加速第 1 期刚解锁过,5%)
已兑换金额 0
已解锁期数 1
下次分期解锁时间 大约 30 天后
剩余锁定 1000 − 50 = 950
当前可兑换(已解锁未兑) 50

活动:超级嘉年华(示例窗口:当天 00:00~19:00,东七区)。

规则摘要:


阶段一:活动开始(00:00)

含义 数值
金库已解锁 50
活动有效邀请人数 0
活动目标比例 0%
活动待解锁 0
活动已入账 0
活动是否已结算

分期解锁定时任务照常跑;嘉年华还不改金库


阶段二:上午 10:00,第 1 个下级升到 Lv2

只改活动表,不改金库:

含义 变化
活动有效邀请人数 0 → 1
活动目标比例 10%
理论可解锁 1000 × 10% = 100
不能超过剩余锁定 min(100, 950) = 100
活动待解锁 100
金库已解锁 仍是 50(没动)
用户可兑换 仍是 50(待解锁还不能兑)

页面上通常会看到:已解锁基数约 50,待解锁 100。


阶段三:中午,常规分期第 2 期到期

加速第 2 期:按原始总额的 10% = 100。

分期解锁发生:

含义 变化
解锁流水 新增一笔:第 2 期、金额 100
金库已解锁 50 → 150
已解锁期数 1 → 2
下次分期解锁时间 再推约 30 天
剩余锁定 950 → 850

随后系统重算活动待解锁(避免待解锁比剩余锁定还大):

含义 结果
活动有效邀请人数 仍是 1
理论 100
活动待解锁 仍是 100(100 ≤ 剩余 850,不变)

展示侧也会按「当前剩余锁定」现场计算待解锁,与库内重算口径一致。


阶段四:下午,又有 2 个下级升到 Lv2(合计 3 人)

含义 变化
活动有效邀请人数 1 → 3
活动目标比例 30%
理论可解锁 1000 × 30% = 300
活动待解锁 min(300, 剩余锁定 850) = 300
金库已解锁 仍是 150
用户可兑换 仍是 150

到这里为止:分期已经给了他 150;嘉年华还欠着一笔「账面上的 300」,没进金库


阶段五:19:00 活动结束,结算入账

结算步骤:

  1. 确认活动尚未结算
  2. 按当前金库再算一遍待解锁,并用剩余锁定封顶
  3. 把待解锁加进金库已解锁
  4. 清空待解锁,记下活动已入账,标记已结算
  5. 不写分期解锁流水,不增加已解锁期数(避免和分期期号冲突)

结算后:

含义 数值
金库已解锁 150 + 300 = 450
剩余锁定 550
活动待解锁 0
活动已入账 300
活动是否已结算
已解锁期数 仍是 2(没变)
分期流水合计 50 + 100 = 150
用户可兑换 450(假设还没兑过)

对账公式:

金库已解锁 450 = 分期流水合计 150 + 活动已入账 300

流水表合计与金库已解锁对不上是预期现象,差额看活动「已入账」。

之后再跑结算任务:已结算则直接跳过,不会重复加。


阶段六:活动结束后,原分期继续

下一次到期仍按「原始总额 × 比例」,再和剩余锁定取小:

期次 本期想解 剩余锁定 实际解 解完后已解锁 解完后剩余
第 3 期 100 550 100 550 450
第 4 期 100 450 100 650 350
最后一期 按规则 很少时 把剩余一次性解完 1000 0

全部解完后:标记解锁完成,清空下次分期时间;分期任务不再动这个用户。

总额始终封顶为金库原始总额(本例 1000),不会因为「分期 + 嘉年华」解出超过原始总额。

若结算时一次把剩余锁定全部入账(例如满 10 人且当时还锁着很多),会直接标记解锁完成并清空下次分期时间,后续分期不再跑。


全程对照表

时刻 金库已解锁 剩余锁定 活动待解锁 活动已入账 用户能兑多少(未兑过)
活动开始前 50 950 0 0 50
第 1 人升 Lv2 50 950 100 0 50
分期第 2 期 150 850 100 0 150
共 3 人升 Lv2 150 850 300 0 150
19:00 结算后 450 550 0 300 450
以后分期… 逐渐增加 逐渐减少 0 300 跟着已解锁走
全部解完 1000 0 0 300 1000 − 已兑

并发简例(结算与分期撞车)

同一秒:结算要给小王加 300,分期也正好要解第 3 期 100。

不会出现「两边各加一遍导致超过当时剩余锁定」的超发;最多某一轮跳过、下一轮补。


容易误解的两点

  1. 活动期间:待解锁只是预告,不能兑换;只有结算进金库后才能兑。
  2. 和纯分期比:同样时间点,小王多拿了活动那 300,会比没参加活动的人更早解完;但最后总数仍是金库原始 1000,不是 1000 + 300。

与 C 端文档的关系

接口字段与联调说明见:super_carnival_frontend.md