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