23 KiB
客户模块第二轮 E2E 验收报告(e2e-report-v2.md 终稿)
票 06 聚合产出(2026-09-06)· 聚合自票 01 套件改写(
matrix-r2.md/calls-r2.json)+ 票 02 增量套件(e2e-incr-checks.json/calls-incr.json)+ 票 04 起服全量执行(三套件 checks/specimens/log)+ 票 05 UI 扩展冒烟(demo-smoke-r2-result.json)。 代码基线:客户模块返工后源码(jar 为 2026-09-05 22:29 全量重建产物,本 effort 未改后端源码);契约权威:.scratch/customer-module/API-SUMMARY.md(73 端点)+ Controller 扫描基准dump_api_out.txt(105 端点全平台)。 环境:本地后端localhost:8080(verify profile,corretto-17,CRM_MINIO_AK/SK)+ 远程共享库8.129.84.155;debug tokenGET /api/auth/debug/token?userId=。 数据基线:round-1 seed 17 客户e2c-(KH202609030006-0022)维持复用;增量夹具e2c-r2i-A/B幂等自清理;UI 夹具e2c-r2demo-浏览器-*正门 archive。 判定纪律(沿用 round-1):原型 > spec > 问用户;缺陷只测不修(D-xx 预期失败 warn 不阻断、不重复排查);判 ❌ 前必须核对 Controller 实际 flat 路径;孤立 401 先重试再判缺陷。 图例:✅ 存在且业务可用|⚠ 行为不符/契约差异/被缺陷阻断/取证型断言|❌ 缺失或真实 bug(r2 全部 ❌ 经取证归因用例侧,见 §二 F-15 与 §三 I-04)。
一、执行摘要(round-1 → r2 总对照)
| 维度 | round-1(2026-09-04) | r2(2026-09-05/06) | delta 定性 |
|---|---|---|---|
| API 用例 | 170(core 112 + heavy 58):✅164 ⚠6 ❌0 | 233(core 112 + heavy 58 + incr 63):✅221 ⚠9 ❌3 | 用例 +63(增量套件);⚠ +3(D-02/03 复现口径不变 + 2 条取证型);❌ +3 全部归因用例侧,产品回归 0 |
| core F-01..F-12 | 112 例 ✅110 ⚠2(D-03/D-02) | ✅109 ⚠3 ❌0(D-03/D-02 复现 + F-01 数据态 1 条) | 结论维持;D-01 复验转绿 |
| heavy F-13..F-16 | 58 例 ✅54 ⚠4(D-07/D-05/D-04 连锁) | ✅52 ⚠4 ❌2(D-07/D-05 复现 + F-15 改写偏差 ×2) | 缺陷模式全复现;F-15 ❌ 为用例侧(DB 取证 Job 行为与 r1 一致) |
| 增量 I-01..I-07 | —(端点未存在) | 63 例 ✅60 ⚠2 ❌1(I-04 空 ids 分支盲区) | 返工新增端点族首测,10 端点全覆盖,新缺陷 0 |
| UI 冒烟 | demo_selftest 31 步全 PASS(旧契约) | demo_smoke_r2 20 步全 PASS 首轮一次过(console=0 / page=0 / 57 请求零旧契约形态) | 基线收敛为 11 步 + 详情页签 + 四新入口块 |
| 端点覆盖 | 55 端点(客户域内 54) | 客户域 64/73(core+heavy 54 + incr 新增 10);未覆盖 9 维持项 | +10 = 返工新增端点全量(agreement×5 / dedup×2 / view-form×2 / batch-update) |
| 缺陷台账 | D-01..D-07 有效 6(D-01 已修) | 新缺陷 0;D-01 转绿兑现;D-02/03/05/07 复现;D-08 预留未触发;D-05 家族 UPDATE 路径新证据 | 台账刷新见 §五 |
| Bruno/API-SUMMARY | 57 .bru 交付 + verify_a4 PASS | 只对账不重构;漂移观察位 3 项实证收敛,处置见 §六 | 小漂移 2 处已 patch API-SUMMARY(记档式) |
执行与耗时:core 23.7s(首轮 ❌2 数据态修复后复跑全绿)→ heavy ~7.5min(六轮全跑,fog「执行深度」票 04 现场定案)→ incr 19.8s;UI 冒烟独立起服一轮过。
结论:返工后契约上无产品回归;round-1 五条有效缺陷(D-02/03/04/05/07)全部按预期复现、零恶化;返工新增能力(战略协议/查重设置/批量工商/F8 策略/confirmSimilar/viewTouch/形态偏好)在 API 与 UI 两层全部验证通过。❌3 与 ⚠ 中 2 条取证型均为测试资产质量问题,定性见各节,不阻断收官。
二、API 全量回归 delta(core F-01..F-12 / heavy F-13..F-16)
2.1 core 逐流程对照(r2:✅109 ⚠3 ❌0 | 23.7s)
| 流程 | 用例 | r1 | r2 | delta 说明 |
|---|---|---|---|---|
| F-01 三 workspace 列表 | 12 | ✅ | ⚠1 | 唯一新增 ⚠:customerStage=2 精确过滤命中含 5 家非 seed 公司客户(共享库数据态演化,断言按 seed 名单精确比对不再成立)——行为正确,fog ③ 收敛定案「非文档项」,仅记档 |
| F-02 看板三分组 | 7 | ✅ | ✅ | 维持(stage/star/relation 三列齐、summary 与 page 自洽、越界静默) |
| F-03 saved-view | 10 | ✅ | ✅ | 维持(三 scope 隔离、JSON 例外端点、set-default/delete) |
| F-04 新增+三层查重 | 9 | ✅ | ✅ | 维持(L1/L2 needConfirm/L3 67003;快创 confirmSimilar 主链在此流程) |
| F-05 编辑 | 5 | ⚠ D-03 | ⚠ D-03 | 复现维持:缺 version 实回 67001(spec 约定 67005);CAS 正常路径 ✅ |
| F-06 联系人 | 9 | ✅ | ✅ | 维持(形态改 POST 动词后 create/edit/delete/page/search/check-phone 全通) |
| F-07 详情头部+页签 | 8 | ✅ | ✅ | D-01 复验转绿兑现(交割-甲 opportunityCount==1);汇总卡 5 字段恒 null 维持(占位契约,§5.3 预登记);oplog 值域 17 种白名单通过 |
| F-08 跟进 | 12 | ⚠ D-02 | ⚠ D-02 | 复现维持:过期 nextFollowTime 未拦(应 67009);append-only 探测改打未注册 follow/edit 端点断言非 0(语义等价强化) |
| F-09 关注/重点 | 7 | ✅ | ✅ | 维持(focus 族扁平化后幂等/置位/视图命中全通) |
| F-10 团队成员 | 10 | ✅ | ✅ | 维持(roleType→role 显式断言 OWNER/COLLABORATOR 替代 r1 探测式) |
| F-11 归属动作 | 17 | ✅ | ✅ | 维持(Ownership 族同形不改;archive-batch 整批预检语义不变) |
| F-12 商机侧硬依赖 | 7 | ✅ | ✅ | 翻转①:r1 §5.①「confirmSimilar 无解」销号——needConfirm 后带 confirmSimilar=true 重发落库回新 id(返工票 04 透传);search 三维/excludeCustomerIds/contacts 带出维持 |
2.2 heavy 逐流程对照(r2:✅52 ⚠4 ❌2 | ~7.5min 六轮全跑)
| 流程 | 用例 | r1 | r2 | delta 说明 |
|---|---|---|---|---|
| F-13 客户交割 | 18 | ✅(⚠ D-07) | ✅17 ⚠1 | D-07 复现维持(assignable 30s×2 稳定超时;assign 本体不受影响);preview 圈定/initiate/D22/D23/整批原子/续号全维持。⚠ 套件副作用盲区沉淀:F-13 交割圈定 BUDDY 名下全量且 teardown 不还原——复跑必漂移 collab owner(本轮两次还原,UI 冒烟按此解耦) |
| F-14 客户导入 | 14 | 10✅ 4⚠ | ✅11 ⚠3 | D-05+D-04 连锁复现维持(终态 FAILED / 失败明细 0 行 / r2 行未更新三 warn,缺陷验证模式);r2 文件纯 UPDATE 行的 UPDATE_ONLY 路径正常(F-8 策略变体移交增量套件 I-07) |
| F-15 提醒规则族 | 11 | ✅11 | ✅9 ❌2 | r1 全绿 → r2 两 ❌,经取证归因用例侧:票 01 改写把「升级链每轮补下一条」断言收窄成「恰好 1 条」,实跑 5 条判 ❌;DB 取证(evidence-f15-t04.py)5 条 remindSeq 0..4 连续、plan 逐日递进无重复、终被锚点刷新置失效——Job 行为与 r1 观测完全一致,非产品回归。GET/save/64023/缺省开关/落表字段等 9 例维持 ✅ |
| F-16 查重消费侧 | 7 | ✅7 | ✅7 | 翻转②:r1「单例未落地(customer_dedup_rule 表不存在)」→ r2 单例已落地(RuleBackedCustomerDedupSettingProvider @Primary),F-16.5 前提更新;check 族/创建硬拦/needConfirm 全维持 |
2.3 结论翻转清单(round-1 报告记载 → r2 实测)
| # | round-1 记载 | r2 实测 | 载体 |
|---|---|---|---|
| 1 | §5.① confirmSimilar 缺口:快创遇相似名无解 | 销号:透传落库(返工票 04 修复,断言翻转) | core F-12 |
| 2 | §5.② 查重设置无对外端点、单例未落地 | 销号:dedup get/save 端点实测 + 单例 @Primary 生效 + demo 设置面板 | I-03 / F-16 / UI 步 14-15/20 |
| 3 | oplog 值域 11 种 | 扩为 17 种(CONTACT_*3 + AGREEMENT_*3 入域),17 种白名单断言通过 | core F-07 / I-02 |
| 4 | D-05 未知面:「导入对新增场景事实不可用」 | 收窄:INSERT 路径必败维持,UPDATE 路径实测正常(I-07 两策略执行面 DONE + DB 断言,D-08 未触发) | heavy F-14 / incr I-07 |
2.4 维持清单(要点)
- 五条有效缺陷 D-02/D-03/D-04/D-05/D-07 全部复现,证据在案(§五),无恶化、无新分支表现。
- 汇总卡 5 字段恒 null(wonProjectAmount/planEstimateAmount/ongoingOpportunityAmount/contractAmount/paidAmount)维持占位契约;projectCount 恒 null(A5 seam)。
- round-1 核心契约发现 12 条(Long→String 序列化、board 计数字段
cnt、ISOT分隔、edit 全量覆盖+CAS、archive-batch 整批预检、PageResultcontent等)在 r2 扁平契约下全部复验成立,无新增契约形态偏差。 - 范围外划出项维持(三档脱敏/客户导出/联系人子表导入/合并客户——沿返工图划出)。
三、增量端点族 I-01..I-07(返工新增端点首测,票 02 产物)
独立 e2e-incr.py(620 行,SETUP + I-01..I-07 + TEARDOWN,夹具 e2c-r2i-A/B 幂等,自带 teardown 清扫 → e2c-r2i-* 零残留)。63 例 ✅60 ⚠2 ❌1(19.8s),defects 空,新缺陷 0。
| 流程 | 覆盖端点 | verdict | 要点 |
|---|---|---|---|
| I-01 战略协议全链 | agreement create/list/detail/edit/delete(5) | ✅(⚠1) | 全链 + DB 快照 2→3→NULL + 归属不可换(edit 带 customerId 被忽略)+ 负例 67001/67002(防探测同码)/67017×5;⚠1 = oplog 等级文案「新增战略协议【二级】」取证型断言(设计即 warn,捕获留档) |
| I-02 联系人 oplog | oplog/page(复用) | ✅ | CONTACT_ADD/EDIT/DELETE + AGREEMENT×3 六动作齐现 + 17 种值域对账 + action= 过滤生效 |
| I-03 查重设置 | dedup get/save(2) | ✅ | save 响应即保存后单例 + 回读 + 缺省语义三连(开关→0 / 方式→模糊 / 阈值→出厂 80 非静默保留)+ 64023 越界×3 + 校验失败不落库 + 原值还原 |
| I-04 批量工商 | company-lookup/batch-update(1) | ✅+❌1 | NO_HIT×2 + filledFields=0 档案全等(只补空缺空转证据)+ 幽灵行 NOT_FOUND + 101 ids→67001(上限先于 distinct);❌1 = 用例侧分支盲区:空 ids 实回全局码 40001「缺少必填参数:ids」(@RequestParam required,HTTP 400),用例只预设 67001/HTTP400 二分支——拒绝行为合理,§2.2 对账处置见 §六 |
| I-05 viewTouch | detail-head(复用) | ✅ | customer_view_log 首访插入→再访 upsert 仍 1 行 + last_view_time 刷新 + BUDDY 独立行(user 维度隔离)+ 自清 |
| I-06 形态偏好 | view-form get/save(2) | ✅+⚠1 | save→get 两跳回读 + 跨用户隔离 + 非法值 68001;⚠1 = pool·board 契约漂移探测兑现(§2.14 称公海 board 被拒 680xx,实现白名单无 pool 特判实回 code=0)——漂移非缺陷,处置见 §六 |
| I-07 导入 F8 | import upload/confirm/result(复用+新参) | ✅ | SKIP 回显 + 文件内重复组不写入(u=0);OVERWRITE 回显 + 末行生效(u=1);非法 67013;执行面 DB 断言(B 星级不变/变 5);D-05 UPDATE 路径观测分支(D-08 预留)未触发 |
静态对账(scan_calls_incr.py 保留可复跑):20 调用端点 = 105 基准全命中零未知;票 02 范围 10/10 全覆盖(范围外 10 = 夹具支撑端点)。
四、UI 冒烟(票 05 · demo Playwright 扩展)
demo_smoke_r2.py(新建复制扩展,350 行;smoke10 11 步基线保留 + 详情六页签 + 四新入口块 + 三段收尾清理)——20 步全 PASS 首轮一次过;console_errors=0、page_errors=0;网络层 57 请求零旧契约形态(/api/customer/<digits>/=0、PUT/DELETE=0)。产物:.scratch/customer-e2e/demo-smoke-r2-result.json + shots-r2/×11。
4.1 demo 新入口清单(票 03 落地 → 票 05 实测)
| 入口 | demo 形态(票 03) | UI 实测(票 05) |
|---|---|---|
| 战略协议 subtab | 详情页签 6(插在关联商机与成员之间);五端点全接;edit 不带 customerId(归属不可换);list 缓存回显 | 步 9-13:create(level=2, 300万-r2)→客户快照同步实证(info.grid 战略协议='2')→edit 预填断言+升三级→detail→原生 confirm 删除流(Playwright dialog accept)→列表空。软删证实:DB deleted=1 墓碑、list 已过滤,删空后快照回 NULL——DB 口径按 deleted=0 |
| 查重设置面板 | settings tab 新面板;GET 回显(阈值空→80 兜底显示);save 阈值空值经 qs 丢弃走缺省 80 | 步 14-15/20:save(66/精确/phone=0)→重入 tab 回读断言→UI 恢复原值→起测前 GET 原值无条件 POST 兜底恢复双保险;DB 终态=原值(master=1/name=1/mode=2/threshold=80/phone=1) |
| F6 批量工商 | 列表批量操作栏按钮;ids 前端拦 100;五状态徽标弹窗;stub 恒 NO_HIT 弹窗 hint 如实呈现 | 步 16:勾选自建客户 1 行→batch-update→结果行=1 且「未命中」徽标命中——stub 语义如实 |
| F8 导入策略 | #impStrategy 下拉(SKIP 缺省/OVERWRITE)插在 impMode 与文件框之间;upload 追加字段 |
步 17:OVERWRITE→上传预检 toast 回显 策略=OVERWRITE(t=1 suspect=1,只预检不 confirm) |
4.2 BUDDY 归属解耦(票 04 移交项落实)
协议/F6 全部挂自建客户(owner=admin);交割只 page+preview 不 initiate(步 18,规避 heavy F-13 同款名下全量圈定);事后 DB 复核 collab owner 仍=曾偲青未漂移。残留终态:r2demo 客户 arch=2、协议活行=0、成员位无活跃 BUDDY 行、e2c-* 活跃 16 = seed 基准、dedup 单例原值(scan-residue-t05.py 实扫);导入留 2 条任务痕迹(round-1 DRAFT + 本轮预检,无业务写入,对齐 heavy F-14 先例不清理)。
4.3 坑位沉淀(脚本维护者向)
① settings 重入「已加载」toast 残留竞态——回读断言盯控件值 + 900ms 等 GET 覆盖;② customer_team_member 列名 user_id/member_role(非 member_user_id/role);③ Playwright 原生 confirm 需 page.once("dialog", accept) 且注册先于点击。
五、缺陷清单刷新(对照 round-1 §五)
复现基线:seed 17 客户维持 + 对应脚本;本轮只报告不修复(map 拍板,修复另起 effort)。台账编号沿用 D-xx 续编。
| 编号 | 级别 | 现象(期望 vs 实际) | r1 状态 | r2 状态与证据 |
|---|---|---|---|---|
| D-01 | P0 | 公海列表 pool/page 500 | 已修复 | ✅ 复验转绿兑现:公海 200 + core F-07 交割-甲 opportunityCount==1 |
| D-02 | P2 | 跟进 nextFollowTime 早于当前未拦(期望 67009)→ 永久超期提醒 | ⚠ 未修复 | ⚠ 复现:POST /api/customer/follow/add 过去时间落库成功(core F-08 warn;checks JSON 在案) |
| D-03 | P2 | 编辑缺 version 报 67001,spec 约定 67005 | ⚠ 未修复 | ⚠ 复现:POST /api/customer/edit 缺 version → 67001「缺少乐观锁版本号」(core F-05 warn) |
| D-04 | P2 | 导入失败明细全丢(异常文本超 long 二次炸 → fail 表 0 行) | ⚠ 未修复 | ⚠ 维持:随 D-05 连锁观测——失败明细 0 行(heavy F-14 warn) |
| D-05 | P1 | 含 INSERT 行导入必 FAILED(is_biz_negotiated NOT NULL 无默认) | ⚠ 未修复 | ⚠ 复现(heavy F-14 终态 FAILED + r2 行未更新,缺陷验证模式);新证据:UPDATE 路径正常——I-07 纯 UPDATE 行两策略执行面 DONE + DB 断言过,D-08 预留分支未触发。修复面收窄为 createCustomer 补缺省 |
| D-06 | — | 已撤回(r1 脚本取错字段) | ❌ 撤回 | 无关 |
| D-07 | P1 | 交割 assignable 辅助接口稳定超时 | ⚠ 未修复 | ⚠ 复现:30s×2 超时(heavy F-13 warn);assign 本体不受影响维持 |
| D-08 | — | (r2 预留续编:D-05 家族 UPDATE 路径观测) | — | 未触发(I-07 DONE)——编号保留,不消费 |
| 新缺陷 | — | — | — | 0 条 |
用例侧缺陷(不进 D-xx 台账,供套件维护者修复):① heavy F-15 断言收窄 ×2(票 01 改写偏差,§2.2);② incr I-04 空 ids 分支盲区 ×1(票 02 未预设 40001 分支,§三/§六)。
round-1 已知缺口对账:§5.① confirmSimilar 销号、§5.② 查重设置端点 销号、§5.③ 汇总卡 5 字段恒 null 维持(占位契约)、§5.④⑤ 范围外维持划出。W-01 contact_source 字典组缺失维持挂账(本轮未触碰字典面);「升级提醒链无上限」维持挂账(F-15 证据仍在,remindSeq 连续堆积现象与 r1 一致)。
六、文档漂移观察位处置(map fog 收敛定案)
map fog「Bruno 文档漂移的处置边界」三项观察位全部实证收敛,处置按 map 工作约定「小漂移顺手 patch 可接受,大漂移另起」执行。均无新增产品缺陷。
| # | 观察位 | 实证 | 处置 |
|---|---|---|---|
| ① | pool·board:API-SUMMARY §2.14「公海 board 被平台拒绝(白名单校验 680xx,返工票 03/05)」;实现 ViewFormServiceImpl 白名单仅全局三值 {list,split,board},无 pool 特判(crm-preference 全模块 grep 无 pool 分支) |
I-06 预埋探测实回 code=0(公海 scopeKey 保存 board 形态被接受) | 记档式 patch API-SUMMARY §2.14(拒绝约定保留 + 漂移警示:前端不得依赖拒绝行为,待实现侧补特判或产品改口径)。Bruno 仓无需动作(view-form 属 crm-preference,tag 挂 A3 未在 D 盘 A4 仓生成副本) |
| ② | §2.2 batch-update 空/缺 ids 错误码未登记(I-04 断言预设 67001/HTTP400 二分支均未命中) | 实回全局码 40001「缺少必填参数:ids」(HTTP 400,@RequestParam required) |
补登记 API-SUMMARY §2.2 batch-update 错误码列:40001(空/缺 ids)+ 67001(上限超 100,含 101 重复 id 场景);I-04 用例分支修正留套件维护者 |
| ③ | core F-01 stage=2 过滤命中含非 seed 公司客户 | 共享库数据态演化(其他流程数据进入 stage=2),行为正确 | 非文档项,仅本报告 §2.1 记档,断言按 seed 名单精确比对的前提失效由套件维护者知晓 |
另记档两处不改:① 代码侧 OplogPageParam @Schema 描述仍写 11 种(API-SUMMARY §3 已有 ⚠ 记录「以 17 种真值为准」——票 11 纪律不动代码,维持);② §2.1「pool 看板 67001 拒绝」为 crm-customer workspace/board 自身行为(返工票 03 实现),本轮无负例用例实测、无证据变更,维持原文。
七、环境与残留终态
构建与起服(票 04/05 实录):
- 构建:先删
crm-app/target\*.jar(fat jar 落后源码坑)→ IDEA maven + corretto-17-pl crm-app -am packageBUILD SUCCESS;沙箱对 D 盘mvn.cmd持续拒绝访问需required_permissions=all(环境修正,非瞬时锁)。 - 起服:corretto-17(
C:\Users\Administrator\.jdks\corretto-17.0.13)+SPRING_PROFILES_ACTIVE=verify+CRM_MINIO_AK/SKenv;判活GET /api/auth/debug/token?userId=739564171091247104HTTP 200(26.8s / ~40s 两次起服);ping 401 = 鉴权门 ≠ 服务挂。 - 解释器修正(票 02 移交口径修正):套件三脚本解释器 =
py -X utf8(3.13.3)——venv10 实为 Playwright 专用环境(无 requests/pymysql,openpyxl 补装后仍不承载套件),compile/对账用 venv10 解释器的口径仅适用于 Playwright 脚本与scan_calls*工具。
执行时长:core 23.7s + heavy ~7.5min(两次自重启 + 70s×3 Job 等待 + D-07 超时 30s×2)+ incr 19.8s;UI 冒烟独立起服一轮 ~2min 量级。
数据态修复(测试基建操作,脚本留档可审计):① collab owner 漂移溯源(heavy F-13 圈定 BUDDY 名下全量且 teardown 不还原)+ 两次还原——套件复跑副作用盲区已沉淀(复跑必漂移,先还原再跑);② followFuture 补未来回访(seed「明天」过期两天);③ followOld 清 pending_notice 31 条失效历史 + 锚点重置 30 天前。
残留终态(票 04 清理 + 票 05 复扫):
- 非 seed 活跃
e2c-残留 0(r1 撞码对/恒信达系 5 + 本轮 core 二跑快创/confirmSimilar 5 全部POST /api/customer/archive?id=正门归档,DB 复核 arch=2)。 e2c-*活跃 16 条 = seed 名单全量(第 17 个 seed 样例「e2c-已归档」本就 arch=2)——按设计保留供前端联调。e2c-r2i-*零残留(incr 自带 teardown);e2c-r2demo-浏览器*arch=2;协议活行 0;dedup 单例原值。- 服务已停(8080 释放)。
八、对账附录
8.1 调用×端点覆盖面(对 dump_api_out.txt 105 端点基准 / 客户域 73)
| 套件 | 调用端点 | 对账结果 | 工具(可复跑) |
|---|---|---|---|
| core+heavy r2 | 55 | 54 命中客户域 + 1 预期例外(POST /api/customer/follow/edit 未注册,append-only 断言故意打)+ 0 未知 |
scan_calls.py → calls-r2.json |
| incr | 20 | 105 基准全命中 0 未知;票 02 范围 10/10 | scan_calls_incr.py → calls-incr.json |
| 客户域合计 | — | 覆盖 64/73(54 + 10);未覆盖 9 维持项 | — |
未覆盖 9 维持项(round-1 即未覆盖,非本轮退化;旧套件 PUT 读写一体,返工拆分后未补读):GET /api/auth/ping(跨域)、POST /api/customer/page(基础分页,workspace/page 已覆盖同口径)、GET /api/customer/contact/detail、列偏好 GET|POST /api/preference/view/(get|save)×2、批量三兄弟 claim-batch/assign-batch/release-pool-batch×3、GET /api/rule/customer/reminder(读端点,save 侧已覆盖)。若需扩测另起票(map 拍板不进本轮票面)。
8.2 实测样本留档(specimens)
| 文件 | 条目 | 说明 |
|---|---|---|
specimens-core-r2.json |
42 | core 端点真实请求/响应 |
specimens-heavy-r2.json |
19 | heavy 端点真实请求/响应 |
specimens-incr.json |
20 | 增量 10 端点 + 支撑端点样本(票 06 Bruno 对账素材) |
8.3 Bruno 文档对账(只对账不重构,沿 map 拍板)
D 盘 D:\code\crm-api-docs\A4 客户管理\(57 .bru / 10 目录,git 仓 agent 不提交,用户审查后自行提交)维持不动;r2 无新增端点形态变更(34 处改写均已在 r1 后 Bruno 同步轮覆盖),本轮 3 观察位中可影响 .bru 的 §2.14/§2.2 两处已 patch API-SUMMARY(§六),Bruno 仓无需同步动作;后续如重跑 bruno-sync 以 API-SUMMARY 最新版为契约权威。
8.4 产物索引(.scratch/customer-e2e-r2/)
改写与矩阵:matrix-r2.md / calls-r2.json / calls-incr.json;结果:e2e-core-r2-checks.json / e2e-heavy-r2-checks.json / e2e-heavy-r2-defects.json / e2e-incr-checks.json;样本:specimens-{core-r2,heavy-r2,incr}.json;日志:core-r2-run.log / heavy-r2-run.log / incr-run.log;审计脚本:db-check-t04.py / db-fix-t04.py / clean-notice-t04.py / reset-anchor-t04.py / evidence-f15-t04.py / scan-residue-t04.py / final-clean-t04.py / scan-residue-t05.py / scan_calls.py / scan_calls_incr.py;套件:.scratch/customer-e2e/{e2e-core-r2,e2e-heavy-r2,e2e-incr,demo_smoke_r2}.py。
round-1 报告 .scratch/customer-e2e/e2e-report.md 保留为历史档案不覆盖;本报告为第二轮收官终稿。