5.7 KiB
Build 015.1 — Common Models Extension / RuntimeResult
Engineering Build Document
Контроль документа
| Свойство | Значение |
|---|---|
| Build | 015.1 |
| Название | Common Models Extension / RuntimeResult |
| Статус | Accepted |
| Подсистема | Market Intelligence |
| Layer | Common |
| Тип | Architecture + Implementation |
| Версия | 1.0 |
| Язык | Русский |
Причина появления Build
Во время проектирования RuntimeProtocol было установлено, что Runtime не может возвращать EngineResult.
EngineResult описывает результат выполнения одного Engine.
Runtime агрегирует результаты нескольких Engine, поэтому ему нужен собственный официальный результат выполнения.
Цель Build
Добавить в Common Layer модель:
RuntimeResult
RuntimeResult является единым контрактом результата выполнения Runtime Layer.
Architecture
RuntimeResult агрегирует результаты нескольких Engine.
Модель не содержит аналитики, не принимает торговых решений и не зависит от конкретных Engine.
Основной источник истины:
engine_results
Все производные данные вычисляются из него.
Architecture Review
Проверка подтвердила:
- модель относится к Common Layer;
- RuntimeResult нужен Runtime, Coordinator, стратегиям, диагностике и тестам;
- производные данные не должны храниться отдельно;
- RuntimeResult не должен зависеть от Runtime-реализации.
Архитектура Build признана корректной.
Architecture Decision (ADR)
Решение
Добавить RuntimeResult в common.models.
Статус
Accepted
Обоснование
Runtime выполняет несколько Engine и должен возвращать агрегированный результат.
Размещение RuntimeResult в Common Layer сохраняет однонаправленные зависимости и позволяет использовать модель разными слоями платформы.
Последствия
После принятия решения:
- Runtime сможет возвращать единый результат выполнения;
- Coordinator сможет работать с агрегированным контрактом;
- исключается дублирование списков выполненных и ошибочных Engine;
- RuntimeProtocol можно проектировать без временных моделей.
Build Design
Модель добавлена в файл:
app/src/trading/market_intelligence/common/models.py
Расположение:
EngineResult
↓
RuntimeResult
Implementation
Реализованы хранимые поля:
engine_results
diagnostics
started_at
finished_at
duration_ms
metadata
Реализованы вычисляемые свойства:
successful_results
failed_results
partial_results
stale_results
executed_engines
failed_engines
successful_engines
has_errors
is_successful
total_engines
successful_count
Compile Check
Проверка выполнена командой:
python -m compileall src/trading/market_intelligence
Результат:
- успешно скомпилирован
common/models.py; - синтаксические ошибки отсутствуют;
- циклические зависимости отсутствуют.
Статус: ✅ Passed
Domain Review
Проверено соответствие предметной области.
RuntimeResult:
- агрегирует результаты нескольких
EngineResult; - не содержит аналитической логики;
- не принимает торговых решений;
- не зависит от Runtime-реализации;
- не зависит от Coordinator;
- не зависит от конкретных Engine;
- производные данные вычисляются из
engine_results.
Статус: ✅ Passed
Documentation
В рамках Build должны быть обновлены:
- Build History;
- Runtime Contract;
- Common Models Documentation;
- будущая документация Runtime Layer.
Acceptance
Build считается завершённым.
Выполнены:
- ✅ Architecture
- ✅ Architecture Review
- ✅ Architecture Decision (ADR)
- ✅ Build Design
- ✅ Implementation
- ✅ Compile Check
- ✅ Domain Review
- ✅ Documentation
- ✅ Acceptance
Статус Build:
Accepted
Итоги Build
В результате Build 015.1:
- Common Layer получил модель
RuntimeResult; - Runtime Layer получил будущий выходной контракт;
- Coordinator сможет работать с агрегированным результатом Runtime;
- подготовлена основа для Build 015.2 —
runtime/protocol.py.
Следующий Build
Build 015.2
Runtime Protocol
runtime/protocol.py