SHI XIAOLONG

OrderFilledEvent 接入订单追踪系统14

双 WS 全 EventBus 重构 问题陈述 orderUpdates 和 userFills 通过 realtime_kline_service_base.on_message() → mgr.handle_message() 直连调用 WebSocketOrderManager,而 user 频道的 fills/positions/balance 已走 EventBus。这导致: 1. 半事件驱动 — 同一消费者(WebSocketOrderManager)两条管道:EventBus + 直连 2. 冗余基础设施 — realtime_kline_service_base 维护消息缓冲区(_order_msg_buffer)+ flush 线程 + 回放逻辑,

By SHI XIAOLONG

OrderFilledEvent 接入订单追踪系统13

双 WS 全 EventBus 重构 问题陈述 orderUpdates 和 userFills 通过 realtime_kline_service_base.on_message() → mgr.handle_message() 直连调用 WebSocketOrderManager,而 user 频道的 fills/positions/balance 已走 EventBus。这导致: 1. 半事件驱动 — 同一消费者(WebSocketOrderManager)两条管道:EventBus + 直连 2. 冗余基础设施 — realtime_kline_service_base 维护消息缓冲区(_order_msg_buffer)+ flush 线程 + 回放逻辑,

By SHI XIAOLONG

OrderFilledEvent 接入订单追踪系统12

双 WS 全 EventBus 重构 问题陈述 orderUpdates 和 userFills 通过 realtime_kline_service_base.on_message() → mgr.handle_message() 直连调用 WebSocketOrderManager,而 user 频道的 fills/positions/balance 已走 EventBus。这导致: 1. 半事件驱动 — 同一消费者(WebSocketOrderManager)两条管道:EventBus + 直连 2. 冗余基础设施 — realtime_kline_service_base 维护消息缓冲区(_order_msg_buffer)+ flush 线程 + 回放逻辑,

By SHI XIAOLONG

OrderFilledEvent 接入订单追踪系统11

OrderFilledEvent 接入订单追踪系统 问题陈述 _publish_user_events(user 频道)已发布 OrderFilledEvent,但 EventBus 上零订阅者,成交数据完全丢失。 _on_user_fill(userFills 频道)通过旧直连路径绕过 EventBus 直接调用 _accumulate_fill,与事件驱动架构方向相反。 本次变更:以 userFills 为唯一 fill 来源,通过 EventBus 接入 WebSocketOrderManager,同时删除全部旧路径。 架构决策 决策 结论 fill 来源 仅 userFills 频道,user 频道不再处理 fill 切换方式 原子切换,旧路径与新路径在同一次变更中完成

By SHI XIAOLONG

OrderFilledEvent 接入订单追踪系统10

OrderFilledEvent 接入订单追踪系统 现状诊断 当前 fill 处理路径 user 频道 data.fills → _publish_user_events() → OrderFilledEvent → 🕳️ 无消费者(数据丢失) userFills 频道 → handle_message() → _on_user_fill() → 直接累计(旧直连路径) 两条路径状态不一致: * user 频道的 fills:_publish_user_events 已发布 OrderFilledEvent(优先级 CRITICAL,metadata 含正确 fill_id),但 EventBus 上零订阅者,成交数据完全丢失,不进入订单追踪。 * userFills 频道:_on_user_fill

By SHI XIAOLONG

OrderFilledEvent 接入订单追踪系统8

OrderFilledEvent 接入订单追踪系统 现状诊断 当前 fill 处理路径 user 频道 data.fills → _publish_user_events() → OrderFilledEvent → 🕳️ 无消费者(数据丢失) userFills 频道 → handle_message() → _on_user_fill() → 直接累计(旧直连路径) 两条路径状态不一致: * user 频道的 fills:_publish_user_events 已发布 OrderFilledEvent(优先级 CRITICAL,metadata 含正确 fill_id),但 EventBus 上零订阅者,成交数据完全丢失,不进入订单追踪。 * userFills 频道:_on_user_fill

By SHI XIAOLONG

OrderFilledEvent 接入订单追踪系统7

