Files
dzentra_bot/docs/market_intelligence/builds/build-011-common-events.md

4.8 KiB
Raw Blame History

Build 011 — Common Events Layer

Build ID: 011

Компонент: common/events.py

Статус: Accepted


Цель Build

Реализовать единый слой представления событий подсистемы Market Intelligence.

Events Layer определяет стандартный формат аналитических событий, которые в дальнейшем смогут использоваться Runtime, журналом, системой диагностики и EventBus.

Данный Build не реализует публикацию событий и не зависит от конкретного механизма доставки.


Реализованные компоненты

Создан файл:

market_intelligence/common/events.py

Реализованы:

  • MarketIntelligenceEvent
  • build_engine_result_event()
  • build_engine_snapshot_event()
  • build_result_snapshot_event()
  • market_intelligence_event_to_payload()

Архитектурная задача

До появления данного Build существовали:

EngineResult

↓

Payload

↓

Snapshot

Однако отсутствовало единое архитектурное представление аналитического события.

После реализации Events Layer любое завершение работы Engine может быть представлено в виде стандартного события Market Intelligence.


Архитектурные решения

В ходе реализации приняты следующие решения.

Event является архитектурной моделью

MarketIntelligenceEvent описывает событие анализа рынка.

Сам объект события не занимается публикацией.

Таким образом разделяются:

Event Model

↓

Event Transport

Это позволяет использовать любые механизмы доставки без изменения модели события.


Event строится из существующих моделей

События создаются исключительно через существующие архитектурные объекты.

Поддерживаются цепочки:

EngineResult
        ↓
Event

и

EngineResult
        ↓
Snapshot
        ↓
Event

Никаких дополнительных расчётов внутри Event Layer не выполняется.


Payload не дублируется

Events Layer не сериализует данные самостоятельно.

Используются уже существующие компоненты:

  • Payload Layer;
  • Snapshot Layer.

Это сохраняет принцип единственного источника истины.


Независимость от EventBus

Common Layer определяет только структуру события.

Он ничего не знает о:

  • EventBus;
  • Runtime;
  • Journal;
  • AutoTrade;
  • Telegram;
  • Exchange.

Таким образом Event Layer остаётся полностью независимым.


Compile Check

Выполнена проверка:

python -m compileall \
src/trading/market_intelligence/common/events.py

Результат:

Compile successful

Architecture Review

Результат:

PASSED

Проверено:

  • соблюдение Single Responsibility;
  • отсутствие публикации событий;
  • отсутствие торговой логики;
  • использование существующих моделей;
  • независимость от Runtime;
  • отсутствие циклических зависимостей.

Архитектурных замечаний не выявлено.


Domain Review

Результат:

PASSED

Проверено:

  • событие отражает только факт завершения анализа;
  • отсутствуют торговые действия;
  • отсутствуют Runtime-решения;
  • структура пригодна для журналирования;
  • структура соответствует Runtime Contract.

Замечаний не выявлено.


Итог Build

Build завершил создание общего Events Layer.

Market Intelligence получил единый формат аналитических событий, который может использоваться любыми внешними компонентами платформы.


Build Status

Accepted