Files
dzentra_bot/docs/market_intelligence/builds/build-009-common-payloads.md

5.0 KiB
Raw Blame History

Build 009 — Common Payloads Layer

Build ID: 009

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

Статус: Accepted


Цель Build

Реализовать единый механизм преобразования результатов работы Market Intelligence в стандартный диагностический Payload.

Payload является официальным способом передачи результатов аналитических движков между слоями платформы, а также используется для:

  • журналирования;
  • диагностики;
  • Snapshot;
  • Runtime;
  • Event;
  • последующей сериализации.

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


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

Создан файл:

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 выполняется:

validate_payload_has_no_trading_fields()

Если обнаружены запрещённые торговые поля, информация сохраняется в диагностическом разделе Payload.

Нарушение не скрывается и становится доступным для анализа во время Runtime и Engineering Review.


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

Payload Layer не знает:

  • конкретные Engine;
  • Strategy;
  • AutoTrade;
  • Exchange;
  • Telegram UI.

Компонент работает исключительно с общими моделями слоя Common.


Compile Check

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

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

Результат:

Compile successful

Architecture Review

Результат: PASSED

Проверено:

  • соблюдение ответственности слоя;
  • отсутствие торговой логики;
  • независимость от Runtime;
  • независимость от UI;
  • независимость от AutoTrade;
  • единый механизм сериализации.

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


Domain Review

Результат: PASSED

Проверено:

  • отсутствие торговых решений;
  • объяснимость структуры Payload;
  • пригодность для журналирования;
  • пригодность для диагностики;
  • соответствие Runtime Contract.

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


Итог Build

Build успешно завершил создание общего слоя сериализации результатов Market Intelligence.

Payload становится официальным форматом передачи аналитических результатов между компонентами платформы.


Build Status

Accepted