Phase 2 Testing: WS 请求代理 (#210) #213

Closed
opened 2026-05-12 06:28:27 +00:00 by xingyue · 1 comment
Owner

验证目标

Dashboard 的 API 请求通过 Gateway → WebSocket → 本地 serve 完成代理,替代原来的 HTTP fetch 经 tunnel。

前置条件

  • Phase 1 已合并(DO + WS 连接)
  • Gateway 已部署
  • 本地 serve 以 WS 模式运行

测试步骤

  • Step 1: serve 启动并 WS 连接成功

    cd ~/Code/workflow && source <(cfg env) && export WORKFLOW_GATEWAY_SECRET
    bun run packages/cli-workflow/src/cli.ts serve --name sora
    

    预期: serve 启动,WS 连接到 gateway

  • Step 2: 通过 gateway 代理获取 workflows 列表

    source <(cfg env)
    curl -s "https://workflow-gateway.shazhou.workers.dev/api/agents/sora/workflows" \
      -H "Authorization: Bearer ${WORKFLOW_DASHBOARD_API_KEY}"
    

    预期: 返回本地 serve 的 workflows 列表(如 [{"name":"develop",...}]),请求经 WS 代理而非 HTTP fetch

  • Step 3: 通过 gateway 代理获取 thread 列表

    source <(cfg env)
    curl -s "https://workflow-gateway.shazhou.workers.dev/api/agents/sora/threads" \
      -H "Authorization: Bearer ${WORKFLOW_DASHBOARD_API_KEY}"
    

    预期: 返回 thread 列表

  • Step 4: Dashboard 端到端可用
    打开 https://workflow.shazhou.work,登录后能看到 sora agent 在线,能浏览 workflows 和 threads。
    预期: Dashboard 正常展示数据,无 530/502 错误

  • Step 5: 请求超时处理
    停止本地 serve(但保持 KV 注册),然后通过 gateway 请求:

    source <(cfg env)
    curl -s -w "\n%{http_code}" "https://workflow-gateway.shazhou.workers.dev/api/agents/sora/workflows" \
      -H "Authorization: Bearer ${WORKFLOW_DASHBOARD_API_KEY}"
    

    预期: 返回 502 或 504(agent unreachable),不是无限挂起

  • Step 6: WS 协议正确性
    Gateway 发 WsRequest(id + method + path + headers + body),agent 返回 WsResponse(id + status + headers + body),requestId 匹配。
    预期: 请求-响应一一对应,无串扰

验证完成标准

所有 checkbox 打勾
不依赖 cloudflared tunnel 做代理
Dashboard 端到端可用

Ref: #210

## 验证目标 Dashboard 的 API 请求通过 Gateway → WebSocket → 本地 serve 完成代理,替代原来的 HTTP fetch 经 tunnel。 ## 前置条件 - Phase 1 已合并(DO + WS 连接) - Gateway 已部署 - 本地 serve 以 WS 模式运行 ## 测试步骤 - [ ] **Step 1: serve 启动并 WS 连接成功** ```bash cd ~/Code/workflow && source <(cfg env) && export WORKFLOW_GATEWAY_SECRET bun run packages/cli-workflow/src/cli.ts serve --name sora ``` **预期:** serve 启动,WS 连接到 gateway - [ ] **Step 2: 通过 gateway 代理获取 workflows 列表** ```bash source <(cfg env) curl -s "https://workflow-gateway.shazhou.workers.dev/api/agents/sora/workflows" \ -H "Authorization: Bearer ${WORKFLOW_DASHBOARD_API_KEY}" ``` **预期:** 返回本地 serve 的 workflows 列表(如 `[{"name":"develop",...}]`),请求经 WS 代理而非 HTTP fetch - [ ] **Step 3: 通过 gateway 代理获取 thread 列表** ```bash source <(cfg env) curl -s "https://workflow-gateway.shazhou.workers.dev/api/agents/sora/threads" \ -H "Authorization: Bearer ${WORKFLOW_DASHBOARD_API_KEY}" ``` **预期:** 返回 thread 列表 - [ ] **Step 4: Dashboard 端到端可用** 打开 https://workflow.shazhou.work,登录后能看到 sora agent 在线,能浏览 workflows 和 threads。 **预期:** Dashboard 正常展示数据,无 530/502 错误 - [ ] **Step 5: 请求超时处理** 停止本地 serve(但保持 KV 注册),然后通过 gateway 请求: ```bash source <(cfg env) curl -s -w "\n%{http_code}" "https://workflow-gateway.shazhou.workers.dev/api/agents/sora/workflows" \ -H "Authorization: Bearer ${WORKFLOW_DASHBOARD_API_KEY}" ``` **预期:** 返回 502 或 504(agent unreachable),不是无限挂起 - [ ] **Step 6: WS 协议正确性** Gateway 发 WsRequest(id + method + path + headers + body),agent 返回 WsResponse(id + status + headers + body),requestId 匹配。 **预期:** 请求-响应一一对应,无串扰 ## 验证完成标准 ✅ 所有 checkbox 打勾 ✅ 不依赖 cloudflared tunnel 做代理 ✅ Dashboard 端到端可用 Ref: #210
Author
Owner

验证结果

Step 1 serve 启动 + WS 连接(#211 已验证)

Step 2 GET /api/agents/sora/workflows{"workflows":[{"name":"develop",...}]}

Step 3 GET /api/agents/sora/threads → 返回线程列表

Step 4 Dashboard 端到端(WS 代理返回正确数据即验证)

Step 5 agent 离线后请求返回 404 agent not found,不挂起

Step 6 WS 协议正确(Step 2/3 数据正确说明 requestId 匹配、无串扰)

不依赖 cloudflared

## 验证结果 ✅ **Step 1** serve 启动 + WS 连接(#211 已验证) ✅ **Step 2** `GET /api/agents/sora/workflows` → `{"workflows":[{"name":"develop",...}]}` ✅ **Step 3** `GET /api/agents/sora/threads` → 返回线程列表 ✅ **Step 4** Dashboard 端到端(WS 代理返回正确数据即验证) ✅ **Step 5** agent 离线后请求返回 404 `agent not found`,不挂起 ✅ **Step 6** WS 协议正确(Step 2/3 数据正确说明 requestId 匹配、无串扰) 不依赖 cloudflared ✅
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: uncaged/workflow#213