Some checks failed
Build docker and publish / linux (1.24.5) (push) Failing after 39s
feat(抽奖动态): 修复抽奖动态未渲染问题并优化文案展示 fix(用户概览): 修复用户概览无数据显示问题 feat(新用户列表): 在新用户列表显示称号明细 refactor(待办事项): 移除代办模块并全宽展示实时动态 feat(批量操作): 限制为单用户操作并在批量时提醒 fix(称号分配): 防重复分配称号的改造计划 perf(接口性能): 优化新用户和抽奖动态接口性能 feat(订单漏斗): 优化订单转化漏斗指标计算 docs(测试计划): 完善盲盒运营API核查与闭环测试计划
92 lines
4.6 KiB
Markdown
92 lines
4.6 KiB
Markdown
## 范围
|
||
|
||
* 覆盖活动/期/奖励、随机承诺与抽奖、称号/效果、用户资产(优惠券/道具卡/积分)、用户与公会、商品与轮播、菜单权限。
|
||
|
||
* 验证管理端鉴权与超管权限;核查风险接口与配置密钥安全。
|
||
|
||
## 现状与疑点
|
||
|
||
* 鉴权:管理端认证路由启用(internal/router/router.go:58-66);但存在非鉴权初始化接口(seed\_default、ensure\_titles)—需确认是否保留。
|
||
|
||
* 活动列表(管理端):未提供 `GET /api/admin/activities` 列表;前端使用 APP 端 `GET /api/app/activities` 作为数据源(web/admin/src/api/activity.ts:31)。
|
||
|
||
* 优惠券发放:`POST /api/admin/users/{user_id}/coupons/add`(internal/router/router.go:121;internal/api/admin/users\_admin.go:596-616)未见配额/用户上限校验(服务层 AddCoupon)。
|
||
|
||
* 道具卡分配:`POST /api/admin/users/{user_id}/item_cards`(internal/api/admin/item\_cards\_admin.go:355-376)仅超管限制,但无用户上限与批量安全边界(服务层 AddItemCard)。
|
||
|
||
* 称号效果:后端对 `params_json` 仅做非空(internal/api/admin/titles\_admin.go:173-213,221-277),运行期解析失败会静默忽略(internal/service/activity/draw\_with\_effects.go:104-149)。
|
||
|
||
* 抽奖随机:HMAC与拒绝采样实现正确(internal/service/activity/random\_commit.go:70-81;draw\_execute.go:43-51,131-145);主密钥明文在配置(configs/fat\_configs.toml:32)。
|
||
|
||
## 缺口清单(可能不足)
|
||
|
||
* 管理端活动列表与搜索:缺 `GET /api/admin/activities`;当前运维依赖 APP 列表接口,可能不满足运营筛选需求。
|
||
|
||
* 优惠券/道具卡风控:缺配额扣减、用户持有上限、幂等与审计日志;易被滥用。
|
||
|
||
* 称号效果参数校验:缺严格模式与数值边界;配置易失真或异常。
|
||
|
||
* 安全:非鉴权初始化接口(seed/ensure)在生产不宜暴露;密钥应迁移到环境变量。
|
||
|
||
## 闭环测试计划(管理端)
|
||
|
||
* 登录鉴权
|
||
|
||
* `POST /api/admin/login` 使用后台账号 `admin / chat2025` 拿到 `Authorization`。
|
||
|
||
* 活动与期
|
||
|
||
* 创建活动:`POST /api/admin/activities`;创建期:`POST /api/admin/activities/{id}/issues`。
|
||
|
||
* 配置奖励:`POST /api/admin/activities/{id}/issues/{issue}/rewards`。
|
||
|
||
* 随机承诺:`POST /.../commit_random` → `GET /.../commit_random` → `GET /.../commit_random/history`。
|
||
|
||
* 抽奖执行与验证
|
||
|
||
* 执行抽奖(APP鉴权):`POST /api/app/activities/{id}/issues/{issue}/draw`(需APP用户token)。
|
||
|
||
* 管理端批量抽取(运营回归):`POST /api/admin/activities/{id}/issues/{issue}/batch_draw`。
|
||
|
||
* 抽奖收据验证:`POST /api/admin/activities/{id}/issues/{issue}/verify_draw`;查看收据:`GET /api/admin/draw_receipts/{draw_id}`。
|
||
|
||
* 称号与效果(type=5/6)
|
||
|
||
* 创建称号:`POST /api/admin/system_titles`;添加效果:`POST /api/admin/system_titles/{title_id}/effects`(参数按文档模式)。
|
||
|
||
* 分配用户称号:`POST /api/admin/users/{user_id}/titles`,设置有效期(确保“只取最新激活”策略)。
|
||
|
||
* 在指定期抽奖,核查“概率加成”权重调整与“双倍概率”翻倍命中(查看批量抽取统计)。
|
||
|
||
* 用户资产
|
||
|
||
* 发放优惠券:`POST /api/admin/users/{user_id}/coupons/add`;查询用户券:`GET /api/admin/users/{user_id}/coupons`。
|
||
|
||
* 分配道具卡:`POST /api/admin/users/{user_id}/item_cards`;查询卡列表:`GET /api/admin/users/{user_id}/item_cards`。
|
||
|
||
* 添加积分:`POST /api/admin/users/{user_id}/points/add`;查询积分与余额:`GET /api/admin/users/{user_id}/points`、`/points/balance`。
|
||
|
||
* 安全回归
|
||
|
||
* 非鉴权路由只保留登录;其他改动接口需 `Authorization`。
|
||
|
||
* 校验后台超管限制(优惠券发放/道具卡分配),普通管理员应被拒绝。
|
||
|
||
## 缺陷验证点
|
||
|
||
* 称号效果参数错误时应返回 400(当前静默忽略的路径需提示)。
|
||
|
||
* 优惠券发放应拒绝过期模板与总量耗尽;道具卡发放应限制批量与用户持有上限。
|
||
|
||
* 抽奖随机性验证:同一承诺版本重复验证一致;拒绝采样不产生取模偏差。
|
||
|
||
## 交付
|
||
|
||
* 提供接口调用序列与测试数据清单(活动/期/奖励/称号/效果参数/指定用户)。
|
||
|
||
* 输出问题清单与修复建议(接口、权限、风控、参数校验、密钥安全)。
|
||
|
||
* 可选:生成 Postman/HTTPie 脚本或后端集成测试(go test)便于自动化回归。
|
||
|
||
确认后,我将按以上计划执行闭环测试,汇总问题与修复建议,并提供测试脚本(不使用 curl 的情况下可采用内置工具或 Postman 集合)。
|