# 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 модель: ```text RuntimeResult ``` `RuntimeResult` является единым контрактом результата выполнения Runtime Layer. --- # Architecture `RuntimeResult` агрегирует результаты нескольких Engine. Модель не содержит аналитики, не принимает торговых решений и не зависит от конкретных Engine. Основной источник истины: ```text 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 Модель добавлена в файл: ```text app/src/trading/market_intelligence/common/models.py ``` Расположение: ```text EngineResult ↓ RuntimeResult ``` --- # Implementation Реализованы хранимые поля: ```text engine_results diagnostics started_at finished_at duration_ms metadata ``` Реализованы вычисляемые свойства: ```text successful_results failed_results partial_results stale_results executed_engines failed_engines successful_engines has_errors is_successful total_engines successful_count ``` --- # Compile Check Проверка выполнена командой: ```bash 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 ```text Build 015.2 Runtime Protocol runtime/protocol.py ```