feat: add market data architecture and complete migration through build 039
This commit is contained in:
@@ -0,0 +1,265 @@
|
||||
# Build 015.6 — Runtime Dependencies
|
||||
|
||||
**Engineering Build Document**
|
||||
|
||||
---
|
||||
|
||||
# Контроль документа
|
||||
|
||||
| Свойство | Значение |
|
||||
|----------|-----------|
|
||||
| Build | 015.6 |
|
||||
| Название | Runtime Dependencies |
|
||||
| Статус | **Accepted** |
|
||||
| Подсистема | Market Intelligence |
|
||||
| Layer | Runtime |
|
||||
| Тип | Architecture + Implementation |
|
||||
| Версия | 1.0 |
|
||||
| Язык | Русский |
|
||||
|
||||
---
|
||||
|
||||
# Причина появления Build
|
||||
|
||||
После реализации `RuntimeRegistry` и `RuntimeRunner` Runtime Layer получил возможность хранить и выполнять зарегистрированные Engine.
|
||||
|
||||
Однако порядок выполнения Engine должен учитывать зависимости, объявленные в `EngineMetadata`.
|
||||
|
||||
Для этого необходим отдельный компонент Runtime Layer, отвечающий только за разрешение зависимостей.
|
||||
|
||||
---
|
||||
|
||||
# Цель Build
|
||||
|
||||
Создать компонент:
|
||||
|
||||
```text
|
||||
RuntimeDependencies
|
||||
```
|
||||
|
||||
который определяет корректный порядок выполнения зарегистрированных Engine на основании их обязательных зависимостей.
|
||||
|
||||
---
|
||||
|
||||
# Architecture
|
||||
|
||||
`RuntimeDependencies` получает:
|
||||
|
||||
```text
|
||||
tuple[EngineRegistration, ...]
|
||||
```
|
||||
|
||||
и возвращает:
|
||||
|
||||
```text
|
||||
tuple[EngineRegistration, ...]
|
||||
```
|
||||
|
||||
в порядке выполнения.
|
||||
|
||||
Компонент не создаёт Engine, не запускает Engine, не формирует результаты и не зависит от Coordinator.
|
||||
|
||||
---
|
||||
|
||||
# Architecture Review
|
||||
|
||||
Проверка подтвердила:
|
||||
|
||||
- Engine остаются независимыми;
|
||||
- зависимости объявляются через `EngineMetadata`;
|
||||
- Runtime не содержит аналитики;
|
||||
- Runner не смешивается с Dependency Resolver;
|
||||
- Registry не строит граф зависимостей;
|
||||
- Coordinator пока не реализуется.
|
||||
|
||||
**Статус:** ✅ Passed
|
||||
|
||||
---
|
||||
|
||||
# Architecture Decision (ADR)
|
||||
|
||||
## Решение
|
||||
|
||||
В Runtime Layer вводится компонент:
|
||||
|
||||
```text
|
||||
RuntimeDependencies
|
||||
```
|
||||
|
||||
## Статус
|
||||
|
||||
**Accepted**
|
||||
|
||||
## Обоснование
|
||||
|
||||
Engine могут объявлять обязательные зависимости через:
|
||||
|
||||
```text
|
||||
EngineMetadata.required_dependencies
|
||||
```
|
||||
|
||||
Runtime должен определить порядок выполнения Engine до запуска анализа.
|
||||
|
||||
Эта ответственность не относится к Registry, Runner, Coordinator или конкретным Engine.
|
||||
|
||||
---
|
||||
|
||||
# Build Design
|
||||
|
||||
Создан файл:
|
||||
|
||||
```text
|
||||
app/src/trading/market_intelligence/runtime/dependencies.py
|
||||
```
|
||||
|
||||
Обновлён файл:
|
||||
|
||||
```text
|
||||
app/src/trading/market_intelligence/runtime/exceptions.py
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Implementation
|
||||
|
||||
Реализован класс:
|
||||
|
||||
```text
|
||||
RuntimeDependencies
|
||||
```
|
||||
|
||||
Публичный API:
|
||||
|
||||
```text
|
||||
resolve(registrations)
|
||||
```
|
||||
|
||||
Внутренние этапы:
|
||||
|
||||
```text
|
||||
_build_registration_map()
|
||||
_build_graph()
|
||||
_validate_dependencies()
|
||||
_topological_sort()
|
||||
_visit()
|
||||
```
|
||||
|
||||
Добавлены Runtime-исключения:
|
||||
|
||||
```text
|
||||
MissingEngineDependencyError
|
||||
CircularEngineDependencyError
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Compile Check
|
||||
|
||||
Проверка выполнена командой:
|
||||
|
||||
```bash
|
||||
python -m compileall src/trading/market_intelligence
|
||||
```
|
||||
|
||||
Результат:
|
||||
|
||||
- успешно скомпилирован `runtime/dependencies.py`;
|
||||
- успешно скомпилирован `runtime/exceptions.py`;
|
||||
- синтаксические ошибки отсутствуют;
|
||||
- циклические зависимости отсутствуют.
|
||||
|
||||
**Статус:** ✅ Passed
|
||||
|
||||
---
|
||||
|
||||
# Domain Review
|
||||
|
||||
Проверено соответствие предметной области.
|
||||
|
||||
`RuntimeDependencies`:
|
||||
|
||||
- работает только с зарегистрированными Engine;
|
||||
- берёт зависимости исключительно из `EngineMetadata.required_dependencies`;
|
||||
- не создаёт экземпляры Engine;
|
||||
- не запускает Engine;
|
||||
- не формирует `EngineResult` или `RuntimeResult`;
|
||||
- не зависит от Coordinator;
|
||||
- не добавляет аналитической логики.
|
||||
|
||||
**Статус:** ✅ Passed
|
||||
|
||||
---
|
||||
|
||||
# Code Review / Runtime Review
|
||||
|
||||
Проверка пройдена.
|
||||
|
||||
Подтверждено:
|
||||
|
||||
- компонент имеет одну ответственность;
|
||||
- отсутствующие обязательные зависимости обрабатываются отдельной ошибкой;
|
||||
- циклические зависимости обрабатываются отдельной ошибкой;
|
||||
- топологическая сортировка возвращает корректный порядок выполнения;
|
||||
- зависимости между слоями не нарушены.
|
||||
|
||||
**Статус:** ✅ Passed
|
||||
|
||||
---
|
||||
|
||||
# Documentation
|
||||
|
||||
В рамках Build должны быть обновлены:
|
||||
|
||||
- Build History;
|
||||
- Runtime Architecture;
|
||||
- Runtime Layer Documentation.
|
||||
|
||||
Runtime Contract не изменяется.
|
||||
|
||||
---
|
||||
|
||||
# Acceptance
|
||||
|
||||
Build считается завершённым.
|
||||
|
||||
Выполнены:
|
||||
|
||||
- ✅ Architecture
|
||||
- ✅ Architecture Review
|
||||
- ✅ Architecture Decision
|
||||
- ✅ Build Design
|
||||
- ✅ Implementation
|
||||
- ✅ Compile Check
|
||||
- ✅ Domain Review
|
||||
- ✅ Code Review
|
||||
- ✅ Runtime Review
|
||||
- ✅ Documentation
|
||||
- ✅ Acceptance
|
||||
|
||||
Статус Build:
|
||||
|
||||
**Accepted**
|
||||
|
||||
---
|
||||
|
||||
# Итоги Build
|
||||
|
||||
В результате Build 015.6:
|
||||
|
||||
- Runtime Layer получил механизм разрешения зависимостей;
|
||||
- порядок выполнения Engine теперь может быть построен из `EngineMetadata`;
|
||||
- Engine остаются независимыми и не обращаются друг к другу напрямую;
|
||||
- Registry, Runner и Dependency Resolver имеют разные зоны ответственности;
|
||||
- Runtime Layer стал готов к следующему этапу — Runtime Validation или Coordinator Core.
|
||||
|
||||
---
|
||||
|
||||
# Следующий Build
|
||||
|
||||
```text
|
||||
Build 015.7
|
||||
|
||||
Runtime Validation
|
||||
|
||||
runtime/validation.py
|
||||
```
|
||||
Reference in New Issue
Block a user