2.8 KiB
2.8 KiB
插件 → 后端 端到端验证
自动化验证(push 模块 → 后端链路,已验证 ✅)
前置:Plan 1 后端在跑(cd d:/alibb-server/backend && docker compose up -d,/api/health ok)。
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 加载扩展)
- 起后端:
cd d:/alibb-server/backend && docker compose up -d --build,等curl http://localhost:8080/api/health→{"ok":true} - 加载扩展:Chrome 打开
chrome://extensions→ 开启「开发者模式」→「加载已解压的扩展程序」→ 选d:/alibb - 配置推送:点插件图标 →「后端设置」区填:
- 服务器 URL:
http://localhost:8080 - Token:
dev-ingest-token-1234 - 勾「启用推送」
- 点「授权域名」→ Chrome 弹框点「允许」
- 点「保存设置」→ 看到「推送设置已保存(已启用)」
- 服务器 URL:
- 抓取:打开
https://message.alibaba.com/message/default.htm(登录阿里主账号)→ 点插件「开始抓取」(detail 模式,测试 10 条) - 观察:popup 顶部状态条「推送:已推 N / 待推 M / 失败 K」随抓取增长
- 验证后端有数据:
预期:看到刚抓的询盘,带 country + messagesCount
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))})" - 验证幂等:再抓同一询盘 → 后端
messages_count不变(早返回生效)
断网/重试验证(防丢)
- 停后端:
docker compose down - 抓一条 → popup 状态「待推 1」(入 IndexedDB 队列,未丢)
- 起后端:
docker compose up -d - 等 ~1 分钟(chrome.alarms 触发 worker)→ popup「已推 1」(自动补推)
收尾
cd d:/alibb-server/backend && docker compose down(volume 保留)