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.
 
 
 
 
 

9.8 KiB

冒烟步骤表(票 08 产出)

被测:demo/index.html?api=http://localhost:8080(本 effort fork,票 05 落点)。 形态参照:customer-frontend-handover/demo_t04_smoke.py(35 步)+ customer-contact-graph/demo_smoke_graph.py(40 步)——route 反代/DB 取证/multipart 分流/正门清扫全套照搬。 目标:≥30 步(本表 40 步),覆盖三族闭环 + 缺陷现象断言 + 网络层全局断言。

运行方式

# 前置(冒烟不自起服):
SPRING_PROFILES_ACTIVE=verify CRM_MINIO_AK=admin CRM_MINIO_SK=Itc@123456 \
  java -jar crm-app/target/crm-app-1.0.0-SNAPSHOT.jar   # 端口 8080
py -X utf8 .scratch/customer-demo-ref/demo/smoke.py      # 系统 Python 3.13 + playwright sync(chromium 已缓存)
  • 打开:file:///…/demo/index.html?api=http://localhost:8080;认证 = page.route('http://localhost:8080/**') 反代:剥 origin/host/authorization + 注入 Bearer <debug token> + 补 CORS 头;token 前置 GET /api/auth/debug/token?userId=739564171091247104(admin 罗伟健)。
  • multipart 分流contact/import/uploadimport/upload 的 file part Chromium 不回传内容 → route 内截包改 Python urllib 直发完整 multipart(t04 _py_upload 同款)。
  • DB 取证:pymysql 直连 8.129.84.155/crm(只读取证 + 夹具清扫),凭证同 t04。

Seed 策略(共享库写副作用纪律)

类别 策略
写夹具 临时前缀 e2c-dr-*(时间戳后缀),归属 ADMIN,全部写动作只落在夹具上;收尾 DB 正门硬删(customer→contact/graph/reveal_log/focus/oplog/import_task/transfer 单据关联行,幂等可重跑)
只读 seed e2c- 既有 17 客户只读消费(归档态切换看 e2c-已归档、查重相似命中看 e2c-恒信达科技*、详情/图谱/日志用 e2c-全字段-科技 750844477165273088)
偏好写(view/view-form) 走 API 正门写后立即还原:形态 save board→断言→save list 还原;saved-view 新建→断言→delete。无 DB 直改
规则单例写 先 GET 记原值 → save 测试值断言 → save 还原(F-15「还原出厂值 30/7」先例口径)
归属/交割 夹具客户 assign/transfer 到 BUDDY(744842318024015872)后随夹具删除,无四字段还原负担(不碰 e2c- collab 样例,不触发 F-13 口诀场景)

步骤表(40 步)

标注:〔UI〕页面断言;〔DB〕数据库取证;〔NET〕api_urls 网络断言;〔D〕缺陷现象步(断言「现象按设计呈现」,不断言正确行为)。

A · 核心域闭环(步 1-19)

