# 设计文档：任务中心

## 架构图
```mermaid
flowchart LR
  Events((OrderPaid/InviteSuccess)) --> Processor[Task Processor]
  Processor --> Progress[UserTaskProgress]
  Processor --> Judge{Match TaskTiers}
  Judge -->|Hit Tier| Grant[GrantReward]
  Grant --> Logs[TaskEventLogs]
  Scheduler[Task Scheduler] --> Progress
  Scheduler --> Judge
  Admin[Admin UI] --> Tasks[(Tasks/TaskTiers/TaskRewards)]
  App[App UI] --> Progress
```

## 分层与组件
- API层：`internal/api/task_center`，管理端与APP端HTTP接口。
- 服务层：`internal/service/task_center`，规则判定、进度更新、发奖编排、幂等控制。
- 仓储层：`internal/repository/mysql/task_center`，任务与进度、日志数据访问。
- 调度器：周期扫描与补偿、快照与报表。

## 接口契约
- 任务实体：`Tasks`（`id/name/desc/status/time_window/visibility/conditions_schema?`）。
- 档位：`TaskTiers`（`task_id/metric/operator/threshold/window/repeatable/priority`）。
- 奖励：`TaskRewards`（`task_id/tier_id/type/payload/quantity`）。
- 进度：`UserTaskProgress`（`user_id/task_id/metrics/claimed_tiers[]/updated_at`）。
- 日志：`TaskEventLogs`（`event_id/user_id/task_id/tier_id/idempotency_key/status/result/created_at`）。

## 数据流向
- 事件→进度更新→档位匹配→发奖→日志；调度→进度扫描→补偿发奖。

## 异常处理策略
- 幂等：以`idempotency_key`防重复；事务保证扣减与日志一致性。
- 风控：拒绝高风险用户事件；记录拒绝原因。
- 回滚：退款事件回滚进度计数；奖励不回收（可配置）。

