兼容Debug EML SSE断流兜底

This commit is contained in:
andy
2026-07-12 19:26:52 +08:00
parent 9d095cfd53
commit 807d045526
17 changed files with 556 additions and 47 deletions

View File

@@ -22,7 +22,8 @@ Debug EML 页面第一版只做一件事:
- 不调用 SuperAgent 任务结果通知接口。
- 不触发 AgentBus 实时链路。
- 不做批量上传。
- 不提供 Debug run 历史列表或详情查询
- 不提供 Debug run 历史列表。
- 仅提供按 `debug_run_id` 查询单次运行状态和安全结果,用于 SSE 断流后的前端兜底轮询。
- 不在生产普通业务页面开放。
## 3. 页面建议结构
@@ -40,6 +41,17 @@ Debug EML 页面第一版只做一件事:
## 4. 接口
实时 Trace 页面优先使用流式接口:
```text
POST /api/system/debug/eml-superagent-runs/stream
Content-Type: multipart/form-data
Accept: text/event-stream
Header: X-TH-Hotel-Debug-Upload-Key: <调试上传口令>
```
同步调试接口仍保留:
```text
POST /api/system/debug/eml-superagent-runs
Content-Type: multipart/form-data
@@ -47,6 +59,16 @@ Accept: application/json
Header: X-TH-Hotel-Debug-Upload-Key: <调试上传口令>
```
SSE 断流兜底查询接口:
```text
GET /api/system/debug/eml-superagent-runs/{debug_run_id}
Accept: application/json
Header: X-TH-Hotel-Debug-Upload-Key: <调试上传口令>
```
中文说明:前端不直接调用 SuperAgent。上传后如果 SSE 已收到 `debug_run_id`,但浏览器或反向代理提前关闭了流,前端可以用同一个 Debug 上传口令轮询该 GET 接口,直到状态变成 `SUPERAGENT_SUCCEEDED``SUPERAGENT_FAILED``FAILED`。该接口不是历史列表接口,也不允许绕过 Debug 上传口令。
注意:
- 该接口只有在后端 `debug.eml-upload.enabled=true` 时存在;如果后端未开启,前端可能收到 `404`
@@ -229,7 +251,8 @@ idle
- 文件未选择或 Debug 上传口令为空时禁用提交按钮;`hotel_id` 为空是允许的,表示使用后端系统酒店。
- 提交后禁用文件选择和提交按钮,避免重复上传。
- SuperAgent 调用可能耗时较长,页面 loading 文案不要只写“上传中”,建议写“正在解析邮件并等待 SuperAgent 返回”。
- 成功后保留本次响应在页面内存中;当前没有 Debug run 查询接口,刷新页面后需要重新上传。
- 成功后保留本次响应在页面内存中;当前没有 Debug run 历史列表,刷新页面后通常需要重新上传或手动使用已知 `debug_run_id` 排查
- 如果 SSE 正常返回 `superagent_result`,以前端收到的最终结果为准;如果 SSE 在最终结果前关闭但已经收到 `debug_run_id`,前端应轮询 GET 兜底接口。
- 再次上传同一封 `.eml` 会生成新的 `external_message_id` 和新的 SourceMessage前端不要按原始 `Message-ID` 去重。
## 8. 安全与日志
@@ -268,8 +291,8 @@ idle
## 11. 当前后置事项
- Debug run 历史列表 / 详情查询接口未做。
- Debug run 取消或超时轮询接口未做。
- Debug run 历史列表未做。
- Debug run 取消接口未做。
- 批量上传未做。
- 前端白名单元数据独立接口未做。
- 用户身份 / 权限体系未接入;当前依赖调试上传口令保护。