feat: add market data architecture and complete migration through build 039
This commit is contained in:
187
docs/market_intelligence/builds/build-009-common-payloads.md
Normal file
187
docs/market_intelligence/builds/build-009-common-payloads.md
Normal 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**
|
||||
Reference in New Issue
Block a user