Files
Neo-ZQYY/docs/_overview/03-test-spec.md
Neo 509cf43284 chore(docs): Wave 0 调研产出 + P0/P1/P2 反馈调研
建立项目级标杆文档 docs/_overview/ 作为产品全景索引,
解决"PRD 零碎、文档膨胀、跨子系统调研无入口"的问题。

主要内容:
- 00-index 总索引 + 维护协议 + 与 CLAUDE.md 关系
- 01-product-overview 产品全景脑图(6 角色 / 6 子系统 / 数据流 /
  7 业务概念 / 8+1 AI 矩阵 / 22 术语)
- 02a-miniprogram-page-matrix 小程序 21 页业务指纹
- 02b-adminweb-page-matrix admin-web 19 路由业务指纹
- 03-test-spec 测试规范 (L1-L5 分层 + 走查模板 + 75-95 case 估算)
- 04-doc-conflicts 39 条冲突索引(P0×8 / P1×13 / P2×13 + 5 子项)
- 04a/b/c-conflicts-*-detail 业务故事卡(7 字段:关联/逻辑/影响/选项/判定)
- 05-orphan-pages-cleanup admin-web 6 孤儿页面处置(1 归档 + 4 保留)
- WAVES-MASTER-PLAN.md 全 Wave 主计划(0-5,共 22-32 工作日)
- WAVE-1-KICKOFF.md Wave 1 实施 kickoff
- GLOBAL-DECISION-DASHBOARD.md 全局决策仪表板

反馈调研产物:
- 04a-feedback/ P0 两轮反馈(8+8 项决策 + D-1/2/3 + F-1/2 子代理产出)
- 04b-feedback/ P1 两轮反馈(13+1+5 项 + E-1/2/3/4 + G-1/2 子代理产出)
- 04c-feedback/ P2 反馈(13 项 + 5 子项 + H-1/2/3 子代理产出)
- NEO-DECISIONS-LOG 累积决策记录

关键追加发现 8 处 D Bug(原蓝本 0):
- P0-3 看板沙箱接入(Wave 1 W1-T1)
- P0-5 致命 1 (4 处 fdw_etl 残留, 已修 commit 17f045a)
- P0-5 致命 2 (JWT aud 缺失, 已修 commit 17f045a)
- P0-6 clearAllTasks 守卫 (Wave 3)
- P0-8 DBViewer 黑名单漏 (已修 commit 17f045a)
- P1-3 task-detail 跳转传 task_id 而非 customer_id
- P2-7 board-finance 隐式 null
- 2 个独立 Bug (page_context.created_at + ClueCategory 字典)

参考: docs/_overview/00-index.md
2026-05-04 07:38:28 +08:00

