Skip to content

feat(claim): 支持每日领取时间窗口 - #78

Closed
Catapult291 wants to merge 1 commit into
TriDefender:masterfrom
Catapult291:feat/claim-daily-window
Closed

Catapult291 wants to merge 1 commit into
TriDefender:masterfrom
Catapult291:feat/claim-daily-window

Conversation

@Catapult291

Copy link
Copy Markdown
Contributor

背景

claim 调度器目前全天按 pollIntervalMs 轮询 preview。每日活动的领取额度一天只有一次,窗口外的轮询只会产生无效请求;同一天领取成功后再轮询同一窗口也没有收益。

改动

  • 新增 claim.window: "HH:MM-HH:MM"(UTC+8 墙钟,24 小时制,起点包含、终点不包含)。留空或不配 = 保持现在的全天轮询,现有行为零变化。
  • 窗口外 tick() 直接返回 idle 并 hold 到下一个开窗点,不发送任何 upstream 请求;hold 由 scheduleNext 按 pollIntervalMs 重新武装,进程重启或改配置立即生效。
  • 窗口内领取成功后 hold 到 max(ends_at, 次日窗口起点),避免同一天重复轮询烧每日额度。
  • loader 在加载时校验格式与范围,非法配置启动即报错。
  • 示例:window: "19:00-20:30"。

测试

  • src/claim/scheduler.test.ts:窗口外抑制、窗口内正常轮询、成功后跨日 hold、起点包含/终点不包含、未配置窗口保持原行为;parseClaimWindow / minutesUntilWindow 的解析与边界。
  • src/config/loader.test.ts:默认值、window 透传、非法格式启动报错。
  • 本地 bunx tsc --noEmit 干净,bun test 1138 pass / 0 fail。

- claim.window 配置 "HH:MM-HH:MM"(UTC+8),留空保持全天轮询
- 窗口外不发 preview 请求;成功领取后 hold 到次日窗口起点
- loader 加载时校验格式,非法配置启动即报错
- 补充窗口边界、跨日 hold 与 parse 工具测试
@TriDefender

Copy link
Copy Markdown
Owner

但是这个改动我也没有看到额外的收益啊,添加这个功能直接最后的结果还是一样的

@TriDefender

Copy link
Copy Markdown
Owner

close了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants