debug_open_orders.ts 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #!/usr/bin/env npx tsx
  2. import { PacificaProxyClient } from './src/exchanges/pacifica/PacificaProxyClient.js'
  3. import { logger } from './src/utils/logger.js'
  4. async function debugOpenOrders() {
  5. logger.info('🔍 调试 Pacifica Open Orders API 响应格式')
  6. try {
  7. // 创建 Pacifica 客户端
  8. const client = new PacificaProxyClient({
  9. privateKey: process.env.PACIFICA_PRIVATE_KEY_1 || '',
  10. account: process.env.PACIFICA_ACCOUNT_1 || '3v2fE8y6uPVu5pmNCpmygpGNgdP3kGL3SMoVa86uvLLu',
  11. })
  12. // 禁用WebSocket,使用HTTP
  13. client.setWebSocketEnabled(false)
  14. logger.info('📞 调用 getOpenOrders API...')
  15. const result = await client.getOpenOrders()
  16. console.log('📊 API 原始响应:')
  17. console.log(' type:', typeof result)
  18. console.log(' isArray:', Array.isArray(result))
  19. console.log(' keys:', result && typeof result === 'object' ? Object.keys(result) : 'not an object')
  20. console.log(' resultLength:', Array.isArray(result) ? result.length : 'not an array')
  21. // 深度分析响应结构
  22. if (result && typeof result === 'object') {
  23. logger.info('🔬 响应结构详细分析:')
  24. // 检查是否有 data 字段
  25. if (result.data) {
  26. console.log('✅ 响应包含 data 字段:')
  27. console.log(' dataType:', typeof result.data)
  28. console.log(' isDataArray:', Array.isArray(result.data))
  29. console.log(' dataKeys:', result.data && typeof result.data === 'object' ? Object.keys(result.data) : 'not an object')
  30. console.log(' dataLength:', Array.isArray(result.data) ? result.data.length : 'not an array')
  31. // 如果 data 是数组,显示第一个元素结构
  32. if (Array.isArray(result.data) && result.data.length > 0) {
  33. console.log('📋 第一个订单的结构:')
  34. console.log(' firstOrderKeys:', Object.keys(result.data[0]))
  35. console.log(' firstOrderSample:', JSON.stringify(result.data[0]).substring(0, 300))
  36. }
  37. }
  38. // 检查是否直接是订单数组
  39. if (Array.isArray(result)) {
  40. logger.info('✅ 响应直接是数组:', {
  41. length: result.length,
  42. firstOrderKeys: result.length > 0 ? Object.keys(result[0]) : 'empty array',
  43. })
  44. }
  45. // 检查其他可能的字段
  46. const possibleOrderFields = ['orders', 'openOrders', 'open_orders', 'order', 'result']
  47. for (const field of possibleOrderFields) {
  48. if (result[field]) {
  49. logger.info(`✅ 发现可能的订单字段 "${field}":`, {
  50. type: typeof result[field],
  51. isArray: Array.isArray(result[field]),
  52. length: Array.isArray(result[field]) ? result[field].length : 'not an array',
  53. })
  54. }
  55. }
  56. // 打印完整响应(前1000字符)
  57. console.log('📝 完整响应预览:')
  58. console.log(JSON.stringify(result, null, 2).substring(0, 1000) + '...')
  59. }
  60. } catch (error: any) {
  61. logger.error('❌ 调试失败:', {
  62. error: error.message,
  63. stack: error.stack,
  64. })
  65. }
  66. }
  67. // 立即执行
  68. debugOpenOrders().then(() => {
  69. logger.info('🎯 调试完成')
  70. process.exit(0)
  71. }).catch(error => {
  72. logger.error('🚨 调试脚本执行失败:', error)
  73. process.exit(1)
  74. })