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

2.7 KiB
Raw Blame History

检查项

  • 路由与前端:确认管理端生成/摘要接口使用活动级路径
    • 生成:POST /api/admin/activities/:activity_id/commitment/generate
    • 摘要:GET /api/admin/activities/:activity_id/commitment/summary
    • 前端 API 指向上述路径(不是旧的 /ichiban/...
  • 数据迁移:核实 activities 已存在承诺字段algo/seed_master/seed_hash/state_version/items_root且成功执行
  • 服务实现:检查 ActivityCommitmentService
    • 生成:写入 seed_masterseed_hashstate_version;当前 items_root 为 NULL需要按最新设计计算
    • 摘要:从 activities 读取版本与算法,has_seed 通过 LENGTH(seed_master) 判断
  • 策略消费:一番赏映射读取活动承诺种子(非期级表),若缺承诺返回明确错误

修正与实现(不兼容旧期级)

  • 计算并写入 commitment_items_root
    • 规则:对活动下各期的奖励配置,按每个奖励的 original_qty 构造 slots 数组(长度为 N计算 items_root = SHA256(JSON(slots))
    • 写入 activities.commitment_items_root,用于事后验证映射根
    • 版本递增:每次生成承诺 state_version+1
  • 一番赏映射页承诺校验
    • 进入列表或详情时检查活动承诺存在(has_seed=true);无承诺返回“请在活动管理生成承诺”提示
  • 活动管理显示
    • 活动列表新增“承诺版本”列(已加),确保加载摘要后填充版本
    • 活动编辑弹窗顶部承诺信息卡片(已加),显示 seed_version/algo/状态

验证流程

  • 生成承诺后,确认 activities 中:
    • LENGTH(commitment_seed_master)=32LENGTH(commitment_seed_hash)=32
    • commitment_state_version 递增
    • LENGTH(commitment_items_root)>0
  • 前端列表显示版本值;映射页顶部显示活动承诺版本
  • 并发占位与映射不变:种子存在即可按位置开奖;缺承诺时前端/后端均提示

接口与 curl

  • 生成:curl -X POST 'http://127.0.0.1:9991/api/admin/activities/<id>/commitment/generate' -H 'Authorization: Bearer TOKEN'
  • 摘要:curl 'http://127.0.0.1:9991/api/admin/activities/<id>/commitment/summary' -H 'Authorization: Bearer TOKEN'
  • DB 校验:SELECT LENGTH(commitment_seed_master), LENGTH(commitment_seed_hash), LENGTH(commitment_items_root), commitment_state_version FROM activities WHERE id=<id>;

交付修改点

  • 后端:完善 ActivityCommitmentService 的 items_root 计算与写入(活动维度)
  • 前端:确保活动列表与编辑对话框显示承诺;映射页在无承诺时给出指导提示

说明

  • 全量切换到活动级承诺;不读取旧 issue_random_commitments
  • 保持统一接口与策略,后续抽奖逻辑统一使用活动承诺