4.8 KiB
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
Реализованы:
MarketIntelligenceEventbuild_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