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,187 @@
# Build 009 — Common Payloads Layer
**Build ID:** 009
**Компонент:** `common/payloads.py`
**Статус:** **Accepted**
---
# Цель Build
Реализовать единый механизм преобразования результатов работы Market Intelligence в стандартный диагностический Payload.
Payload является официальным способом передачи результатов аналитических движков между слоями платформы, а также используется для:
- журналирования;
- диагностики;
- Snapshot;
- Runtime;
- Event;
- последующей сериализации.
Данный Build не реализует торговую логику и не принимает торговых решений.
---
# Реализованные компоненты
Создан файл:
```text
market_intelligence/common/payloads.py
```
Реализованы функции:
- `value_to_payload()`
- `mapping_to_payload()`
- `engine_score_to_payload()`
- `engine_confidence_to_payload()`
- `engine_metric_to_payload()`
- `engine_diagnostics_to_payload()`
- `engine_dependency_to_payload()`
- `engine_result_to_payload()`
---
# Архитектурная задача
До появления данного Build каждый Engine мог потенциально формировать собственный формат диагностических данных.
После реализации общего Payload Layer все Engine используют единый механизм сериализации.
Таким образом достигаются:
- единый формат Runtime;
- единый формат Snapshot;
- единый формат Diagnostics;
- единый формат Event;
- единый формат журналирования.
---
# Архитектурные решения
В ходе реализации приняты следующие решения.
## Единая сериализация
Все значения проходят единый процесс преобразования.
Поддерживаются:
- dataclass;
- Enum;
- Mapping;
- tuple;
- list;
- простые типы Python.
Payload всегда содержит только сериализуемые структуры.
---
## Payload не принимает решений
Payload является исключительно транспортным представлением результата.
Он не содержит:
- торговых команд;
- расчётов позиции;
- рекомендаций на открытие сделки;
- изменений Runtime.
---
## Автоматическая проверка архитектурных ограничений
Перед возвратом итогового Payload выполняется:
```text
validate_payload_has_no_trading_fields()
```
Если обнаружены запрещённые торговые поля, информация сохраняется в диагностическом разделе Payload.
Нарушение не скрывается и становится доступным для анализа во время Runtime и Engineering Review.
---
## Независимость от Engine
Payload Layer не знает:
- конкретные Engine;
- Strategy;
- AutoTrade;
- Exchange;
- Telegram UI.
Компонент работает исключительно с общими моделями слоя Common.
---
# Compile Check
Выполнена проверка:
```bash
python -m compileall \
src/trading/market_intelligence/common/payloads.py
```
Результат:
```text
Compile successful
```
---
# Architecture Review
Результат: **PASSED**
Проверено:
- соблюдение ответственности слоя;
- отсутствие торговой логики;
- независимость от Runtime;
- независимость от UI;
- независимость от AutoTrade;
- единый механизм сериализации.
Архитектурных замечаний не выявлено.
---
# Domain Review
Результат: **PASSED**
Проверено:
- отсутствие торговых решений;
- объяснимость структуры Payload;
- пригодность для журналирования;
- пригодность для диагностики;
- соответствие Runtime Contract.
Замечаний не выявлено.
---
# Итог Build
Build успешно завершил создание общего слоя сериализации результатов Market Intelligence.
Payload становится официальным форматом передачи аналитических результатов между компонентами платформы.
---
# Build Status
**Accepted**