refactor(utils): 修复密码哈希比较逻辑错误 feat(user): 新增按状态筛选优惠券接口 docs: 添加虚拟发货与任务中心相关文档 fix(wechat): 修正Code2Session上下文传递问题 test: 补充订单折扣与积分转换测试用例 build: 更新配置文件与构建脚本 style: 清理多余的空行与注释
2.3 KiB
2.3 KiB
核心原则
- 承诺是活动级属性:所有活动均需生成并持有承诺;抽奖只能在承诺存在的活动上执行
- 不做旧期兼容:不读取/维护期级承诺表;全量切换到活动级承诺
数据模型(仅 activities)
activities新增字段:commitment_algoVARCHAR(32) 默认commit-v1commitment_seed_masterBLOB(活动随机种子,256位)commitment_seed_hashBLOB(SHA256(seed_master))commitment_state_versionINT(递增)commitment_items_rootBLOB(按玩法需要可填,比如 Ichiban 的 slots 根)
- 期级承诺表不再使用(保留但不访问),所有策略仅访问活动级承诺
接口
- 生成承诺(活动级):
POST /api/admin/activities/:activity_id/commitment/generate- 行为:生成随机种子;计算
seed_hash;按玩法(如 Ichiban)计算items_root;版本 +1
- 行为:生成随机种子;计算
- 承诺概览:
GET /api/admin/activities/:activity_id/commitment/summary- 返回:
{ seed_version, algo, has_seed, items_root(optional) }
- 返回:
- 抽奖前置校验:策略入口统一校验活动承诺存在;缺失则返回
COMMITMENT_REQUIRED
策略消费
- Ichiban:
- 读取活动级
seed_master作为随机源 - 根据期的奖励配置构造 slots(基于
original_qty)→ 使用活动种子做确定性洗牌 - 保持“位置→奖品”稳定,版本变更后整体映射更新
- 读取活动级
- 其他玩法:
- 统一读取活动承诺作为随机源或哈希链起点
前端改造
- 活动管理:
- 操作列显示“生成承诺”与“承诺概览”(适用于所有活动,不再区分玩法)
- 详情/期次页可显示版本号与算法
- 一番赏序号映射:只读查看映射;顶部显示当前活动
seed_version
抽奖流程
- 即时/定时调用策略前:校验活动承诺
- 抽奖回执携带:
seed_version、algo
测试与验收
- 生成承诺版本递增与哈希一致性
- 策略在承诺存在时正常运行、缺失时明确错误
- 一番赏映射稳定性(同版本稳定)
上线步骤
- 执行
activities字段迁移 - 接入生成与概览接口
- 改造策略读取活动承诺
- 更新前端活动管理显示与按钮
- 移除前端/后端期级承诺路径(保留表但不访问)