Files
gochat/CDP_TESTING_HANDOFF.md
T
2026-07-27 15:49:23 +08:00

374 lines
11 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.
# CDP Testing Handoff
更新日期:2026-07-27
权威文件:
- 测试计划:`/home/rogee/Projects/gochat/docs/qa/2026-07-15-cdp-user-function-test-plan.md`
- 测试报告:`/home/rogee/Projects/gochat/docs/qa/reports/2026-07-15-cdp-user-function-report.md`
当前环境基线:
- backend:`http://127.0.0.1:3000`
- frontend:`http://127.0.0.1:3036`
- fake:`http://127.0.0.1:9100`
- 当前可用管理员账号:`admin@gochat.local / changeme`
- 当前常用 Playwright 会话名:`gochat_qa`
## 1. 已经做完的测试任务和测试进度
当前这轮 click-only CDP 验收,最新报告已追加到:
- `11.840`
本轮已完成的主要测试批次如下。
### 1.1 Captain 子链路:本批次已完成
报告范围:
- `11.785` - `11.799`
已覆盖内容:
- Captain 收件箱连接
- 工具页进入、创建弹窗、空校验、`Test connection`
- 自定义工具创建成功
- Captain 设置页进入
- 基础设置更新
- 系统设置更新
- 删除确认弹窗取消链路
- Guardrails 页面进入与保存
- Response guidelines 页面进入与保存
本批次 Captain 结论:
- 页面主链路可达;
- 已发现若干真实问题,主要是:
- 首次列表请求 `301`
- 中英混杂
- 删除确认文案对象错误
### 1.2 Reports:本批次已完成
报告范围:
- `11.800` - `11.827`
已覆盖内容:
- Overview
- Conversations
- Agents overview / detail
- Labels overview / detail
- Inboxes overview / detail
- Teams overview / detail
- CSAT
- SLA
- Bot report
本批次 Reports 结论:
- 9 个可见报表页都已通过真实点击进入并留证据;
- 已确认的主要缺陷:
- `标签明细` 多项接口 `500`:见 `11.812`
- `团队明细` 多项接口 `500`:见 `11.823`
- 多个报告页仍有英文残留:`11.800`、`11.804`、`11.813`、`11.816`、`11.821`、`11.824`
- `机器人报告` 可正常加载并切换日期范围:`11.826`、`11.827`
### 1.3 Activities / Campaigns:进行中
报告范围:
- `11.828` - `11.840`
已覆盖内容:
- `活动 -> 在线聊天`
- `活动 -> 短信`
- `活动 -> WhatsApp`
- 三个页面的 `创建活动` 入口
- WhatsApp 创建表单的收件箱/模板空结果
- 在线聊天创建表单的:
- 收件箱选择
- 发送者下拉
- `仅在工作时间触发` 开关
- `取消` 返回列表
本批次 Activities 当前结论:
- 三个活动页都能通过真实点击进入;
- 共有问题:
- 页面同时渲染“示例活动卡片 + 空态”
- WhatsApp 特有问题:
- 页头和空态仍有英文
- 收件箱、模板下拉都只返回 `未找到结果。`
- 在线聊天创建表单目前已经证明:
- `Test Website Inbox1` 可真实选中
- 选中后会触发 `GET /api/v1/accounts/1/inbox_members/1 -> 200`
- 发送者下拉可展开,候选项有 `Bot / Super Admin / User01`
### 1.4 进度总览
| 模块 | 当前状态 | 说明 |
|---|---|---|
| Captain | 本批次完成 | 见 `11.785` - `11.799` |
| Reports | 本批次完成 | 见 `11.800` - `11.827` |
| Activities / Campaigns | 进行中 | 见 `11.828` - `11.840` |
| Help Center | 未在本批次续测 | 旧报告有覆盖,当前可继续回到计划顺序 |
| Widget / public 入口 | 未在本批次续测 | 仍按高风险项处理 |
| 权限用户回归 | 未在本批次续测 | 仍属于后续待完成项 |
| `fake:ai` 相关链路 | 未完成 | 仍缺本地假服务支撑 |
## 2. 未完成的测试任务
### 2.1 Activities / Campaigns 剩余任务
优先继续下面这些。
1. `在线聊天 -> 创建活动`
- 验证最小必填是否能解锁 `创建`
- 验证真实提交成功/失败链路
- 验证创建后列表是否新增、状态是否正确
2. `短信 -> 创建活动`
- 继续测:
- 空校验
- 最小必填解锁
- 提交成功/失败
- `取消`
3. `WhatsApp -> 创建活动`
- 目前被表单数据缺口卡住:
- inbox 下拉无结果
- template 下拉无结果
- 若后续补齐数据或修复页面,需要继续测:
- 选择收件箱
- 选择模板
- 提交成功/失败
### 2.2 全量计划剩余任务
按计划文件第 9 节执行顺序,当前还没收尾的主要块:
1. Help Center / Widget / public 入口
2. Captain / Copilot 的真实 AI 效果链路
- 需要 `fake:ai`
3. 权限用户回归
- agent
- custom role
### 2.3 当前已知高风险 / 预期阻断
这些不是“数据空态”,而是已经应按产品缺陷记录的问题:
- Help Center 后台三页空白主区
- super admin 入口失效
- widget / public 稳定点击入口缺失
- `标签明细` 报表多接口 `500`
- `团队明细` 报表多接口 `500`
- Activities 页“示例卡片 + 空态并存”
- `fake:ai` 尚未落地,Captain / Copilot 成功链路不能算完成
### 2.4 还需要补充的数据 / 测试支撑
下面这些没补齐时,很多页面只能做 `render-only` 或“入口可达”级别验证,不能算完整功能验收。
| 优先级 | 数据或支撑 | 当前作用 |
|---|---|---|
| P0 | 2 个可登录 agent | 分配、协作、在线状态、权限回归 |
| P0 | `fake_01` inbox 持续可收发 | 会话主链路、实时消息、fake 回流 |
| P0 | 1 个 website inbox(已带 `website_token`) | widget、campaign、public 入口 |
| P0 | 至少 6 个 conversations,且每个 3 条 messages | 列表、详情、筛选、报表 |
| P1 | labels 5 个、teams 2 个 | 标签/团队筛选、报表、自动化 |
| P1 | contacts 8+、companies 3+ | CRM 列表、搜索、关联、详情 |
| P1 | canned responses 3 条、macros 3 条、automation rules 3 条 | 设置页 CRUD、回复提效、规则链路 |
| P1 | custom attributes(contact / conversation / company 各 2 个) | 详情表单、筛选器、自动化条件 |
| P1 | Copilot fake provider | Copilot / Captain 页面联调 |
| P2 | Help Center portal/category/article 多条样本 | help center 后台/portal/public 完整验收 |
| P2 | campaigns 样本:live chat / sms / whatsapp 各至少 1 条 | 活动列表、编辑、启停、触发条件 |
| P2 | CSAT 5 条、SLA 2 条、notifications 5 条、audit logs 5 条 | 报表、通知、审计页 |
| P0 | `fake:ai` | Captain / Copilot 的成功 / 失败 / 超时 / 429 全链路断言 |
## 3. 如何进行功能测试
### 3.1 环境初始化
当前默认启动方式:
```bash
pnpm dev:backend
pnpm dev:frontend
GOCHAT_WEBHOOK_URL=http://127.0.0.1:3000/webhooks/fake/fake_01 FAKE_AUTO_REPLY=true pnpm fake:start
```
启动后至少确认:
```bash
lsof -iTCP:3000 -sTCP:LISTEN -n -P
lsof -iTCP:3036 -sTCP:LISTEN -n -P
lsof -iTCP:9100 -sTCP:LISTEN -n -P
```
通过标准:
- `3000` backend 在监听
- `3036` frontend 在监听
- `9100` fake 在监听
### 3.2 每回合测试前固定动作
每次继续浏览器测试前都做下面几件事:
1. 检查 `npx`
```bash
command -v npx
```
2. 重读技能文件
- `/home/rogee/.codex/skills/playwright/SKILL.md`
- `/home/rogee/.agents/skills/dogfood/SKILL.md`
- `/home/rogee/.agents/skills/dogfood/references/issue-taxonomy.md`
3. 确认 Playwright 浏览器会话是否还活着
```bash
export CODEX_HOME="${CODEX_HOME:-$HOME/.codex}"
export PWCLI="$CODEX_HOME/skills/playwright/scripts/playwright_cli.sh"
"$PWCLI" list
```
4. 确认基础健康状态
```bash
curl -fsS http://127.0.0.1:3000/health
curl -fsS http://127.0.0.1:9100/health
```
### 3.3 测试约束限制
必须遵守的约束:
1. 所有 dashboard 内部页面一律通过真实 UI 点击进入。
2. 不允许直接打开:
- `/app/accounts/:id/...` 深层内部 URL
3. 允许直接打开的例外只有:
- `/app/login`
- widget/public 根入口
- 必要的 fake / fake:ai 观察接口
4. 页面能否“通过”必须以:
- 前端真实请求成功
- UI 真实可用
为准,不是只看路由存在。
5. 证据必须持续追加到同一份报告,不新开分散文档:
- `/home/rogee/Projects/gochat/docs/qa/reports/2026-07-15-cdp-user-function-report.md`
### 3.4 浏览器上下文丢失时的恢复方式
如果页面脏了、会话句柄失效、或者 tab 已不可信,恢复方法是:
1. 先确认 `3000 / 3036 / 9100` 都还活着。
2. 不直接跳内部深链。
3. 只允许重新打开:
- `/app/login`
4. 用已知管理员账号重新登录:
- `admin@gochat.local / changeme`
5. 登录后再通过真实点击链路回到目标页面。
当前这条恢复路径已经被多次证明可用。
### 3.4.1 环境脏了时允许直接重置
这轮测试不要求“硬扛脏环境”。如果出现下面任一情况,应该先重置再继续:
- dashboard 持续出现 `正在重连...`
- `/cable` 持续断开或 401/403
- 同一页面连续刷出大量 `429`
- fake 平台残留旧消息,导致新链路证据混淆
- 浏览器 tab 已明显失真,无法判断是真 bug 还是脏状态
推荐重置顺序:
1. 先重置 fake,不动前后端:
```bash
curl -fsS -X POST http://127.0.0.1:9100/api/reset
curl -fsS http://127.0.0.1:9100/health
```
2. 如果 dashboard 仍持续抖动,再重启 backend:
```bash
pnpm dev:backend
```
3. 只有在 Vite 白屏、热更新异常、或静态资源 5xx 时,才重启 frontend:
```bash
pnpm dev:frontend
```
重置后恢复标准:
- `http://127.0.0.1:3000/health` 返回 200
- `http://127.0.0.1:9100/health` 返回 `{"status":"ok"}`
- 登录后不再持续出现 `/cable` 重连抖动
- 当前目标页面可以重新通过点击链路进入
### 3.5 页面级留证要求
每个页面至少记录:
- `page.url`
- `document.title`
- 关键文案 / 按钮存在性
- console `error` / `warning`
- 关键 API 请求和状态码
- 操作前后快照路径
- 如果失败,要有:
- 复现路径
- 请求
- 响应
- console
- 影响等级
### 3.6 推荐续测起点
如果下一位接手人要马上继续,不要重新选模块,直接从这里继续最省:
1. 登录进入 dashboard
2. 点击:
- `活动 -> 在线聊天`
3. 点击:
- `创建活动`
4. 继续验证:
- 标题 / 消息 / 网址 的最小必填是否会解锁 `创建`
- 真实提交是否成功
- 新建后是否回到列表并新增活动
5. 若接手时当前页已脏,先走:
- fake reset
- `/app/login`
- 重新登录
- 再点击回 `活动 -> 在线聊天 -> 创建活动`
### 3.7 `fake:ai` 说明
当前 Captain / Copilot 的页面可渲染、列表/表单/设置链路已能测到一部分;
但真正的 AI 成功/失败/超时/429 链路,仍依赖本地 `fake:ai`。
在 `fake:ai` 没落地前:
- Captain / Copilot 不要宣称“全量完成”
- 只能算页面级、表单级、请求级部分验收
## 4. 交接结论
当前最有价值的交接点不是“重新从头跑”,而是:
1. 继续沿现有报告 `11.840` 往后追加;
2. 先把 `在线聊天 / 短信 / WhatsApp` 的创建链路彻底打完;
3. 再回到计划顺序,处理 Help Center / Widget / 权限用户回归;
4. 单独补 `fake:ai`,否则 Captain / Copilot 只能停在半验收状态。