## 范围 * 覆盖活动/期/奖励、随机承诺与抽奖、称号/效果、用户资产(优惠券/道具卡/积分)、用户与公会、商品与轮播、菜单权限。 * 验证管理端鉴权与超管权限;核查风险接口与配置密钥安全。 ## 现状与疑点 * 鉴权:管理端认证路由启用(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 集合)。