You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
4.2 KiB
42 lines
4.2 KiB
|
19 hours ago
|
# 01 · e2e-core / e2e-heavy 契约改写
|
||
|
|
|
||
|
|
Type: task
|
||
|
|
Status: resolved
|
||
|
|
|
||
|
|
## Question
|
||
|
|
|
||
|
|
round-1 的 e2e-core.py(112 例 / 55 端点)与 e2e-heavy.py(6 轮)写于返工前旧契约,约半数调用已死(PUT/DELETE/路径变量/@RequestBody JSON)。全部调用层改写到返工后扁平动作动词契约,保持或显式重定义断言语义,使套件在新契约上可重跑。
|
||
|
|
|
||
|
|
要点:
|
||
|
|
|
||
|
|
1. **逐用例映射**:PUT/DELETE → POST 动词、`/{id}` → `?id=`、workspace 进表单字段、`roleType`→`role`、PATH_OP 扁平化、@RequestBody → 表单绑定、edit 补 CAS `version+isBizNegotiated+isChild`——映射坑位直接复用 demo 票 10 对照表(`.scratch/customer-e2e/issues/10-demo-contract-sync.md`)
|
||
|
|
2. **断言语义**:旧行为随返工改变的用例(如看板对 pool 从数据返回变 67001 拒绝)断言跟着改并记录改了什么
|
||
|
|
3. **产出**:用例×端点矩阵刷新表 + 缺陷用例处置表(D-01 已修复验预期转绿;D-05/D-07/D-04 标「缺陷验证模式」——预期失败、不阻断、不重复排查)
|
||
|
|
4. **静态验收**:改写后 grep 零旧契约残留(`PUT|DELETE|/api/customer/\d+/`、`/{id}` 拼接等),对照 `dump_api_out.txt` 全部调用命中
|
||
|
|
|
||
|
|
素材:`.scratch/customer-module/API-SUMMARY.md`(73 端点权威)、`.scratch/customer-rework/dump_api_out.txt`、round-1 两脚本(`.scratch/customer-e2e/e2e-core.py` / `e2e-heavy.py`)。
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Answer
|
||
|
|
|
||
|
|
**承载方式**:复制 r2 版本(`.scratch/customer-e2e/e2e-core-r2.py` 884 行 / `e2e-heavy-r2.py` 910 行),不覆盖 round-1 原件,历史可追溯;结果产物落本目录。两脚本 py_compile PASS、UTF-8 无 BOM。
|
||
|
|
|
||
|
|
**改写内容**(全量明细见 [matrix-r2.md](../matrix-r2.md)):
|
||
|
|
|
||
|
|
- **URL / method 层 34 处**:PUT/DELETE → POST 动词、`/{id}` → `?id=`、workspace 进表单字段、`POST /api/customer` → `/create`、PATH_OP 扁平化(focus 族)、`@RequestBody` → 表单绑定(reminder save 五字段)等;transfer/assign 的 `List<Long>` 多值绑定经 Controller 签名实核(params 多值,非 form)。
|
||
|
|
- **参数 / 出参层 5 处**:company-lookup 参数名 `companyName`(API-SUMMARY §2.3)、联系人补必填 phone、members `roleType`→`role` 显式断言、restart_service JVM 候选列表兜底、import `_upload` 加 `duplicate_strategy` seam(票 02 F8 挂点)。
|
||
|
|
- **同形不改 4 族**:Ownership 族、preference saved-view 族(全平台唯一 @RequestBody JSON 例外)、check 族、import upload / transfer 族。
|
||
|
|
- **断言语义变更 7 处**(逐条记录于 matrix-r2.md §二):oplog 白名单 11→17 种、append-only 断言改打未注册 `follow/edit` 端点、confirmSimilar 断言翻转(返工票 04 已销缺口)、F-16 查重单例前提更新、幽灵客户补 phone 聚焦 67002、D-08 续编消歧(round-1 core/heavy 的 D-02 编号冲突)。
|
||
|
|
|
||
|
|
**缺陷用例处置**(matrix-r2.md §三):D-01 预期转绿(已修复验);D-02/D-03 分支保留可能复现;D-04/D-05/D-06/D-07 缺陷验证模式(预期失败、warn 不阻断、不重复排查);新缺陷自 **D-08** 续编。
|
||
|
|
|
||
|
|
**静态验收(要点 4)——PASS**:
|
||
|
|
|
||
|
|
1. grep 零旧契约残留(`'PUT'|'DELETE'` 字面量、`sess.put/delete`、URL 路径拼接均 0)
|
||
|
|
2. 调用×端点对账 **55 调用端点 = 54 命中 `dump_api_out.txt` + 1 预期例外**(`POST /api/customer/follow/edit`,append-only 断言故意打的未注册端点),零未命中 → [calls-r2.json](../calls-r2.json)(对账工具 [scan_calls.py](../scan_calls.py) 保留可复跑)
|
||
|
|
3. 客户域 73 端点未覆盖 19:**10 个 = 票 02 增量范围**(agreement×5、dedup get/save、view-form get/save、company-lookup 的 batch-update),9 个 = round-1 即未覆盖的维持项(ping、`POST /api/customer/page`、contact/detail、列偏好 get/save、claim/assign/release-pool 批量三兄弟、reminder 读端点)——不进票 02 票面,票 06 对账附录如实记录
|
||
|
|
4. 两脚本语法与编码验收 PASS(见上)
|
||
|
|
|
||
|
|
**移交**:票 02 输入 = 上述 10 端点新用例 + `_upload` duplicateStrategy 变体 + detail-head viewTouch 副作用断言 + oplog action 值域断言;票 04 = core→heavy→增量执行顺序、heavy 六轮深度(D-07 计时)现场定。
|