# 插件 → 后端 端到端验证 ## 自动化验证(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 保留)