docs(pool): 更正实施记录的测试数字(基线 671 / 净新增 95)
- 「基线 727 / 新增 39」**两个数都错**:727 是 P1 完成时跑的全量,那时已经含了我 自己加的 56 条用例,被我误当成基线。真实基线是分叉点 `main@281769b` 的 `671 passed, 6 skipped`,净新增 **95**(6 个新测试文件 93 条 + overview 补 2 条), `671 + 95 = 766` 可复算。更正过程也留在文档里,因为这个错法容易再犯。 - 顺带更正同节另一处:`**task_actor(task)` 调用点是 **14** 个(初稿写 13)。 - 补记唯一租约的反向验证**复验**结果:摘掉 `uq_lease_active_account` 后 恰好 2 个用例变红、重建后变绿;并记下结论 —— 该索引是**真承重**的, 仅靠「排除已租」的查询挡不住(第二个会话看不到第一个会话刚写入的租约)。 本次只改文档,无代码/迁移改动。
This commit is contained in:
+11
-3
@@ -902,8 +902,16 @@ WHERE a.ck_check_status='valid' AND a.elite_opened=1
|
||||
## 8. 实施记录(2026-10-07)
|
||||
|
||||
> 状态:**已按本设计落地,测试通过;只在本地验证,未上生产**(第 10 条)。
|
||||
> 全量:`766 passed, 6 skipped`(改动前基线 727);新增 39 个用例;
|
||||
> 全量:`766 passed, 6 skipped`;新增 **95** 个用例
|
||||
> (6 个新测试文件 93 条 + `test_account_overview.py` 补 2 条 D1 用例)。
|
||||
> **基线是分叉点 `main@281769b`:`671 passed, 6 skipped`** ——
|
||||
> `671 + 95 = 766` 可复算。
|
||||
> `ruff check` 与前端 `tsc -b` 均干净。
|
||||
>
|
||||
> 📌 更正(2026-10-07):本节初稿曾写「基线 727 / 新增 39」,**两个数都错** ——
|
||||
> 727 是 P1 完成时跑的全量,那时**已经含了我自己加的 56 条用例**,被我误当成了基线。
|
||||
> 真实基线 671、净新增 95。留在这里是因为「把带自己改动的中间态当成基线」
|
||||
> 这个错法很容易再犯:**先确认基线是在哪个提交上量的**。
|
||||
|
||||
### 8.1 落地清单
|
||||
|
||||
@@ -914,7 +922,7 @@ WHERE a.ck_check_status='valid' AND a.elite_opened=1
|
||||
| P1 · 服务 | `services/account_pool.py`:候选筛选、两梯队排序、供给与成本预估、租约领取/释放/回收、充值拆单与校验、补给链编排 |
|
||||
| P1 · 接口 | `routers/douyu_pool.py`:`GET /supply`、`POST /exchange`、`GET /leases`、`POST /leases/{id}/release`、`POST /leases/release-batch/{batch_id}` |
|
||||
| P1 · 权限 | `account:pool_use`(含 support)、`account:pool_admin`(超管/运营) |
|
||||
| P1 · 流水 | 业务事件补 `actor_id = task.created_by`(7 个构造函数 + 13 个调用点);`GET /accounts/{id}/events` 支持 `actor_id` 筛选并返回 `actor_name` |
|
||||
| P1 · 流水 | 业务事件补 `actor_id = task.created_by`(7 个 `record_*` 函数 + 14 个 `**task_actor(task)` 调用点);`GET /accounts/{id}/events` 支持 `actor_id` 筛选并返回 `actor_name` |
|
||||
| P1 · 上限 | `create_gold_qr` 服务端校验单次 ≤ 800 元;池路径超限自动拆单 |
|
||||
| P1 · 回收 | `_mark_task` 终态钩子即时释放租约 |
|
||||
| P2 · 作业 | `automation/jobs/account_lease_reaper.py`(TTL 到期 / 漏释放 / 孤儿批次),`run_interval_seconds=60` |
|
||||
@@ -943,7 +951,7 @@ WHERE a.ck_check_status='valid' AND a.elite_opened=1
|
||||
| `ruff check` / `pytest` / `tsc -b` | 全部通过 |
|
||||
| dev 库是否需要归属移交 | **不需要**:12 个账号 `assigned_to` 全为 NULL,本来就都是池成员 |
|
||||
| 反向验证 ① D1 | 撤掉 `subject_key` 的实现 → 2 个用例变红;恢复 → 变绿 |
|
||||
| 反向验证 ② 唯一租约 | 去掉 `uq_lease_active_account` → 并发/重复领取 2 个用例变红;恢复 → 变绿 |
|
||||
| 反向验证 ② 唯一租约 | 摘掉 `uq_lease_active_account` → `test_second_lease_on_same_account_is_rejected` 与 `test_concurrent_lease_from_two_sessions_only_one_wins` **2 个用例变红**;重建索引 → 变绿(复验于 2026-10-07,索引是**真承重**:仅靠「排除已租」的查询挡不住 —— 第二个会话看不到第一个会话刚写入的租约) |
|
||||
| 反向验证 ③ 回填脚本 | 让 `--dry-run` 真的写库 → 对应用例变红;恢复 → 变绿 |
|
||||
| 反向验证 ④ 运行期闸门 | `_skip_when` / `_depends_on` 各有"不该跳却跳 / 该跳没跳"的双向用例 |
|
||||
|
||||
|
||||
Reference in New Issue
Block a user