feat: add market data architecture and complete migration through build 039

This commit is contained in:
2026-07-14 09:58:16 +03:00
parent 26deb861bc
commit a996f2f797
443 changed files with 80452 additions and 1335 deletions

View File

@@ -0,0 +1,205 @@
# Build 011 — Common Events Layer
**Build ID:** 011
**Компонент:** `common/events.py`
**Статус:** **Accepted**
---
# Цель Build
Реализовать единый слой представления событий подсистемы Market Intelligence.
Events Layer определяет стандартный формат аналитических событий, которые в дальнейшем смогут использоваться Runtime, журналом, системой диагностики и EventBus.
Данный Build не реализует публикацию событий и не зависит от конкретного механизма доставки.
---
# Реализованные компоненты
Создан файл:
```text
market_intelligence/common/events.py
```
Реализованы:
- `MarketIntelligenceEvent`
- `build_engine_result_event()`
- `build_engine_snapshot_event()`
- `build_result_snapshot_event()`
- `market_intelligence_event_to_payload()`
---
# Архитектурная задача
До появления данного Build существовали:
```text
EngineResult
Payload
Snapshot
```
Однако отсутствовало единое архитектурное представление аналитического события.
После реализации Events Layer любое завершение работы Engine может быть представлено в виде стандартного события Market Intelligence.
---
# Архитектурные решения
В ходе реализации приняты следующие решения.
## Event является архитектурной моделью
MarketIntelligenceEvent описывает событие анализа рынка.
Сам объект события не занимается публикацией.
Таким образом разделяются:
```text
Event Model
Event Transport
```
Это позволяет использовать любые механизмы доставки без изменения модели события.
---
## Event строится из существующих моделей
События создаются исключительно через существующие архитектурные объекты.
Поддерживаются цепочки:
```text
EngineResult
Event
```
и
```text
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
Выполнена проверка:
```bash
python -m compileall \
src/trading/market_intelligence/common/events.py
```
Результат:
```text
Compile successful
```
---
# Architecture Review
Результат:
**PASSED**
Проверено:
- соблюдение Single Responsibility;
- отсутствие публикации событий;
- отсутствие торговой логики;
- использование существующих моделей;
- независимость от Runtime;
- отсутствие циклических зависимостей.
Архитектурных замечаний не выявлено.
---
# Domain Review
Результат:
**PASSED**
Проверено:
- событие отражает только факт завершения анализа;
- отсутствуют торговые действия;
- отсутствуют Runtime-решения;
- структура пригодна для журналирования;
- структура соответствует Runtime Contract.
Замечаний не выявлено.
---
# Итог Build
Build завершил создание общего Events Layer.
Market Intelligence получил единый формат аналитических событий, который может использоваться любыми внешними компонентами платформы.
---
# Build Status
**Accepted**