Files
dzentra_bot/docs/migrations/build_059_1.md

4.3 KiB
Raw Blame History

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, не затрагивая существующую архитектуру получения свечей.