# 04 — E2E 全量复跑(API 四套件 + 主 demo 冒烟) Type: task Status: resolved Blocked by: 02, 03 ## Question 全部代码变更(票 01/02/03 修复)落地后,E2E 复跑收口: - 起服:本地 8080(verify profile + CRM_MINIO_AK/SK;8080 现停);构建 clean package 全反应堆(先停服解锁 fat jar 再 clean)。 - API 四套件(`py -X utf8`):e2e-core-r2 / e2e-heavy(F-13 副作用——跑完还原 collab owner 四字段)/ e2e-incr / e2e-graph,幂等重跑稳定、残留正门清扫。 - 补断言:workspace 列表 focusFlag(core F-09 族或列表断言处)。 - 主 demo Playwright 冒烟:对齐 demo_smoke_graph 形态,覆盖收编后全交互(含图谱编辑器拖拽/定级),console error=0、零 PUT/DELETE、截图存档、DB 正门清扫。 - 产物:checks/specimens JSON + 冒烟结果 JSON,供票 06 报告引用。 ## Answer(2026-09-11) **四套件 + 主 demo 冒烟全绿,0 新缺陷;3 warn 全部有定性(设计内/豁免)。** ### 1. 起服与构建 - 构建:IDEA 捆绑 maven(3.9.9)+ corretto-17 全反应堆 `clean package -DskipTests`,fat jar 124MB(首次 crm-customer/target 被瞬时句柄锁致 clean 失败,重跑即过;EXIT=0);日志 `.scratch/customer-frontend-handover/build-t04.log`。 - 起服:verify profile + `CRM_MINIO_AK=admin / CRM_MINIO_SK=***`,debug/token 探针 200;收工已停 8080。 ### 2. API 四套件(解释器 `py -X utf8`) | 套件 | 结果 | 备注 | |---|---|---| | e2e-core-r2 | **0 fail / 0 warn**(复跑) | 首跑 2 fail = 种子漂移(collab owner 翻转回 admin、followFuture 锚点过期)→ 复用 db-fix-t04.py 修复后复跑全绿;**含票 01 focusFlag 补断言 ×2** | | e2e-heavy-r2 | **0 fail / 0 warn** | 复跑前置生效:clean-notice-t04.py(5 条失效 pending_notice)+ reset-anchor-t04.py(followOld 锚点重置 30 天前);teardown 已还原 owner;比上轮少 4 warn(F-15 前置清理到位) | | e2e-incr | **0 fail / 2 warn** | I-01 oplog 文案取证型(设计内);I-06 pool·board 契约漂移 probe(code=0,票 03 已定性非缺陷,归票 05 文档侧处置) | | e2e-graph | **0 fail / 1 warn** | 唯一 warn = D-G1(batchEdit 空串清空不可达)——chart 拍板 2 已豁免 | ### 3. focusFlag 补断言(票 01 交付的真 API 验证) `e2e-core-r2.py` F-09 增 2 例:focus 后 workspace/page 列表行 `focusFlag=1`(阶段-潜在-甲/星级-五星)、unfocus 清扫后 `focusFlag=0`。两例全过——列表关注列在真实 API 上验证通过。 ### 4. 主 demo 冒烟(新脚本 demo_t04_smoke.py,35 步 ALL_PASS) - **形态对齐 demo_smoke_graph**:真实 API 反代(page.route 剥 origin/注入 Bearer/补 CORS + multipart upload 分流 Python 直调),夹具 e2c-t04-{TS} 客户 + quickAdd 4 联系人。 - **覆盖**:列表检索+focusFlag 星标/toggleFocus(DB customer_focus 取证)/contactsShell/图谱视图(公司边只连 lv10 顶层)/reveal 双写(DB reveal_log)/quickAdd/batchEdit(DB 回显)/**图谱编辑器真实鼠标拖卡位移+拖线 pending→save→DB edge 取证→切走重进持久/拖卡入等级行定级 6→DB level 落库/删边→DB 删净**/cimp 导入三段式(预检共 2 行→确认→轮询已完成→失败明细 1→DB 导入甲落库)/export/delContact/页签互斥。 - **网络层**:console/page error=0、零 PUT/DELETE、12 端点族可及 11 全触发。 - **清扫**:e2c-t04* 夹具 DB 硬删正门(含 customer_focus);截图 shots-t04/*.png ×8;结果 t04-smoke-result.json。 - **脚本调试过程坑(已固化在脚本内)**:① 公司派生边仅 lv10 顶层联系人(断言从 3 修正为 1);② customer_contact 软删列 = `deleted`(BaseEntity @TableLogic,非 delete_key);③ `btnGraphEdit` 是 toggle 且 saveGraph 成功后保持编辑态——再点=退出,须按 `G.editing` 守卫;④ delContact 行数须计入导入甲(6→5)。 - 解释器注意:venv10 原无 pymysql/openpyxl,已补装(playwright+pymysql+openpyxl 同环境)。 ### 5. 残留与数据态收尾 - final-clean-t04.py:collab owner 四字段还原(曾偲青/职员)✓;5 条非 seed 活跃 e2c-(core F-12 重跑产生的同名 create 客户)正门 archive ✓;活跃 e2c-* = 16 = seed 样例数。 - heavy F-13 副作用本轮无残留(teardown 增强 + final-clean 幂等还原双保险)。 ### 6. 产物清单(票 06 引用) - JSON:`.scratch/customer-e2e-r2/{e2e-core-r2-checks,specimens-core-r2,e2e-heavy-r2-checks,specimens-heavy-r2,e2e-incr-checks,specimens-incr}.json` + `.scratch/customer-contact-graph/{e2e-graph-checks,e2e-graph-specimens}.json` + 本目录 `t04-smoke-result.json`。 - 日志:本目录 `{build,server,core-r2,heavy-r2,incr,graph,smoke}-t04.log`;冒烟截图 `shots-t04/`(8 张)。 - 新脚本:`demo_t04_smoke.py`(本目录)。