48 lines
2.8 KiB
Markdown
48 lines
2.8 KiB
Markdown
# 插件 → 后端 端到端验证
|
|
|
|
## 自动化验证(push 模块 → 后端链路,已验证 ✅)
|
|
|
|
前置:Plan 1 后端在跑(`cd d:/alibb-server/backend && docker compose up -d`,`/api/health` ok)。
|
|
|
|
```bash
|
|
cd d:/alibb && node scripts/e2e-push.mjs
|
|
# 预期:ingest status 200, inserted 1
|
|
# 然后查:
|
|
JWT=$(curl -s -XPOST http://localhost:8080/api/auth/login -H 'Content-Type: application/json' -d '{"username":"admin","password":"admin-password-1234"}' | node -e "let s='';process.stdin.on('data',d=>s+=d).on('end',()=>console.log(JSON.parse(s).token))")
|
|
curl -s "http://localhost:8080/api/inquiries/E2E-TEST2" -H "Authorization: Bearer $JWT"
|
|
# 预期:看到 inquiry + customer + _count.messages=1
|
|
```
|
|
|
|
这验证 `push/payload.js` 组装的 payload 能被 Plan 1 后端 `/api/ingest` 正确接收入库(询盘+客户+消息)。
|
|
|
|
## 完整插件 e2e(需手动,Chrome 加载扩展)
|
|
|
|
1. **起后端**:`cd d:/alibb-server/backend && docker compose up -d --build`,等 `curl http://localhost:8080/api/health` → `{"ok":true}`
|
|
2. **加载扩展**:Chrome 打开 `chrome://extensions` → 开启「开发者模式」→「加载已解压的扩展程序」→ 选 `d:/alibb`
|
|
3. **配置推送**:点插件图标 →「后端设置」区填:
|
|
- 服务器 URL:`http://localhost:8080`
|
|
- Token:`dev-ingest-token-1234`
|
|
- 勾「启用推送」
|
|
- 点「授权域名」→ Chrome 弹框点「允许」
|
|
- 点「保存设置」→ 看到「推送设置已保存(已启用)」
|
|
4. **抓取**:打开 `https://message.alibaba.com/message/default.htm`(登录阿里主账号)→ 点插件「开始抓取」(detail 模式,测试 10 条)
|
|
5. **观察**:popup 顶部状态条「推送:已推 N / 待推 M / 失败 K」随抓取增长
|
|
6. **验证后端有数据**:
|
|
```bash
|
|
JWT=$(curl -s -XPOST http://localhost:8080/api/auth/login -H 'Content-Type: application/json' -d '{"username":"admin","password":"admin-password-1234"}' | node -e "let s='';process.stdin.on('data',d=>s+=d).on('end',()=>console.log(JSON.parse(s).token))")
|
|
curl -s "http://localhost:8080/api/inquiries?size=5" -H "Authorization: Bearer $JWT" | node -e "let s='';process.stdin.on('data',d=>s+=d).on('end',()=>{const d=JSON.parse(s);console.log('total:',d.total);d.items.forEach(i=>console.log(' ',i.inquiryId,i.customer?.country,'msgs:',i.messagesCount))})"
|
|
```
|
|
预期:看到刚抓的询盘,带 country + messagesCount
|
|
7. **验证幂等**:再抓同一询盘 → 后端 `messages_count` 不变(早返回生效)
|
|
|
|
## 断网/重试验证(防丢)
|
|
|
|
1. 停后端:`docker compose down`
|
|
2. 抓一条 → popup 状态「待推 1」(入 IndexedDB 队列,未丢)
|
|
3. 起后端:`docker compose up -d`
|
|
4. 等 ~1 分钟(chrome.alarms 触发 worker)→ popup「已推 1」(自动补推)
|
|
|
|
## 收尾
|
|
|
|
`cd d:/alibb-server/backend && docker compose down`(volume 保留)
|