active
This commit is contained in:
@@ -1,73 +0,0 @@
|
||||
---
|
||||
name: 测试 register bet win
|
||||
overview: 设计一套不改代码的联调测试方案,覆盖 register、bet、win(含中间派奖+最终结算)主流程、幂等与关键校验。输出可直接执行的请求序列和验收点。
|
||||
todos:
|
||||
- id: collect-endpoints
|
||||
content: 整理 register/bet/win 的可调用入口与参数最小集合
|
||||
status: completed
|
||||
- id: define-test-cases
|
||||
content: 设计主链路、幂等、参数异常三类用例
|
||||
status: completed
|
||||
- id: prepare-request-templates
|
||||
content: 产出按执行顺序排列的请求模板与预期结果
|
||||
status: completed
|
||||
isProject: false
|
||||
---
|
||||
|
||||
# Register/Bet/Win 测试计划
|
||||
|
||||
## 目标
|
||||
- 用最小链路验证 `register -> bet -> win` 的资金变更与返回口径。
|
||||
- 覆盖 `win` 的两阶段结算(`is_end=0` 中间派奖、`is_end=1` 最终结算)。
|
||||
- 覆盖关键风控点:幂等(重复 `biz_id`)、参数校验(`round_id`、`is_end`、金额)。
|
||||
|
||||
## 关键实现依据(用于制定用例)
|
||||
- 接口入口与兼容关系:[`app/api/controller/WalletController.php`](app/api/controller/WalletController.php)
|
||||
- `wallet/bet`、`wallet/win` 为独立入口;`wallet/update(type=bet|win)` 复用同链路。
|
||||
- 业务分发与资金处理:[`app/api/logic/WalletLogic.php`](app/api/logic/WalletLogic.php)
|
||||
- `register` 走 `RegisterService::execute`。
|
||||
- `bet` 按 `biz_id` 做幂等。
|
||||
- `win`:`is_end=0` 只累计待结算金额,`is_end=1` 才真正入账并清理缓存。
|
||||
- 注册落账与 Lot 初始化:[`app/service/wallet/RegisterService.php`](app/service/wallet/RegisterService.php)
|
||||
- 注册会初始化钱包、统计行,并按 `fee/bonus` 创建 Deposit/Bonus Lot。
|
||||
- 请求参数约束:[`app/validator/Wallet2Validator.php`](app/validator/Wallet2Validator.php)
|
||||
- bet/win 必传 `round_id`,`is_end` 仅支持 `0/1`。
|
||||
|
||||
## 测试范围与步骤
|
||||
1. **准备阶段**
|
||||
- 选一个全新 `uid`(避免历史账干扰)。
|
||||
- 固定 `currency/source/organization`,并准备唯一 `biz_id` 生成规则(例如带时间戳)。
|
||||
|
||||
2. **主链路测试(Happy Path)**
|
||||
- 调 `wallet/update` 发起 `register`(`type=register`,带 `fee` 与 `bonus`)。
|
||||
- 调 `wallet/wallet` 查询余额基线。
|
||||
- 调 `wallet/bet`(带 `round_id`)验证扣款与返回结构。
|
||||
- 调 `wallet/win` 且 `is_end=0`:确认返回中 `withdraw` 临时增加(待结算展示),但不落最终账。
|
||||
- 调 `wallet/win` 且 `is_end=1`:确认最终入账,并清理该 `round_id` 的待结算累计。
|
||||
|
||||
3. **幂等与异常场景**
|
||||
- 重放同一 `bet.biz_id`:应命中幂等,余额不重复变化。
|
||||
- 重放同一 `win.biz_id`:应命中幂等,余额不重复变化。
|
||||
- 缺失 `round_id` 调 bet/win:应返回参数错误。
|
||||
- 传非法 `is_end`(如 2):应返回参数错误。
|
||||
|
||||
4. **验收口径**
|
||||
- 余额变化符合顺序:下注优先扣 Bonus,再 Deposit,再 Withdraw。
|
||||
- `win` 仅在最终结算时落地资金结果;中间派奖只累计。
|
||||
- 重复请求无重复记账,返回语义稳定。
|
||||
|
||||
## 建议请求流(逻辑顺序图)
|
||||
```mermaid
|
||||
flowchart TD
|
||||
registerCall[register(update)] --> walletCheck1[wallet_query]
|
||||
walletCheck1 --> betCall[bet]
|
||||
betCall --> winMid[win_is_end_0]
|
||||
winMid --> walletCheck2[wallet_query]
|
||||
walletCheck2 --> winFinal[win_is_end_1]
|
||||
winFinal --> walletCheck3[wallet_query]
|
||||
walletCheck3 --> idemReplay[replay_same_biz_id]
|
||||
```
|
||||
|
||||
## 交付物
|
||||
- 一份可直接在 Postman/curl 执行的请求模板(含示例 body)。
|
||||
- 一份对照清单:每一步的“预期返回 + 余额期望 + 幂等期望”。
|
||||
Reference in New Issue
Block a user