# 事件与调度方案:任务中心 ## 实时事件处理 - 订阅事件:`OrderPaid`、`InviteSuccess`、`OrderRefunded/Cancelled`。 - 流程: 1. 解析事件并查`Tasks`在有效期且启用。 2. 更新`UserTaskProgress.metrics`(订单数/邀请数/首单标记)。 3. 匹配`TaskTiers`:达标产出`tier_id`列表(去除已领取)。 4. 幂等检查:生成`idempotency_key`并查`TaskEventLogs`。 5. 发奖:调用`user.GrantReward(...)`按`TaskRewards`派发;扣减库存(如有)。 6. 记录日志:`TaskEventLogs`写入状态与结果;`claimed_tiers`追加。 ## 调度补偿 - 周期任务(每小时/每日): - 扫描`UserTaskProgress`与事件流快照,识别漏发档位并补发。 - 生成指标快照与对账报表(订单/邀请/奖励入账)。 - 失败重试:对发奖失败记录按指数退避重试,设置最大重试次数与报警。 ## 幂等与并发 - 幂等键:`user_id + task_id + tier_id + event_id`。 - 并发控制:同用户同任务串行执行;库存扣减与日志写入同事务或使用分布式锁。 ## 风控 - 邀请有效校验:必须注册并完成首单;设备指纹与手机号校验。 - 刷单检测:黑名单、频次阈值、风控评分;高风险事件直接拒绝并记录原因。 - 限流:每日发奖上限;IP/设备限流。