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

1.6 KiB
Raw Blame History

设计文档:任务中心

架构图

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,任务与进度、日志数据访问。
  • 调度器:周期扫描与补偿、快照与报表。

接口契约

  • 任务实体:Tasksid/name/desc/status/time_window/visibility/conditions_schema?)。
  • 档位:TaskTierstask_id/metric/operator/threshold/window/repeatable/priority)。
  • 奖励:TaskRewardstask_id/tier_id/type/payload/quantity)。
  • 进度:UserTaskProgressuser_id/task_id/metrics/claimed_tiers[]/updated_at)。
  • 日志:TaskEventLogsevent_id/user_id/task_id/tier_id/idempotency_key/status/result/created_at)。

数据流向

  • 事件→进度更新→档位匹配→发奖→日志;调度→进度扫描→补偿发奖。

异常处理策略

  • 幂等:以idempotency_key防重复;事务保证扣减与日志一致性。
  • 风控:拒绝高风险用户事件;记录拒绝原因。
  • 回滚:退款事件回滚进度计数;奖励不回收(可配置)。