refactor(utils): 修复密码哈希比较逻辑错误 feat(user): 新增按状态筛选优惠券接口 docs: 添加虚拟发货与任务中心相关文档 fix(wechat): 修正Code2Session上下文传递问题 test: 补充订单折扣与积分转换测试用例 build: 更新配置文件与构建脚本 style: 清理多余的空行与注释
38 lines
1.6 KiB
Markdown
38 lines
1.6 KiB
Markdown
# 设计文档:任务中心
|
||
|
||
## 架构图
|
||
```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`防重复;事务保证扣减与日志一致性。
|
||
- 风控:拒绝高风险用户事件;记录拒绝原因。
|
||
- 回滚:退款事件回滚进度计数;奖励不回收(可配置)。
|
||
|