# 事件与调度方案：任务中心

## 实时事件处理
- 订阅事件：`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/设备限流。

