5.0 KiB
Build 010 — Common Snapshots Layer
Build ID: 010
Компонент: common/snapshots.py
Статус: Accepted
Цель Build
Реализовать единый слой Snapshot для подсистемы Market Intelligence.
Snapshot представляет собой неизменяемый снимок результата работы аналитического движка в определённый момент времени.
Данный Build создаёт единый формат хранения результатов анализа без привязки к конкретному Engine.
Реализованные компоненты
Создан файл:
market_intelligence/common/snapshots.py
Реализованы:
EngineSnapshotbuild_engine_snapshot()engine_snapshot_to_payload()
Архитектурная задача
До появления данного Build существовал единый Runtime Result (EngineResult), но отсутствовал стандартный механизм фиксации его состояния.
После реализации Snapshot Layer каждый результат анализа может быть сохранён в неизменяемом виде.
Snapshot становится стандартным объектом для:
- журналирования;
- диагностики;
- формирования Event;
- хранения истории анализа;
- последующего сравнения состояний рынка.
Архитектурные решения
В ходе реализации приняты следующие решения.
Snapshot является неизменяемым
Используется
@dataclass(frozen=True, slots=True)
После создания Snapshot его содержимое больше не изменяется.
Это гарантирует воспроизводимость результатов анализа.
Snapshot строится только из EngineResult
Snapshot никогда не вычисляет данные самостоятельно.
Он всегда строится через:
EngineResult
↓
engine_result_to_payload()
↓
EngineSnapshot
Таким образом существует единая точка формирования результата анализа.
Snapshot не содержит торговой логики
Snapshot не имеет права хранить:
- команды открытия позиции;
- команды закрытия позиции;
- расчёт размера позиции;
- состояние AutoTrade;
- состояние Exchange;
- Runtime Position.
Snapshot фиксирует исключительно аналитический результат.
Payload является частью Snapshot
Snapshot не копирует отдельные поля EngineResult.
Вместо этого используется единый Payload Layer.
Это исключает дублирование логики сериализации.
Независимость от Runtime
Snapshot Layer не зависит от:
- AutoTrade;
- Exchange;
- Telegram;
- Journal;
- конкретных Engine.
Компонент использует исключительно сущности Common Layer.
Compile Check
Выполнена проверка:
python -m compileall \
src/trading/market_intelligence/common/snapshots.py
Результат:
Compile successful
Architecture Review
Результат:
PASSED
Проверено:
- соблюдение Single Responsibility;
- неизменяемость Snapshot;
- отсутствие торговой логики;
- использование единого Payload Layer;
- отсутствие нарушения архитектурных границ.
Замечаний не выявлено.
Domain Review
Результат:
PASSED
Проверено:
- Snapshot отражает исключительно состояние анализа;
- отсутствуют торговые решения;
- структура пригодна для журналирования;
- структура пригодна для Runtime;
- структура соответствует Runtime Contract.
Замечаний не выявлено.
Итог Build
Build завершил создание общего Snapshot Layer.
Все аналитические движки платформы получили единый механизм фиксации собственного состояния.
Snapshot становится стандартным архитектурным объектом Market Intelligence.
Build Status
Accepted