Files
cursor/plans/free_credits_部署文档_149ece64.plan.md
ray zhou 2dd9f17da9 ok
2026-06-29 14:51:55 +08:00

7.2 KiB
Raw Permalink Blame History

name, overview, todos, isProject
name overview todos isProject
Free Credits 部署文档 为「后续档瀑布拆分 + 每档新增累计充值解锁」编写上线部署文档,覆盖 DB 迁移、服务发布顺序、存量兼容、验收与回滚。
id content status
write-deploy-md 确认后将本文档写入 slot_console/doc/FreeCredits瀑布分档部署说明.md completed
id content status
commit-and-pr slot_console / slot_admin / slot_admin_vue 提交并提 PR merge pending
id content status
run-db-migrate 各环境先执行 migrate_free_credits_release_tiers.sql 再发 console pending
id content status
post-deploy-verify 按 §6 验收新定格 + 存量 grandfather + 后台配置 pending
false

Free Credits 瀑布分档 — 部署文档

1. 变更摘要

说明
需求 首充定格后,剩余金额按 10/20/30/50/100 瀑布拆分;后续档按「每档新增累计充值」解锁
影响服务 slot_console(核心)、slot_admin + slot_admin_vue(后台配置文案/校验)
不影响 slot_wallet定格/冻结/Claim、slot_pay第一档提现、第一档 $20 / 累计 $50 解锁规则
分支 fix/upActivity(待 merge

2. 发布前检查

  • 代码已 merge 到目标分支并通过 CI
  • 单测已通过:
    docker exec -w /app/www/slot/slot_console php82 \
      ./vendor/bin/phpunit tests/Unit/FreeCreditsLogicAmountTest.php \
      tests/Unit/FreeCreditsAdvanceUnlockTest.php
    
  • 确认线上是否存在在途 Free Credits 用户(已定格、未完成全部档位)
  • 与产品确认:存量用户走 grandfatherunlock_recharge_qf=0 仍用旧单笔解锁规则)

3. 数据库迁移(必须先于代码)

s_common
脚本slot_console/db/migrate_free_credits_release_tiers.sql

ALTER TABLE s_common.free_credits_package
    ADD COLUMN unlock_recharge_qf bigint unsigned NOT NULL DEFAULT 0
        COMMENT '解锁本档所需新增累计真实充值(千分位),自上一档解锁后起算'
        AFTER amount_qf;

ALTER TABLE s_common.free_credits_player
    ADD COLUMN recharge_baseline_qf bigint unsigned NOT NULL DEFAULT 0
        COMMENT '后续档计数起点wallet.totalRecharge 快照(千分位)'
        AFTER first_cash_amount_qf;

3.1 执行方式

# 示例:容器内 MySQL
docker exec -i goMysql mysql -uroot -p<password> < migrate_free_credits_release_tiers.sql

3.2 迁移后校验

-- 列存在且默认 0
SHOW COLUMNS FROM s_common.free_credits_package LIKE 'unlock_recharge_qf';
SHOW COLUMNS FROM s_common.free_credits_player LIKE 'recharge_baseline_qf';

-- 存量数据应为 0旧规则兼容
SELECT COUNT(*) FROM s_common.free_credits_package WHERE unlock_recharge_qf != 0;
-- 上线前应为 0新定格用户上线后才会有非 0 值

3.3 注意事项

  • 先 DDL、后发代码:新代码会读写 unlock_recharge_qf / recharge_baseline_qf;缺列会导致定格/解锁失败
  • 新装环境直接用 slot_console/db/install.sql(已含两列)
  • 迁移幂等:若列已存在会报错,勿重复执行;可用 information_schema 先查再执行

4. 代码发布顺序

flowchart LR
  db[1_DB迁移]
  console[2_slot_console]
  admin[3_slot_admin]
  vue[4_slot_admin_vue]
  db --> console --> admin --> vue
顺序 仓库 变更要点
1 DB 执行 §3 迁移
2 slot_console FreeCreditsLogic 瀑布拆分 + 增量解锁Modelinstall.sql
3 slot_admin ActivityValidate::checkFreeCreditsExtpackage_amount / subsequent_min_recharge 改为可选
4 slot_admin_vue 活动编辑页废弃提示列表页展示「10/20/30/50/100 瀑布」

无需重启/发布slot_wallet、slot_pay、slot_pwa本次无接口字段变更C 端 unlock_recharge_amount 为可选增强,未做)


5. 存量用户兼容Grandfather

用户类型 拆分规则 解锁规则
上线前已定格 保持原档位行不变 unlock_recharge_qf=0 → 仍按 subsequent_min_recharge 单笔解锁
上线后新定格 buildReleasePackages() 瀑布拆分 unlock_recharge_qf + recharge_baseline_qf 增量累计解锁

无需对存量数据做 backfill。
若运营希望存量也切新规则,需单独产品决策 + 数据修复脚本(不在本次范围)。


6. 上线后验收

6.1 新用户定格(核心)

  1. 测试账号:注册 → 赢取门槛 → 首充定格(如定格 $78.50,第一档 $20
  2. 查库:
    SELECT package_no, amount_qf, unlock_recharge_qf, status
    FROM s_common.free_credits_package
    WHERE player_id = ?
    ORDER BY package_no;
    
  3. 期望 release 档:10000×3, 20000, 8500unlock9000, 9000, 9000, 19000, 8000
  4. 查 playerrecharge_baseline_qf = 定格时 wallet 累计充值

6.2 解锁链路

  1. 累计充满 $50 → 第一档变 ready规则未变
  2. 第一档解锁后 recharge_baseline_qf 更新为当前 totalR
  3. 再新增累计 $9 → 第一个 $10 release 档变 readybaseline 再次前移
  4. 尾档:面额 $8.50 时 unlock 为 $88000 qf

6.3 后台

  • 新建/编辑 Free Credits 活动:可不填「解锁拆分金额」「后续解锁最小充值」
  • 活动列表显示「分档规则: 10/20/30/50/100 瀑布(新定格)」

6.4 回归

  • 存量用户(unlock_recharge_qf=0)单笔充值解锁仍正常
  • Claim 入账、第一档提现、金额守恒 sum(release) = frozen - first_cash 不变

7. 回滚方案

场景 操作
代码有问题、DB 已迁移 回滚 slot_console 到上一版本;保留 DB 新列(默认 0旧代码忽略即可
仅后台有问题 单独回滚 slot_admin / slot_admin_vue
误发新代码但未迁移 立即补跑 §3 迁移,或回滚代码

不建议 DROP 新列(除非确认无新定格用户且已回滚代码)。


8. 监控与告警

上线后关注:

  • slot_console 日志Free Credits 定格失败、解锁异常
  • 业务指标:新定格用户的 package 行数分布(应与瀑布规则一致,不再全是 $10 均分)
  • 客诉:「再充多少解锁下一档」— 当前 C 端未返回 unlock_recharge_amount,需 help 文案说明

9. 相关文档


10. 落盘路径

slot_console/doc/FreeCredits瀑布分档部署说明.md

同目录已有 slot_console/doc/首充前免费余额定格与分档释放需求部署说明.md(首版上线 checklist本文档专述瀑布分档 + 增量解锁增量变更,二者并存。