# 七日签到单账号快速测试 ## 安全配置 只在测试环境发布 `signInTestAdmin`,并在 Laf 应用环境变量中设置一个高强度随机值: ```text SIGN_IN_TEST_ADMIN_TOKEN=<随机管理密钥> ``` 环境变量未配置或请求密钥不匹配时,接口完全不可用。不要把该密钥写入前端代码,也不要在正式环境发布此函数。 接口使用 `POST /signInTestAdmin` 和 `application/x-www-form-urlencoded`。 公共参数: | 参数 | 说明 | | --- | --- | | `adminToken` | 与环境变量 `SIGN_IN_TEST_ADMIN_TOKEN` 相同 | | `uid` | 唯一测试账号的用户 `_id` | | `action` | `inspect`、`reset`、`set_level` 或 `prepare` | ## 操作接口 ### 查看当前测试状态 ```text action=inspect&uid=&adminToken= ``` 返回玩家 `levelAmount`、`signInActivity`、领取数量和领取记录。 ### 清空签到状态 ```text action=reset&uid=&adminToken= ``` 清空该账号的 `users.signInActivity` 和所有 `sign_in_activity_claims` 记录,不修改关卡和资产。 ### 设置测试关卡 ```text action=set_level&uid=&levelAmount=23&adminToken= ``` 只修改 `users.levelAmount`,不修改签到状态和资产。 ### 准备测试场景 ```text action=prepare&uid=&scenario=<场景>&adminToken= ``` | scenario | 准备结果 | 下一步验证 | | --- | --- | --- | | `locked` | 关卡设为门槛减 1,清空活动和领取记录 | 请求活动信息应返回 `data: false` | | `eligible` | 关卡设为门槛,清空活动和领取记录 | 请求活动信息应创建活动并返回奖励列表 | | `day_1_ready` | 活动已开启且尚未领取 | 领取 Day 1 | | `day_2_ready` | 已预置 Day 1 历史记录 | 领取 Day 2 | | `day_3_ready` | 已预置 Day 1~2 历史记录 | 领取 Day 3 | | `day_4_ready` | 已预置 Day 1~3 历史记录 | 领取 Day 4 | | `day_5_ready` | 已预置 Day 1~4 历史记录 | 领取 Day 5 | | `day_6_ready` | 已预置 Day 1~5 历史记录 | 领取 Day 6 | | `day_7_ready` | 已预置 Day 1~6 历史记录 | 领取 Day 7 并验证完成状态和猫 12 | | `claimed_today` | 已预置今天的 Day 1 领取记录 | 再次领取应返回“今天已经领取” | | `expired` | 活动结束时间设为当前自然日零点 | 活动状态应为 `expired`,领取应失败 | | `completed` | 已预置七天领取记录及完成时间 | 活动状态应为 `completed`,领取应失败 | 每次 `prepare` 都会先删除该测试账号原有的签到领取记录,并覆盖该账号的签到活动状态,但不会发放或扣除任何实际资产。 ## 推荐测试顺序 `signInActivityInfo` 现在会自动领取。以下每次准备 `day_N_ready` 后,直接请求活动信息,检查 `todayClaim.rewardDay`、奖励内容和 `canClaim: false`。当天再次请求应返回相同 `claimId`,前端不得重复发奖;完成和过期场景不得新增记录。检查数据库状态可使用 `signInTestAdmin inspect`,避免活动信息请求触发领取。 1. `prepare locked`,验证未达标不展示。 2. `prepare eligible`,验证首次请求创建活动且重复请求不重置时间。 3. 依次使用 `day_1_ready` 至 `day_7_ready`,逐档验证前端奖励。 4. `prepare claimed_today`,验证重复点击和重复请求。 5. `prepare expired`,验证过期页面和禁止领取。 6. `prepare completed`,验证完成页面和禁止领取。 7. 测试结束执行 `reset`。