Files
dzentra_bot/docs/migrations/build_059_1.md

223 lines
4.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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,
не затрагивая существующую архитектуру получения свечей.