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.0 KiB

票 04 — Agent 浏览器自测报告(opportunity-acceptance)

  • 执行时间:2026-08-31 15:20 ~ 16:12(多轮:诊断 → 修复 → 复测,终轮全绿)
  • 被测对象.scratch/opportunity-e2e/demo/index.html(file:// 打开,AJAX 直连 localhost:8080)× verify 后端(fat jar,远程 DB 8.129.84.155/crm,MinIO 凭据注入)
  • 自动化:Playwright(headless Chromium 1440×900),脚本 accept-selftest.py(本目录),结果 selftest-result.json,截图 shots/accept-*.png
  • 终轮结果31/31 PASS,0 FAIL,page_errors 0,console_errors 0

一、结论

「后端修复可信、测试全绿、Demo 可演示」三条件在浏览器 UI 层面全部成立:

  1. 后端修复可信(与票 01 白盒 / 票 02 E2E 相互印证):
    • D-01(opportunity-fix 口径)UI 端到端验证:新建商机 → toast 含 id → 直达详情 → 阶段进度 5 节点、落首阶段 CURRENT(accept-22;库证 progress nodes=[CURRENT,PENDING×4]);
    • 六必填(D-14)前端拦截 errbox 逐字段提示与后端 66001 同款(accept-21);
    • 状态机 E4/E5:暂缓 → badge=暂缓中(accept-24),取消暂缓 → badge=推进中(accept-25),两次均有库证(oppStatus 2→3→2)。
  2. 测试全绿:31 断言全过,全程 0 页面异常、0 console error
  3. Demo 可演示:列表多视图 / 看板 / 详情九子表 / 工作计划 / 规则三族 / 用户切换全功能面可操作;20260829 四修复点无回归。

二、自测发现并修复的 3 个 Demo 缺陷(本轮核心价值)

前序 effort(票 02 E2E 为 API 级、票 03 subapi 为 requests 直测)均未覆盖的 UI 集成面缺陷,本轮浏览器自测暴露,已当场修复并复测:

# 缺陷 根因 修复 复测
demo-B1 切视图后列表显示空页/错误页码(如公海显示「共 3 条 · 第 2 页」且无数据) pickView/查询切换后 S.total 残留旧视图值,loadList(1) 用旧 total 误自动翻页 pickViewonCview、查询按钮三处补 S.total = 0(查询同时重置 S.page=1 accept-03 第 1 页 3 条 ✓、accept-04 筛选 2 行 ✓
demo-B2(高危) 全部无返回值写端点在 UI 上静默失败:暂缓/恢复/领取/分配/关闭/重启/移交/抛公海/切阶段/关注/编辑/存视图/规则发布·停用·删除等,点击后请求成功但页面无任何反应(框不关、无成功 toast、不刷新),人工会误判为功能故障并重复点击触发业务错 成功判定 await tryApi(step, fn) != null:这些端点响应 data=null(实锤 {"code":0,"success":true,"data":null}),api() 返回 null → 判定 false → 成功路径被跳过 新增 okApi(「不抛错即成功」,失败 err toast),替换 19 处判定(fix-demo-b2.py 留档) 暂缓/恢复 UI 闭环 ✓(accept-24/25,badge 实时变化)
demo-B3 新增/编辑工作计划:浏览器分钟精度 deadline(2026-09-02 10:00)被后端拒绝(DTO @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") 强制带秒),保存报错,人工演示必踩 doWorkPlanSave 未补秒 dl.length === 16 ? dl + ':00' : dl accept-17~20 工作计划全闭环 ✓

修复后全量复跑 31/31 全绿。demo 三处修复均为前端改动,不触碰已验收的后端。

三、断言清单与截图索引

# 断言 结果 证据
00 启动自动登录(管理员罗伟健) PASS whoBox 文本
01 列表-我负责的(admin,1 条) PASS accept-01
02 列表-管理全量(14→17 条,随自测新增递增) PASS accept-02
03 列表-公海(3 条待领取,第 1 页) PASS accept-03
04 关键词筛选「智慧园区」(2 行全命中) PASS accept-04
05 看板汇总(阶段节点渲染) PASS accept-05
06 详情总览 + 阶段进度 5 节点(e2e-A-二期) PASS accept-06
07 跟进子表 toolbar(20260829 修复点①) PASS 同 08 截图
08 写跟进成功 + loadDetail 刷新最近有效跟进锚点(修复点③;15:47:07→16:10:28 库证) PASS accept-08
09 勘察子表 toolbar(修复点①) PASS accept-09
10 关联客户(3 条) PASS accept-10
11 团队成员(3 条) PASS accept-11
12 方案卡详情 d.fields 键值 8 项(修复点②) PASS accept-12
方案卡列表(3 卡) accept-13
14 附件(空态文案正确) PASS accept-14
15 操作日志分形态渲染(修复点④,4329 字符) PASS accept-15
16 阶段历史 PASS accept-16
17 工作计划入口(票 03 接入) PASS 同 18 截图
18 工作计划三形态实时判定(badge 逾期/临期/进行中) PASS accept-17
19 登记完成 + finishTime 服务端回填 PASS accept-18
20 编辑部分更新 PASS accept-19
21 删除软删(列表消失 + 库证) PASS accept-20
22 新建-六必填前端拦截(errbox 6 字段) PASS accept-21
23 新建成功直达详情落首阶段 5 节点(D-01) PASS accept-22
24 暂缓对话框(E4,原因下拉字典化) PASS accept-23
25 暂缓成功(badge=暂缓中) PASS accept-24
26 取消暂缓(badge=推进中) PASS accept-25
27 规则-公海与提醒族 PASS accept-26
28 规则-商机阶段设置(OPP_STAGE_TPL_01 预设模板在列,64018 保护对象可见) PASS accept-27
29 规则-方案卡模板(24 行) PASS accept-28
30 规则详情对话框(版本/状态/节点·字段明细) PASS accept-29
31 切换用户 A 赖永利(数据权限视图) PASS accept-30

四、已知形态(非缺陷,人工验收预期管理)

  • 阶段历史行显示原始 stageId→ 7478313028):seed 直插历史的 fromStageName/toStageName 快照为空,demo 回退显示 id——seed 数据形态,非渲染缺陷;
  • 附件 Tab 空态:上传依赖 MinIO(F08 ⚠ 外部依赖),E2E 单独验证过;
  • 关联客户/团队成员的 demo 写入口缺失(后端六端点已修复=票 04,demo 前端未实现添加/编辑按钮,仅只读展示);
  • 页面顶部 D-xx mark 徽标为写死的过时标注:对应后端缺陷已在 bugfix effort 全部闭环(19 修 + 3 翻案 D-08/18/19),徽标仅提示历史缺陷位置,非现存缺陷(现存问题总清单见 acceptance-checklist.md §四);

五、测试数据留存(无碍 E2E 基线)

  • e2e-A-推进-智慧园区二期:新增 3 条 accept-自测跟进(lastValidFollowTime=最新一条,状态未动);
  • demo-验收-新建闭环:wp 已清空(三形态闭环建→完成→编辑→删验证后清理);
  • 新建 3 个商机:accept-自测-新建{3 个时间戳}(终轮 id=749662392819908608,暂缓→已恢复=推进中);
  • 全部数据以 accept- 前缀命名,不影响 seed v2 基线与后续 E2E 重跑(seed 全量重置可清)。

六、复跑方式

python -X utf8 .scratch\opportunity-acceptance\accept-selftest.py

前置:后端 8080 在跑(起服命令见 map.md 环境节);WP_OPP(demo-验收-新建闭环)的 wp 为空(脚本自建自清,异常中断后手工清理即可)。

附:过程文件

  • accept-selftest.py:终版自测脚本(Python 轮询等待,31 断言)
  • fix-demo-b2.py:demo-B2 修复脚本(okApi + 19 处判定替换,含替换前原文)
  • fix-wait-helpers.py:自测脚本等待机制改造脚本(wait_for_function → Python 轮询)
  • probe-wff.py / check-syntax.py:诊断与语法检查辅助
  • selftest-result.json:终轮机器可读结果