bindbox-game/docs/任务中心/DESIGN_任务中心.md
邹方成 45815bfb7d chore: 清理无用文件与优化代码结构
refactor(utils): 修复密码哈希比较逻辑错误
feat(user): 新增按状态筛选优惠券接口
docs: 添加虚拟发货与任务中心相关文档
fix(wechat): 修正Code2Session上下文传递问题
test: 补充订单折扣与积分转换测试用例
build: 更新配置文件与构建脚本
style: 清理多余的空行与注释
2025-12-18 17:35:55 +08:00

38 lines
1.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 设计文档:任务中心
## 架构图
```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`防重复;事务保证扣减与日志一致性。
- 风控:拒绝高风险用户事件;记录拒绝原因。
- 回滚:退款事件回滚进度计数;奖励不回收(可配置)。