t029_account_bridge_demo.ts 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. /**
  2. * T029 演示:账户管理器桥接服务
  3. * 演示如何集成现有的 AccountManager 与新的 AccountSyncService
  4. */
  5. import { SystemOrchestrator } from '../src/modules/SystemOrchestrator.js'
  6. import { logger } from '../src/utils/logger.js'
  7. async function main() {
  8. logger.info('=== T029 账户管理器桥接演示 ===')
  9. try {
  10. // 1. 创建系统协调器
  11. const orchestrator = new SystemOrchestrator()
  12. // 2. 模拟账户配置
  13. const mockAccounts = [
  14. {
  15. id: '1',
  16. name: 'Pacifica Account 1',
  17. account: '0x1234567890abcdef1234567890abcdef12345678',
  18. privateKey: 'mock_private_key_1'
  19. },
  20. {
  21. id: '2',
  22. name: 'Pacifica Account 2',
  23. account: '0xabcdef1234567890abcdef1234567890abcdef12',
  24. privateKey: 'mock_private_key_2'
  25. }
  26. ]
  27. // 3. 初始化系统(启用控制平面模式)
  28. logger.info('初始化系统(启用控制平面模式)...')
  29. await orchestrator.initialize({
  30. accounts: mockAccounts,
  31. enableTrading: false,
  32. enableDashboard: false,
  33. enableControlPlane: true
  34. })
  35. // 4. 启动系统
  36. logger.info('启动系统...')
  37. await orchestrator.start()
  38. // 5. 检查桥接器状态
  39. const bridgeStats = orchestrator.getBridgeStats()
  40. logger.info('桥接统计信息:', bridgeStats)
  41. // 6. 获取统一系统状态
  42. const unifiedStatus = orchestrator.getUnifiedSystemStatus()
  43. logger.info('统一系统状态:', {
  44. legacyServices: Object.keys(unifiedStatus.legacy),
  45. controlPlaneStatus: unifiedStatus.controlPlane?.status,
  46. bridgeStatus: unifiedStatus.bridge?.isRunning
  47. })
  48. // 7. 手动触发账户同步
  49. logger.info('手动触发账户同步...')
  50. const syncResult = await orchestrator.triggerAccountSync()
  51. logger.info('同步结果:', syncResult)
  52. // 8. 等待一段时间让自动同步运行
  53. logger.info('等待 35 秒让自动同步运行...')
  54. await new Promise(resolve => setTimeout(resolve, 35000))
  55. // 9. 再次检查统计信息
  56. const updatedStats = orchestrator.getBridgeStats()
  57. logger.info('更新后的桥接统计:', updatedStats)
  58. // 10. 获取控制平面服务详情
  59. const controlPlaneService = orchestrator.getControlPlaneService()
  60. if (controlPlaneService) {
  61. const healthMetrics = controlPlaneService.getHealthMetrics()
  62. logger.info('控制平面健康指标:', healthMetrics)
  63. const systemStats = controlPlaneService.getSystemStatus()
  64. logger.info('控制平面系统统计:', systemStats)
  65. }
  66. // 11. 停止系统
  67. logger.info('停止系统...')
  68. await orchestrator.stop()
  69. logger.info('=== T029 演示完成 ===')
  70. } catch (error: any) {
  71. logger.error('T029 演示失败:', { error: error.message, stack: error.stack })
  72. process.exit(1)
  73. }
  74. }
  75. // 优雅关闭处理
  76. process.on('SIGINT', async () => {
  77. logger.info('收到 SIGINT 信号,正在优雅关闭...')
  78. process.exit(0)
  79. })
  80. process.on('SIGTERM', async () => {
  81. logger.info('收到 SIGTERM 信号,正在优雅关闭...')
  82. process.exit(0)
  83. })
  84. // 运行演示
  85. if (import.meta.url === `file://${process.argv[1]}`) {
  86. main().catch(error => {
  87. logger.error('演示运行失败:', error)
  88. process.exit(1)
  89. })
  90. }