OrderFilledEvent 接入订单追踪系统 现状诊断 当前 fill 处理路径 user 频道 data.fills → _publish_user_events() → OrderFilledEvent → 🕳️ 无消费者(数据丢失) userFills 频道 → handle_message() → _on_user_fill() → 🕳️ 解析路径错误(数据丢失) 两条路径均静默失效: * user 频道的 fills:_publish_user_events 已发布 OrderFilledEvent(优先级 CRITICAL),但 EventBus 上零订阅者,成交数据完全丢失,不进入订单追踪。 * userFills 频道:通过 realtime_kline_service_base.on_message

By SHI XIAOLONG

OrderFilledEvent 接入订单追踪系统6

OrderFilledEvent 接入订单追踪系统 现状诊断 当前 fill 处理路径 user 频道 data.fills → _publish_user_events() → OrderFilledEvent → 🕳️ 无消费者(数据丢失) userFills 频道 → handle_message() → _on_user_fill() → 🕳️ 解析路径错误(数据丢失) 两条路径均静默失效: * user 频道的 fills:_publish_user_events 已发布 OrderFilledEvent(优先级 CRITICAL),但 EventBus 上零订阅者,成交数据完全丢失,不进入订单追踪。 * userFills 频道:通过 realtime_kline_service_base.on_message

By SHI XIAOLONG

WebSocket 与 REST API 数据结构校验问题报告

WebSocket 与 REST API 数据结构校验问题报告 生成时间:2026-02-22 分析范围:测试网模拟交易环境下,对所有 WebSocket 频道和 REST API 返回的数据结构与代码实际解析逻辑进行全量比对 验证依据:scripts/out/fill_responses_20260222_124558.json(测试网实测数据) 目录 * 总体结论 * 数据结构对照验证表 * BUG-1(严重)userFills 频道数据解析完全失效 * BUG-2(重要)orderUpdates 未识别的拒绝状态类型 * BUG-3(重要)OrderFilledEvent.order_id 类型不匹配 * BUG-4(中等)BalanceChangedEvent.unrealized_pnl 语义错误 * BUG-5(中等)OrderFilledEvent

By SHI XIAOLONG

OrderFilledEvent 接入订单追踪系统5

OrderFilledEvent 接入订单追踪系统 现状诊断 当前 fill 处理路径 user 频道 data.fills → _publish_user_events() → OrderFilledEvent → 🕳️ 无消费者(数据丢失) userFills 频道 → handle_message() → _on_user_fill() → 🕳️ 解析路径错误(数据丢失) 两条路径均静默失效: * user 频道的 fills:_publish_user_events 已发布 OrderFilledEvent(优先级 CRITICAL),但 EventBus 上零订阅者,成交数据完全丢失,不进入订单追踪。 * userFills 频道:通过 realtime_kline_service_base.on_message

By SHI XIAOLONG

OrderFilledEvent 接入订单追踪系统4

OrderFilledEvent 接入订单追踪系统 现状诊断 当前 fill 处理路径 user 频道 data.fills → _publish_user_events() → OrderFilledEvent → 🕳️ 无消费者(数据丢失) userFills 频道 → handle_message() → _on_user_fill() → ✅ 订单追踪正常 两条路径并存,结果截然不同: * user 频道的 fills:_publish_user_events 已发布 OrderFilledEvent(优先级 CRITICAL),但 EventBus 上零订阅者,成交数据完全丢失,不进入订单追踪。 * userFills 频道:通过 realtime_kline_service_base.on_message

By SHI XIAOLONG

OrderFilledEvent 接入订单追踪系统3

OrderFilledEvent 接入订单追踪系统 现状诊断 当前 fill 处理路径 user 频道 data.fills → _publish_user_events() → OrderFilledEvent → 🕳️ 无消费者(数据丢失) userFills 频道 → handle_message() → _on_user_fill() → ✅ 订单追踪正常 两条路径并存,结果截然不同: * user 频道的 fills:_publish_user_events 已发布 OrderFilledEvent(优先级 CRITICAL),但 EventBus 上零订阅者,成交数据完全丢失,不进入订单追踪。 * userFills 频道:通过 realtime_kline_service_base.on_message

By SHI XIAOLONG