4.3 KiB
Build 059.1 — WebSocket OHLC Transport Model
Проект: Dzentra
Подсистема: Market Data Acquisition
Этап: 059.1
Статус: Completed
Цель
Начать интеграцию WebSocket OHLC Market Data Dzengi без изменения существующего REST Candles Feed.
На данном этапе реализуется исключительно транспортная модель входящего WebSocket-события.
Никакой parser, validation, mapping или runtime-интеграция ещё не добавляются.
Причина изменения
Во время Build 058 было экспериментально подтверждено, что Dzengi публикует закрытые свечи через отдельный WebSocket endpoint:
destination = OHLCMarketData.subscribe
После успешной подписки сервер начинает отправлять события
destination = ohlc.event
Каждое событие содержит завершённую свечу без объёма.
Следовательно использовать существующую модель Candle невозможно, поскольку она требует наличие volume.
Необходимо отдельное транспортное представление события.
Реализовано
Добавлена новая immutable transport model
DzengiWebSocketOhlcEvent
в
src/market_data/acquisition/adapters/dzengi/models.py
Структура модели
Модель содержит только поля, которые реально присутствуют в runtime-сообщении Dzengi.
symbol
interval
candle_type
open_time
open_price
high_price
low_price
close_price
Все числовые поля используют существующий тип
DzengiRawNumeric
что полностью соответствует остальным transport-моделям адаптера.
Почему это transport model
Данная модель не является внутренней моделью системы.
Она не содержит:
-
Decimal
-
datetime
-
volume
-
source
-
timezone
-
внутренних типов Dzentra
Модель лишь отражает формат, в котором сообщение приходит от биржи.
Все предметные преобразования будут выполняться на последующих этапах.
Почему нельзя использовать Candle
Во время исследования Build 058 было подтверждено:
WebSocket OHLC не содержит volume.
Каноническая модель
Candle
обязательно содержит
volume
Следовательно создание Candle непосредственно из WebSocket-события нарушило бы архитектурный контракт подсистемы.
Архитектурное решение
Архитектура остаётся прежней:
WebSocket
↓
Transport Model
↓
Schema Validation
↓
Parser
↓
Value Validation
↓
Internal Close Event
↓
REST reconciliation
↓
Canonical Candle
Таким образом WebSocket остаётся источником уведомления о закрытии свечи,
а REST остаётся источником канонической OHLCV-свечи.
Совместимость
Изменение полностью обратно совместимо.
Не изменены:
-
REST Candles Feed
-
Quote Feed
-
ExchangeService
-
runtime
-
Market Analysis
-
Trading
Проверка
Выполнено:
python -m compileall \
src/market_data/acquisition/adapters/dzengi/models.py
Импорт модели успешно выполняется.
Итог
Build 059.1 завершает создание транспортного слоя для будущей интеграции WebSocket OHLC, не затрагивая существующую архитектуру получения свечей.