Files
WrBug 92b75d1926 refactor: 将 Polymarket API URL 配置改为代码常量
- 创建 PolymarketConstants 常量类,集中管理所有 Polymarket API URL
- 更新所有服务类,将配置注入改为使用常量:
  * ApiHealthCheckService: 移除配置注入,使用常量
  * RetrofitFactory: 移除 CLOB 和 Gamma API URL 配置注入
  * RelayClientService: 移除 Builder Relayer URL 配置注入
  * BlockchainService: 移除 Data API URL 配置注入
  * PolymarketApiKeyService: 移除 CLOB API URL 配置注入
  * RetrofitConfig: 移除 CLOB API URL 配置注入
  * OrderPushService: 移除 RTDS WebSocket URL 配置注入
  * PolymarketActivityWsService: 移除 Activity WebSocket URL 配置注入
  * CopyTradingWebSocketService: 移除 User WebSocket URL 配置注入
  * PolymarketWebSocketHandler: 移除 RTDS WebSocket URL 配置注入
  * UnifiedOnChainWsService: 添加连接状态查询方法
- 从 application.properties 移除相关配置项,添加说明注释
- 完善 API 健康检查,添加缺失的检测项:
  * Polymarket Activity WebSocket
  * 链上 WebSocket
- 更新相关文档说明
2026-01-13 16:07:19 +08:00

4.1 KiB
Raw Permalink Blame History

订单推送功能测试指南

测试准备

1. 确保有测试账户

  • 账户必须已导入到系统
  • 账户必须有有效的 API Key、Secret 和 Passphrase
  • 可以通过 /api/accounts/import 接口导入账户

2. 启动后端服务

cd backend
./gradlew bootRun

3. 检查日志

启动后,应该看到以下日志:

  • 订单推送服务已初始化
  • 已为账户 X (账户名) 建立 User Channel 连接并发送订阅消息

测试步骤

测试 1: 检查服务初始化

  1. 启动后端服务
  2. 查看日志,确认 OrderPushService 已初始化
  3. 确认所有有 API 凭证的账户都已建立连接

预期结果:

  • 日志显示:订单推送服务已初始化
  • 对于每个有 API 凭证的账户,日志显示:已为账户 X 建立 User Channel 连接并发送订阅消息

测试 2: 通过 WebSocket 订阅订单推送

2.1 使用 WebSocket 客户端连接

# 使用 wscat 或其他 WebSocket 客户端
wscat -c ws://localhost:8000/ws

2.2 发送订阅消息

{
  "type": 1,
  "channel": "order",
  "payload": {
    "accountId": 1
  }
}

预期结果:

  • 收到订阅确认消息:
{
  "type": 4,
  "channel": "order",
  "status": 0,
  "message": null
}

2.3 等待订单消息

当账户有订单活动时(下单、更新、取消),应该收到推送消息:

{
  "type": 3,
  "channel": "order",
  "payload": {
    "accountId": 1,
    "accountName": "测试账户",
    "order": {
      "assetId": "...",
      "eventType": "order",
      "id": "...",
      "market": "...",
      "type": "PLACEMENT",
      "side": "BUY",
      "price": "0.5",
      "originalSize": "10",
      "sizeMatched": "0",
      ...
    },
    "timestamp": 1234567890
  },
  "timestamp": 1234567890
}

测试 3: 测试订单类型

3.1 PLACEMENT (下单)

  • 在 Polymarket 上创建一个订单
  • 应该收到 type: "PLACEMENT" 的订单消息

3.2 UPDATE (订单更新)

  • 订单部分成交时
  • 应该收到 type: "UPDATE" 的订单消息,sizeMatched 字段会更新

3.3 CANCELLATION (订单取消)

  • 取消一个订单
  • 应该收到 type: "CANCELLATION" 的订单消息

测试 4: 多账户支持

  1. 导入多个账户(都有 API 凭证)
  2. 订阅不同账户的订单推送
  3. 验证每个账户的订单消息都能正确推送

测试 5: 连接重连

  1. 断开网络连接
  2. 恢复网络连接
  3. 验证连接是否自动重连(需要实现重连逻辑)

测试 6: 代理支持

如果配置了代理:

export ENABLE_PROXY=1
export PROXY_HOST=127.0.0.1
export PROXY_PORT=8888

启动服务后,应该看到日志:

  • 已配置 WebSocket 代理: 127.0.0.1:8888

常见问题排查

问题 1: 连接建立失败

可能原因:

  • Polymarket RTDS 服务不可用
  • 网络连接问题
  • 代理配置错误

排查步骤:

  1. 检查 Polymarket RTDS WebSocket URL(现在使用代码常量 PolymarketConstants.RTDS_WS_URL
  2. 检查网络连接
  3. 查看详细错误日志

问题 2: 订阅消息发送失败

可能原因:

  • 连接未完全建立就发送消息
  • API 凭证无效

排查步骤:

  1. 检查日志中的连接状态
  2. 验证 API 凭证是否正确
  3. 增加连接建立的等待时间

问题 3: 收不到订单消息

可能原因:

  • 账户没有订单活动
  • 订阅消息格式错误
  • API 凭证权限不足

排查步骤:

  1. 在 Polymarket 上手动创建一个订单
  2. 检查订阅消息格式是否正确
  3. 验证 API Key 是否有订单查询权限

问题 4: 账户 ID 为 null

可能原因:

  • 账户未正确保存到数据库
  • 账户 ID 未正确传递

排查步骤:

  1. 检查数据库中的账户记录
  2. 验证订阅消息中的 accountId 是否正确

日志关键字

搜索以下关键字查看相关日志:

  • 订单推送服务已初始化
  • 已为账户 X 建立 User Channel 连接
  • 已发送 User Channel 订阅消息
  • 处理订单消息失败
  • 推送订单消息失败

下一步

测试通过后,可以:

  1. 实现前端订阅和 Notification 显示
  2. 添加连接重连逻辑
  3. 优化错误处理
  4. 添加单元测试