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.

53 lines
6.0 KiB

17 hours ago
# 04 · 起服全量执行
Type: task
Status: resolved
Blocked by: 01, 02
Claimed: 2026-09-05 · wayfinder 工作会话(frontier 首票)
Resolved: 2026-09-05
## Question
verify profile 本地起服,跑改写后的 core + heavy + 增量全量执行,原始结果落盘。
要点:
1. **构建**:Maven 增量陷阱——先删 `crm-app/target` 旧 fat jar 再 package(fat jar 落后源码坑,round-1 票 04 踩过)
2. **起服**:`SPRING_PROFILES_ACTIVE=verify` + `CRM_MINIO_AK/SK` 环境变量;判活容忍 401(鉴权门 ≠ 服务挂);debug token `GET /api/auth/debug/token?userId=`
3. **执行**:core(112 例矩阵)→ heavy(6 轮)→ 增量套件(票 02 产物);结果 JSON/日志落 `.scratch/customer-e2e-r2/`
4. **缺陷模式计时控制**:D-07 assignable 稳定超时会拖垮全量执行(round-1 实测 30s×2 + probe 60s),用例侧限时策略现场定(进 fog 记录过的「heavy 六轮执行深度」决策)
5. **缺陷状态采集**:D-01(已修,预期转绿)、D-05/D-07/D-04(预期复现)逐个留下复现证据;新缺陷按 D-xx 续编登记
6. **残留清理**:`e2c-` 前缀测试数据 archive 正门清理,报告记录终态
---
## Answer
**执行环境**:corretto-17 + IDEA maven 全量重建(`Remove-Item crm-app\target\*.jar` 后 `-pl crm-app -am package`,BUILD SUCCESS,fat jar 22:29 新鲜);verify profile 起服 26.8s 判活(debug/token HTTP 200)。⚠ 环境修正两条:① **套件解释器 = `py -X utf8`(3.13.3)**——票 02 移交的「venv10 补装 openpyxl」已执行(3.1.5)但 venv10 实为 Playwright 专用环境(无 requests/pymysql),套件三脚本均在 py 3.13 下跑通;② 沙箱对 D 盘 `mvn.cmd` 持续「拒绝访问」(非瞬时锁,重试两次无效),`required_permissions=all` 后通过。
**执行结果(233 例 = ✅221 ⚠9 ❌3,新缺陷 0)**:
| 套件 | 终态 | 耗时 | 说明 |
|---|---|---|---|
| core-r2 | 112 例 ✅109 ⚠3 ❌0 | 23.7s | 首轮 ✅106⚠4❌2 → 数据态修复后复跑(见下) |
| heavy-r2 | 58 例 ✅52 ⚠4 ❌2 | ~7.5min | 两轮结果同为 ✅52⚠4❌2 但 ❌ 根因不同(见下) |
| incr | 63 例 ✅60 ⚠2 ❌1 | 19.8s | defects 空,无新缺陷 |
- **⚠9 全部预期内**:core 3 = D-02/D-03 缺陷模式复现 + stage=2 数据态演化;heavy 4 = D-07(assignable 30s×2 超时)+ D-05(INSERT 阻断三条,缺陷验证模式);incr 2 = I-01 oplog 等级文案**取证型断言**(设计即 warn,文案捕获「新增战略协议【二级】」)+ I-06 **pool·board 漂移预埋探测**(code=0 实证实现无 pool 特判,票 02 预判兑现,归文档侧处置)。
- **❌3 全部归因用例侧,非产品缺陷**:heavy F-15×2 = **票 01 改写断言语义偏差**——把 r1 的「升级链每轮补下一条」收窄成「恰好 1 条」;DB 证据(evidence-f15-t04.py):5 条 remindSeq 0..4 连续、plan 每条递进一天无重复、终被锚点刷新置失效 = **Job 行为与 round-1 观测完全一致**;incr I-04 ×1 = **分支盲区**——空 ids 实际返回全局参数缺失码 **40001**「缺少必填参数:ids」(拒绝行为合理),未落「67001/HTTP400」二选一分支;§2.2 错误码对账留票 06。
- **缺陷台账**:D-01 复验**转绿** ✓(F-07 opportunityCount=1);D-02/D-03(core)、D-05/D-07(heavy)复现证据在案;**新缺陷 0,D-08 未触发**(incr I-07 SKIP/OVERWRITE 两轮执行面均 DONE——D-05 家族 UPDATE 路径实测正常,round-1 未知面未恶化)。
- **fog「heavy 六轮执行深度」决策:全跑**——缺陷用例已内建限时(warn 不阻断),heavy 全程 ~7.5 分钟(两次自重启 + 70s×3 Job 等待 + D-07 超时),可接受。
**数据态修复记录**(测试基建操作,脚本留档可审计):
1. **collab owner 漂移溯源与两次还原**:漂移真源 = **heavy F-13 交割圈定 BUDDY 名下全量**(setup 的 `buddy_leftover` 查询 `owner_user_id=BUDDY AND archive_status=1`)——round-1 跑 heavy 时把 owner=曾偲青 的协同样例合法「离职交接」转给 admin,teardown 只还原 transfer1/2/3 三个固定客户。⚠ **套件副作用盲区**:heavy 任何复跑都会把 BUDDY 名下客户转走且不还原;票 05 UI 冒烟若触发 demo transfer 流同此风险,夹具客户须与 BUDDY 归属解耦。
2. followFuture 补未来回访(seed「明天」过期两天,detail-head 对过期 next 不返回系合理语义)——API 补跟进后 detail-head nextFollowTime 复现。
3. followOld 的 pending_notice 31 条失效历史清理(r1 升级链证据已在案 r1 报告)+ 锚点重置 30 天前(F-15.10 锚点刷新残留)后 heavy 复跑。
**残留终态(要点 6)**:非 seed 的活跃 `e2c-` 残留 10 条(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 清扫)。服务已停(8080 释放),票 05 起服流程照 map。
**产物索引**(`.scratch/customer-e2e-r2/`):`e2e-core-r2-checks.json` / `specimens-core-r2.json` / `e2e-heavy-r2-checks.json` / `specimens-heavy-r2.json` / `e2e-heavy-r2-defects.json` / `e2e-incr-checks.json` / `specimens-incr.json`(票 06 聚合输入)+ `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`
**移交票 05(UI 冒烟)**:① 起服照 map(corretto java 全路径 + verify profile + MinIO env);② Playwright 用 `.venv10`(chromium-1234 已缓存);③ demo 四新入口待验(agreement subtab / 查重设置 / F6 批量工商 / F8 策略下拉);④ 冒烟产生的测试客户用 `e2c-` 前缀命名 + 正门 archive 清理,transfer/交割流注意 BUDDY 归属副作用(上条 1)。