fix: 部分收付累计释额并扩展结算 E2E 与 CI
Some checks failed
lotterLaravel CI / test (push) Has been cancelled
lotterLaravel E2E / e2e-api (push) Has been cancelled

账期收付改为按累计已付同步 credit_ledger,修复多笔 partial_paid 与坏账核销重复释额;新增 API E2E(占成、权限、部分收付/坏账)与 GitHub Actions e2e-api job。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-22 09:48:01 +08:00
parent 6ec9634704
commit 3f29229499
23 changed files with 1251 additions and 111 deletions

View File

@@ -44,11 +44,17 @@ e2e/
│ │ ├── 13.credit-settlement-win.spec.ts # 信用盘中奖释额
│ │ ├── 14.settlement-payment.spec.ts # 账期 confirm + 收付
│ │ ├── 15.reconcile-job.spec.ts # pending_reconcile 扫描
│ │ ├── 16.agent-share-bill.spec.ts # 代理占成账单
│ │ ├── 17.settlement-partial-payment.spec.ts # 部分收付
│ │ ├── 18.settlement-permissions.spec.ts # 站点财务/代理权限
│ │ ├── 19.settlement-bad-debt-partial.spec.ts # 部分收付后坏账
│ │ ├── _helper.ts # 共享步骤
│ │ └── helpers/draw-settlement.ts # 结算流水线
│ └── ui/
│ ├── admin-login.spec.ts
── front-login-hall.spec.ts
── admin-settlement-center.spec.ts
│ ├── front-login-hall.spec.ts
│ └── front-place-bet.spec.ts
├── database/seeders/
│ └── E2EPlayerSeeder.php # 建可登录玩家E2E\Seeders 命名空间)
├── routes/e2e.php # 仅 /api/v1/_e2e/* 路由
@@ -98,8 +104,8 @@ composer.json # autoload-dev 加 E2E\Seeders\, E2E\Pr
6. **`php artisan lottery:db-init --fresh`** ⚠️ 重建 `lottery_e2e` 库(**只**作用于此库,绝不碰其他库)
7. 跑 `E2EPlayerSeeder`(建可登录玩家)
8. 起 `php artisan serve`8000`queue:work redis`(默认队列)、`reverb:start`8080
9. `npx playwright install chromium`(首次)
10. `npx playwright test`
9. UI 测试默认用本机 **Google Chrome**`playwright.config.ts` `channel: 'chrome'`**无需**下载 Playwright Chromium
10. `npx playwright test`(若要用自带 Chromium`PLAYWRIGHT_USE_BUNDLED_CHROMIUM=1 ./e2e/scripts/run.sh`
跑完按 Ctrl+C 自动停 serve/queue/reverb。`docker compose down -v` 自行决定(脚本不删 volume下次跑快
@@ -144,7 +150,7 @@ PLAYWRIGHT_API_URL=http://127.0.0.1:8000 \
| 玩家登录 / 失败 / 锁定 | 02.player-auth | 4 | ✅ |
| 玩家钱包 + 下注 + 幂等 | 03.wallet-ticket | 3 | ✅ |
| 超管登录 / dashboard / 401 | 04.admin-auth | 3 | ✅ |
| 玩家 transfer-in/out + 1001/1010 | 05.wallet-transfer | 7 (+2 skip) | ✅ |
| 玩家 transfer-in/out + 1001/1010 | 05.wallet-transfer | 7 | ✅ |
| 钱包流水一致性 + 过滤 + 分页 | 06.wallet-logs | 4 | ✅ |
| 超管创建/冻结/解冻/查玩家 | 07.admin-player | 6 | ✅ |
| 开奖+结算+派彩 完整链路 | 08.draw-publish-settle | 1 | ✅ 确定性 poll |
@@ -155,10 +161,16 @@ PLAYWRIGHT_API_URL=http://127.0.0.1:8000 \
| 信用盘中奖释额 game_settlement_win | 13.credit-settlement-win | 1 | ✅ |
| 账期 confirm + 登记收付闭环 | 14.settlement-payment | 1 | ✅ |
| pending_reconcile → reconcile-jobs | 15.reconcile-job | 1 | ✅ |
| 代理占成账单 share_profit | 16.agent-share-bill | 1 | ✅ |
| 部分收付 partial_paid → settled | 17.settlement-partial-payment | 2 | ✅ |
| 站点财务收付 / 绑定代理禁坏账 | 18.settlement-permissions | 1 | ✅ |
| 部分收付后坏账核销 | 19.settlement-bad-debt-partial | 1 | ✅ |
| 管理端 UI 登录 | ui/admin-login | 1 | ✅ |
| 管理端 UI 结算中心 | ui/admin-settlement-center | 1 | ✅ |
| 玩家端 UI 登录进大厅 | ui/front-login-hall | 1 | ✅ |
| 玩家端 UI 下注提交 | ui/front-place-bet | 1 | ✅ |
合计 ~36 个用例覆盖 e2e 关键链路。
合计 ~43 个用例覆盖 e2e 关键链路。
## 已知未覆盖(需外部依赖或重构成本高)
@@ -194,15 +206,20 @@ npx playwright test 05.wallet-transfer.spec.ts --headed
- **测试卡住**:脚本的 `cleanup` 钩子 Ctrl+C 会停 artisan/queue/reverb
- **player 登录 401**`curl -X POST http://127.0.0.1:8000/api/v1/_e2e/reset-player` 重置玩家
## CI 集成(参考)
## CI 集成
```yaml
# .github/workflows/e2e.yml
- name: e2e
run: ./e2e/scripts/run.sh
- uses: actions/upload-artifact@v4
if: failure()
with:
name: e2e-artifacts
path: e2e/artifacts/
仓库已包含 `.github/workflows/e2e.yml`push/PR 自动跑 API 项目;`E2E_UI=0` 不启前后端 dev server
本地跑全量(含 UI
```bash
./e2e/scripts/run.sh
```
仅 API与 CI 一致):
```bash
E2E_UI=0 ./e2e/scripts/run.sh
```
失败产物:`e2e/artifacts/``e2e/logs/`