146 lines
6.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 测试规范(Wave 1-5 验证判据)
> 生成日期:2026-05-04 / 用途:Wave 1-5 走查时的"过线判据"基础 / 引用源:`01-product-overview.md` `02a-miniprogram-page-matrix.md` `02b-adminweb-page-matrix.md`
本文不重复产品定义(去 01),不重复每页字段(去 02a/02b),只定义**测试该怎么跑、什么算过线**。
## 一、测试视角分层
| 层 | 内容 | 工具 | 判据来源 |
|---|---|---|---|
| L1 工程层 | 代码可启动 / 无控制台错误 / API 200 | Playwright Console + Network | tsc/lint/build 通过 |
| L2 接口层 | API 返回结构符合契约 / 必填字段齐 | curl + Playwright Network | NS1/NS2/NS3/NS4 + .tsx 实际调用 |
| L3 展示层 | UI 渲染必现字段 / 空态文案对 / 数据展示标准对 | Playwright Snapshot + Screenshot | `02a` `02b` 必现字段 + DISPLAY-STANDARDS |
| L4 业务层 | 数据语义对 / 跨页一致 / 角色权限对 | Playwright + 微信 IDE + DB 校核 | `01-product-overview.md` 业务概念 |
| L5 数据层 | DB 视图 / RLS 隔离 / DWS 字段口径 | pg-etl-test / pg-app-test MCP | `db/CLAUDE.md` + 飞球 CLAUDE.md DWS 权威 |
**L1 不过 L2 不测;L2 不过 L3/L4 无意义;L4 失败 ≠ Bug,可能是 L5 数据问题。** 走查时按层判读。
## 二、9 主题 × 测试维度映射(基于蓝本 §3.1-§3.9)
| 主题 | L1 | L2 | L3 | L4 | L5 |
|---|---|---|---|---|---|
| §3.1 AI 模块重构(8 APP) | ✓ | ✓ | - | ✓ 调用链路 | - |
| §3.2 admin-web AI 套件 | ✓ | ✓ | ✓ | ✓ | - |
| §3.3 App2 prompt v5.1 | - | ✓ A/B 评分 | - | ✓ 12 项指标产出 | - |
| §3.4 App3 线索完整详情 | - | ✓ | - | ✓ | - |
| §3.5 Runtime Context 沙箱 | ✓ | ✓ | ✓ | ✓ 时间漂移 | ✓ DB 视图 |
| §3.6 AI 触发器 + prewarm | ✓ | ✓ | ✓ | - | ✓ trigger_jobs 表 |
| §3.7 飞球 DWS / RLS | - | - | - | - | ✓ 重点 |
| §3.8 沙箱 admin-web 验证 | ✓ | - | ✓ | ✓ | - |
| §3.9 部署文档 | - | - | - | - | - |
## 三、单页面测试模板(每页都按这个跑)
打开页面后,按顺序跑 5 步:
1. **L1 加载校核**
- URL 状态 200
- 控制台 0 error(401/403 在登录前可允许)
- 主体内容 < 3s 加载
2. **L2 接口校核**
- 抓 Network,核对调用的 API 与 `02a/02b` 列出的"主要后端 API"一致
- 响应 200 + 必填字段齐
- 无 4xx/5xx(除非是测试错误路径)
3. **L3 必现字段校核**
- 对照 `02a/02b` 该页"必现字段"清单逐条勾
- 空数据时显示"空态文案"(对照清单)
- 金额 / 日期 / 数字格式按 `02a §四 跨页共性` 检查
4. **L4 业务语义校核**
- 数据是不是这个角色 / 这个门店应该看到的(参考 `01` §二角色矩阵 + §五.6 site_id 隔离)
- 跨页跳转携带的参数是否对(对照 `02a/02b` 入口字段)
- 同一指标在多页显示是否一致(如近 7 日营收 vs board-finance vs my-profile)
5. **L5 数据校核**(可选,仅当 L4 怀疑数据错时)
- 直查测试库:`SELECT ... FROM dws.dws_*``app.v_*`
- 对照 飞球 CLAUDE.md DWS 权威规范
- 对照页面展示数,差异 > 0.01 即标 D Bug
## 四、走查规模估算(更新版)
基于 Wave 0 调研后的修正:
### 小程序(21 页)
- **必走查**:21 页 × 1 角色(当前账号,Neo 决定)= 21 个 case
- **可选**:某些页有多入口(如 customer-records / customer-service-records),每入口 +1 case
### admin-web(19 路由)
- **必走查**:19 路由 = 19 个 case
- **多 Tab 路由额外展开**:`/etl-tasks`(5 Tab) `/triggers`(4 Tab) `/ai/*` 各页可能有 Tab,需逐 Tab 走 → +约 15 case
### 数据库 / ETL(L5)
- RLS 业务日上界视图重建对照:N 个视图(待 `pg_get_viewdef` 列表)
- finance_area_daily DWS 幂等性:测试库重跑同窗口
- AI 触发器 jobs 表:实际行数 + cron 重调度对比
- sandbox runtime_context 表:虚拟时间漂移多账号
### AI 调用(L4 高成本部分)
- 8 APP × 1 次 / APP = 8 次(蓝本 §3.1)+ App2a 区域财务 = 9 次
- A/B prompt 评分(P2 §3.3)= **20 个以内** Neo 默认授权,先单调通,再批跑
### 总规模(刷新)
- L1-L4 走查:**21 + 19 + 15 = 55 个 UI case**
- L5 数据校核:约 10 个 SQL 验证点
- AI 调用:9 次单调通 + 20 次 A/B 评分(可选)
- **合计:约 75-95 个测试 case**(原估算 60,Wave 0 调研后更准)
预计:Wave 1(Runtime Context)≈ 15 case + DB,Wave 2(admin-web AI)≈ 20 case,Wave 3(小程序)≈ 21 case,Wave 4(DWS/RLS)≈ 15 case + DB,Wave 5(部署)≈ 5 case + 总报告。
## 五、测试产物存放约定
每个 Wave 产出一份验证报告 → `docs/audit/changes/2026-05-04__verify_wave_<N>_<slug>.md`,内容:
```markdown
# Wave <N> 验证报告 — <主题>
| 字段 | 值 |
|---|---|
| 日期 | 2026-05-04 |
| Wave | <N> |
| 范围 | <对照蓝本 §3.x> |
| 通过 | X 个 case |
| 失败 | Y 个 case(P0:a / P1:b / P2:c) |
| 截图 | docs/audit/changes/2026-05-04__verify_wave_<N>_screenshots/*.png |
## 1. case 清单(对照测试矩阵)
| # | 页面/接口 | L1 | L2 | L3 | L4 | L5 | 结论 |
## 2. 失败明细(每条:现状 / 期望 / 复现 / 截图 / 建议优先级)
## 3. 不通过项 todo
- [ ] P0-X: ...
- [ ] P1-Y: ...
## 4. Wave 收尾建议
```
## 六、判 Bug 时的"先看一眼"清单
发现疑似 Bug 时,在标 D 之前先查这 5 条:
1. **是不是文档过期?** → 查 `04-doc-conflicts.md`,本 Wave 0 已登记 39 条
2. **是不是角色权限?** → 查 `01-product-overview.md` §二
3. **是不是门店 site_id 隔离?** → 查 `01-product-overview.md` §五.6
4. **是不是飞球数据本身就缺?** → 查 `朗朗桌球停业日期` 记忆 + DWD 是否有数据
5. **是不是 Runtime Context 虚拟时间漂移?** → 查 `01-product-overview.md` §五.7
5 项都排除后再标 D Bug。
## 七、不在测试范围内
- 生产服务器(SSH)— 只在测试库
- 性能压测 — 仅做基本 Lighthouse / 加载时间
- 跨浏览器 — 仅 Chromium(Playwright 默认)
- 多账号并发 — 仅当前登录账号
- 多终端模拟 — 仅微信开发者工具默认尺寸
## 八、引用
- `01-product-overview.md` 产品全景脑图
- `02a-miniprogram-page-matrix.md` 小程序 21 页指纹
- `02b-adminweb-page-matrix.md` admin-web 19 路由指纹
- `04-doc-conflicts.md` 39 条文档冲突清单
- `05-orphan-pages-cleanup.md` 6 个 admin-web 页面处置
- `docs/audit/changes/2026-05-04__cumulative_baseline_pending_verification.md` 原蓝本
- `apps/etl/connectors/feiqiu/CLAUDE.md` 飞球数据规范(L5 判据)
- `db/CLAUDE.md` 数据库分层(L5 判据)