积分系统是如何工作的
发布于 2026年9月4日 · Team
工程
积分系统采用双表设计:credit_grant 批次表 + 不可变的 credit_transaction 流水表。
带过期的批次
每次发放都是一个批次,含 amount、remaining 和可选的 expiresAt。注册赠分可能 30 天过期;购买的积分包永不过期。
FEFO 扣减
消耗时优先扣最快过期的批次(First-Expired, First-Out),让用户的积分绝不白白浪费。
每日任务
GitHub Actions 定时任务(或 GET /api/distribute-credits)清零过期批次、写入 expiration 流水,并把到期订阅降级。