d7d5f8109c
改造排行榜数据源为本周 XP
...
- addXp() 每次获得 XP 时同步累加 userWeeklyXp 表的本周统计
- 使用 INSERT ON DUPLICATE KEY UPDATE 实现幂等周 XP 累加
- leaderboard-service 从 userWeeklyXp 查询本周 XP 排名替代累计 XP
- leaderboard-api-service DTO 中 xp 字段改为展示本周 XP
- weeklySettlement() 基于 userWeeklyXp 生成周快照
2026-05-13 21:00:48 +08:00
eee2116633
添加广告恢复回归测试覆盖 G4-7
...
新增 ad-recovery-service.test.ts,覆盖幂等 session 创建、Plus 拦截
与权益摘要、每日上限、会话过期、provider token 缺失、信任测试
provider、已完成会话幂等返回、rewardLedger 幂等命中 8 个场景。
Phase G4 全部完成。
2026-05-13 20:34:55 +08:00
de0055e794
标记旧恢复接口废弃并明确 Plus 用户分支
...
- 在 3 个旧恢复路由上标记 [废弃] 注释,指向新的 ad-recovery 两步流程
- Plus 用户调用广告恢复接口时返回 subscriptionBenefits 权益摘要
- 包含 tier、unlimitedHearts、dailyHighRewardSessions 供客户端展示
2026-05-13 20:24:32 +08:00
8401d8c714
对齐广告恢复奖励到统一奖励结算层
...
将 ad-recovery-service 的 applyReward() 从直接操作 users 表改为通过
rewardLedger 统一结算层发放,使用 ad_recovery:{sessionId} 幂等 key
防止重复结算,记录 stateBefore/After 资源快照便于审计追溯。
2026-05-13 20:04:32 +08:00
7aa53657fc
补齐金币商店测试覆盖
2026-05-13 17:45:58 +08:00
6bf9db9820
扩展游戏化启动与商店 DTO
2026-05-13 17:38:54 +08:00
b74201d6e0
实现游戏化道具使用接口
2026-05-13 17:31:54 +08:00
ff75c34873
实现游戏化商店购买接口
2026-05-13 17:16:30 +08:00
5a29c59cf0
实现游戏化道具库存服务
2026-05-13 16:57:34 +08:00
3bcaf0fbf3
实现游戏化宝箱奖励服务
2026-05-13 16:41:57 +08:00
18865e17ca
实现游戏化金币发放服务
2026-05-13 13:01:00 +08:00
1ad26d0fe8
补齐 XP 与连续学习测试覆盖
2026-05-13 10:55:17 +08:00
c08d3f75b9
实现每日首次进入红心补给
2026-05-13 10:53:27 +08:00
d71c45b2f1
实现连续学习里程碑奖励
2026-05-13 10:51:01 +08:00
447cef3dea
按挑战组完成更新连续学习
2026-05-13 10:47:46 +08:00
b5b3aaf3a7
实现游戏化 XP 来源与连对奖励
2026-05-13 10:26:21 +08:00
b590e60bce
feat: implement non-linear 50-level XP curve (G2-1)
...
Replace flat 400 XP/level formula with the segmented curve from
LEVEL_RULES: Lv.1-5 steep ramp, Lv.6-10 moderate, Lv.11-20 linear +80,
Lv.21-35 +120, Lv.36-50 +180. Level 50 is hard-capped with xpToNextLevel=0.
Uses binary search over pre-computed cumulative thresholds for O(log n)
level lookup.
2026-05-12 11:04:23 +08:00
665efa4370
test: add comprehensive challenge group tests (G1-7)
...
Add 11 new test cases covering challenge session creation, correct/wrong
answers, idempotent duplicate submission, completion settlement, resource
exhaustion, Plus user bypass, and invalid input validation.
Refactor test helpers to use queue-based mockImplementation pattern for
more reliable db.select mocking across complex async flows.
2026-05-12 10:38:17 +08:00
8801ca1db2
docs: mark G1-6 challenge API DTO update as completed
2026-05-12 00:12:50 +08:00
e2fdce2268
docs: mark G1-5 daily high-reward session limits as completed
2026-05-12 00:01:57 +08:00
708165e121
docs: mark G1-4 heart deduction boundaries as completed
2026-05-11 23:45:07 +08:00
9e0f97d162
Settle completed challenge sessions
2026-05-11 21:40:41 +08:00
5bb6ba29a2
Record idempotent challenge answers
2026-05-11 21:34:27 +08:00
1d84de8d15
Create challenge sessions with five questions
2026-05-11 18:32:40 +08:00
fd4c2b6361
Generate game economy migrations
2026-05-11 18:23:29 +08:00
6a655d0ce2
Add weekly XP schema
2026-05-11 18:18:33 +08:00
7a617ce1f9
Add daily progress schema
2026-05-11 18:06:19 +08:00
51395bf5ec
Add reward ledger schema
2026-05-11 17:59:03 +08:00
a23f1abc12
Add wallet and inventory schema
2026-05-11 17:41:26 +08:00
5570973f74
Add challenge session schema
2026-05-11 17:39:06 +08:00
8382183ee5
Add gamification rule constants
2026-05-11 17:33:53 +08:00
0dd6633fd4
Add gamification design and server plan
2026-05-11 17:06:42 +08:00