# 步骤 断言
1 打开 Demo + token 注入,首屏列表加载 workspace/page 200,列表行渲染 UI+NET
2 三 workspace 切换 mine→overview→pool 各自 page 请求发出;pool 不发 board/summary 且 I-06 注记可见(〔D〕兼) UI+NET
3 内置视图下拉五值齐全,切 FOLLOW_UP_DUE 请求带 viewType=FOLLOW_UP_DUE;RECENT 选项存在 UI+NET
4 列筛选器:阶段=成交筛选 请求带 customerStage=3,结果子集 UI+NET
5 归档态开关切「已归档」 请求带 archiveStatus 归档值,e2c-已归档 可见(只读消费) UI+NET
6 saved-view:新建「e2c-dr-视图」→列表出现→选中查询→删除 save 为 JSON body;page 带 savedViewId;delete 后消失 UI+NET+DB
7 形态偏好:overview 切看板→看板渲染→还原 list view-form/save 发出;看板列数=summary groups(字段 cnt/groupValue);汇总卡不再挪用 UI+NET
8 新建表单:名称联想输入 company-lookup 触发(参数 companyName);NO_HIT 现象+STUB-LOOKUP 注记可见〔D〕 UI+NET
9 名称查重流:建 e2c-dr-恒信达科技有限责任公司 变体 needConfirm=true + similarHits 含 masked 脱敏形态 → confirmSimilar 重发 → 创建成功 UI+NET
10 编辑客户:回显(version CAS)→改备注→保存 edit?id= 成功;列表刷新生效 UI+NET
11 详情头部:detail-head 渲染 + 金额卡 4 张金额卡恒"--"(P3-6 data-defect)〔D〕;计数/负责人/跟进摘要有值 UI
12 8 页签全遍历可切换 信息/联系人/跟进/关联商机/关联项目/战略协议/团队成员/操作日志 8 页签 UI
13 页签1 信息:16 字段栅格 系统信息四件套恒"--"(G4 data-defect)〔D〕;creditCode 脱敏形态断言 UI
14 页签4/5:关联商机 7 列真名 + 关联项目恒"--" 商机列头数=7(G2 data-defect)〔D〕;项目页签"--"(#42 占位) UI
15 页签7 团队成员:添加 BUDDY→渲染→移除 member/add·remove 成功;无职务/加入时间列(G3 data-defect)〔D〕 UI+DB
16 页签2 联系人:quickAdd 2 行→列表 8 列→编辑→reveal 列表无负责人列(G5)〔D〕;reveal 明文+DB reveal_log;电话脱敏形态 UI+NET+DB
17 联系人 batchEdit(含 D-G1 注记)+ check-phone + 删除 batchEdit 空串提交=不改(D-G1 注记可见)〔D〕;check-phone 命中王重复;删除双刷 UI+DB
18 页签3 跟进:写跟进→日期分组→筛选器 follow_way 5 值下拉;follow/add 后分组出现;筛选请求带 followWay/时间 UI+NET+DB
19 关注★/重点标记 + oplog 留痕核对 focus/unfocus+star/unstar;oplog 出现「新增客户/编辑/关注」行(流程闭环留痕证据);筛选带 action UI+DB

B · 重流程闭环(步 20-25)

# 步骤 断言
20 客户导入三段式:模板下载→上传预检→确认→轮询→失败明细 预检计数 INSERT 行缺省份列即 FAIL(P1-1 已修复形态);DONE 计数=预检;失败明细行数吻合 UI+NET+DB
21 导入任务列表 + status 过滤 import/page 渲染;请求带 status/importMode 参数 UI+NET
22 联系人导入三段式(cimp 弹窗,含 P3-3 注记〔D〕) 预检→确认→轮询→失败明细;无「触发校验规则」复选框〔D〕 UI+NET+DB
23 商机联动链:详情发起建商机(POST /api/opportunity 预填 customerId)→抛公海被拒→关商机→放行 建商机成功;release-pool 吃 67007 toast(4xx 弹窗通道验证);关闭后抛公海成功 UI+NET+DB
24 交割两段式:preview(原因三选)→initiate→page(JG* 编号)→detail→assignable→assign 单行 每步请求发出;详情明细行处置态变化;零成本夹具(不动 e2c- collab) UI+NET+DB
25 归属动作族:claim-batch→assign-batch→(抛公海已在 23)归档→恢复→再归档收尾 各 batch 端点 BatchResult 呈现;archive 后列表归档态可见;oplog 留痕 UI+NET+DB

C · 规则族(步 26-29)

# 步骤 断言
26 查重设置:读→改阈值 90→save→再读生效→还原 GET/POST dedup 各 2 次;还原后值=原值 UI+NET
27 查重试玩面板:check-name 命中 e2c-恒信达 命中行 masked 形态;信用代码查重 67003 toast(L3 硬拦通道) UI+NET
28 超期提醒:读(30/7)→save 非法 0→64023 toast→还原 30/7 64023 校验弹窗(4xx 通道);还原后 GET=30/7 UI+NET
29 公海池配置占位卡只读(POOL-CFG)〔D〕 占位卡存在+禁用态+角标 UI

D · 缺陷现象步(步 30-36,全部按 06 号票设计断言)

# 步骤 断言
30 顶栏「已知缺陷」面板打开 [data-defect-panel] 存在;A 区条目≥14、B 区 4、C 区 14、D 区 1;固定声明可见 UI
31 角标钩子扫描 [data-defect] 计数≥12(G1-G6/P3-3/P3-4/P3-5/P3-6/D-G1/I-06/POOL-CFG/STUB-LOOKUP) UI
32 I-06 双现象注记(pool workspace) pool 汇总条注记文本含「67001」+「记忆成功」;pool 形态下拉无 board 选项 UI
33 豁免入口不出现 换负责人按钮/操作日志导出/完整金额开关/导入触发校验复选框 count=0 UI
34 G 系列现象复核(合并断言) 跟进筛选无操作人项(G1)、商机 7 列(G2)、成员 2 列缺(G3)、四件套"--"(G4)、联系人无负责人列(G5)、联系人日志空态(G6) UI
35 金额卡与页签5 "--" 口径 P3-6 四卡"--";关联项目页签"--" UI
36 company-lookup NO_HIT 现象 表单联想无命中提示+F6 批量更新按钮 stub 文案 UI

E · 网络层全局 + 清理(步 37-40)

# 步骤 断言
37 console/pageerror = 0 errors 数组空 NET
38 零 PUT/DELETE api_urls 无 PUT / DELETE 前缀(ADR-0017;saved-view save 走 POST+JSON 也合规) NET
39 端点覆盖广度 api_urls 唯一路径数 ≥ 50,且覆盖矩阵「新增 9 + 改造 16」涉及端点全部触发(清单内置) NET
40 夹具正门清扫 + 偏好/规则还原核对 e2c-dr* DB 删净;view-form=list、dedup/reminder=原值复核 DB

报告形态(PASS/FAIL 统计口径)

{
  "summary": {"total": 40, "passed": 40, "failed": 0, "passRate": "100%", "startedAt": "...", "durationS": 0,
               "verdict": "PASS", "verdictRule": "全部步骤 ok 即 PASS,任一 FAIL 即 FAIL"},
  "steps":   [{"step": "...", "ok": true, "note": "...", "defect": null|"<data-defect id>"}],
  "errors":  [],
  "api_urls": ["GET http://...", ...]
}
  • 落点:demo/smoke-report.json;截图 demo/shots/*.png(关键步骤 10± 张,全页)。
  • 台账联动:FAIL 步骤附重现要点(步骤号+note),供缺陷票引用;〔D〕步 FAIL = 「现象未按设计呈现」,属 Demo 实现缺陷非后端缺陷,注明区别。
  • 控制台尾部打印 ==== summary ==== N steps, M failed + ALL_PASS: true/false(t04 口径)。