build 039: complete Quotes Feed migration foundation
This commit is contained in:
360
docs/market_intelligence/builds/build-015-4-runtime-registry.md
Normal file
360
docs/market_intelligence/builds/build-015-4-runtime-registry.md
Normal file
@@ -0,0 +1,360 @@
|
||||
# Build 015.4 — Runtime Registry
|
||||
|
||||
**Engineering Build Document**
|
||||
|
||||
---
|
||||
|
||||
# Контроль документа
|
||||
|
||||
| Свойство | Значение |
|
||||
|----------|-----------|
|
||||
| Build | 015.4 |
|
||||
| Название | Runtime Registry |
|
||||
| Статус | **Accepted** |
|
||||
| Подсистема | Market Intelligence |
|
||||
| Layer | Runtime |
|
||||
| Тип | Architecture + Implementation |
|
||||
| Версия | 1.0 |
|
||||
| Язык | Русский |
|
||||
|
||||
---
|
||||
|
||||
# Причина появления Build
|
||||
|
||||
После завершения Build:
|
||||
|
||||
- 015.1 (`RuntimeResult`);
|
||||
- 015.2 (`RuntimeProtocol`);
|
||||
- 015.3 (`EngineRegistration`);
|
||||
|
||||
Runtime получил все необходимые фундаментальные модели для реализации первого инфраструктурного компонента Runtime Layer.
|
||||
|
||||
Таким компонентом стал `RuntimeRegistry`.
|
||||
|
||||
---
|
||||
|
||||
# Цель Build
|
||||
|
||||
Создать каталог зарегистрированных аналитических Engine.
|
||||
|
||||
Registry является единым источником информации о зарегистрированных Engine и предоставляет минимальный API регистрации.
|
||||
|
||||
---
|
||||
|
||||
# Architecture
|
||||
|
||||
`RuntimeRegistry` отвечает исключительно за регистрацию аналитических Engine.
|
||||
|
||||
Registry не выполняет анализ рынка.
|
||||
|
||||
Registry не создаёт `EngineContext`.
|
||||
|
||||
Registry не запускает Engine.
|
||||
|
||||
Registry не агрегирует результаты.
|
||||
|
||||
Registry не управляет Coordinator.
|
||||
|
||||
Единственная ответственность Registry — управление зарегистрированными Engine.
|
||||
|
||||
---
|
||||
|
||||
# Architecture Review
|
||||
|
||||
Проверка подтвердила:
|
||||
|
||||
- Registry соответствует принципу Single Responsibility;
|
||||
- Registry использует `EngineRegistration`;
|
||||
- Registry не содержит аналитики;
|
||||
- Registry не зависит от Coordinator;
|
||||
- Registry не зависит от AutoTrade;
|
||||
- Registry не создаёт `EngineContext`;
|
||||
- Registry не запускает Engine.
|
||||
|
||||
Архитектура Build признана корректной.
|
||||
|
||||
---
|
||||
|
||||
# Architecture Decision (ADR)
|
||||
|
||||
## Решение
|
||||
|
||||
Добавить компонент:
|
||||
|
||||
```text
|
||||
RuntimeRegistry
|
||||
```
|
||||
|
||||
в Runtime Layer.
|
||||
|
||||
## Статус
|
||||
|
||||
**Accepted**
|
||||
|
||||
## Обоснование
|
||||
|
||||
Runtime должен иметь единый каталог зарегистрированных Engine.
|
||||
|
||||
Registry хранит записи регистрации и предоставляет к ним доступ другим компонентам Runtime.
|
||||
|
||||
Для хранения используется модель:
|
||||
|
||||
```text
|
||||
EngineRegistration
|
||||
```
|
||||
|
||||
## Утверждённая модель хранения
|
||||
|
||||
```python
|
||||
dict[
|
||||
EngineName,
|
||||
EngineRegistration,
|
||||
]
|
||||
```
|
||||
|
||||
## Публичный API
|
||||
|
||||
```text
|
||||
register()
|
||||
unregister()
|
||||
get()
|
||||
contains()
|
||||
list()
|
||||
clear()
|
||||
```
|
||||
|
||||
## Запрещено
|
||||
|
||||
Registry не должен содержать:
|
||||
|
||||
```text
|
||||
analyze()
|
||||
run()
|
||||
execute()
|
||||
resolve_dependencies()
|
||||
validate()
|
||||
build_graph()
|
||||
sort()
|
||||
```
|
||||
|
||||
## Последствия
|
||||
|
||||
После принятия решения:
|
||||
|
||||
- Runtime получил единый каталог Engine;
|
||||
- Registry остаётся независимым от аналитики;
|
||||
- RuntimeRunner сможет использовать Registry;
|
||||
- DependencyResolver сможет использовать Registry;
|
||||
- добавление новых Engine не требует изменения Runtime.
|
||||
|
||||
---
|
||||
|
||||
# Build Design
|
||||
|
||||
Создан файл:
|
||||
|
||||
```text
|
||||
app/src/trading/market_intelligence/runtime/registry.py
|
||||
```
|
||||
|
||||
Внутренний каталог Registry:
|
||||
|
||||
```python
|
||||
self._engines: dict[
|
||||
EngineName,
|
||||
EngineRegistration,
|
||||
]
|
||||
```
|
||||
|
||||
При регистрации Registry самостоятельно создаёт:
|
||||
|
||||
```text
|
||||
EngineRegistration
|
||||
```
|
||||
|
||||
через:
|
||||
|
||||
```python
|
||||
engine_type.get_metadata()
|
||||
```
|
||||
|
||||
Дополнительная фабрика регистрации не используется.
|
||||
|
||||
---
|
||||
|
||||
# Implementation
|
||||
|
||||
Реализован компонент:
|
||||
|
||||
```text
|
||||
RuntimeRegistry
|
||||
```
|
||||
|
||||
Публичный интерфейс:
|
||||
|
||||
```text
|
||||
register()
|
||||
unregister()
|
||||
get()
|
||||
contains()
|
||||
list()
|
||||
clear()
|
||||
```
|
||||
|
||||
Registry использует:
|
||||
|
||||
```text
|
||||
EngineRegistration
|
||||
```
|
||||
|
||||
как единственную единицу хранения зарегистрированных Engine.
|
||||
|
||||
---
|
||||
|
||||
# Compile Check
|
||||
|
||||
Проверка выполнена командой:
|
||||
|
||||
```bash
|
||||
python -m compileall src/trading/market_intelligence
|
||||
```
|
||||
|
||||
Результат:
|
||||
|
||||
- успешно скомпилирован `runtime/registry.py`;
|
||||
- синтаксические ошибки отсутствуют;
|
||||
- циклические зависимости отсутствуют.
|
||||
|
||||
**Статус:** ✅ Passed
|
||||
|
||||
---
|
||||
|
||||
# Domain Review
|
||||
|
||||
Проверено соответствие предметной области.
|
||||
|
||||
Подтверждено:
|
||||
|
||||
- Registry хранит только зарегистрированные Engine;
|
||||
- Registry использует `EngineRegistration`;
|
||||
- Registry не содержит аналитики;
|
||||
- Registry не управляет выполнением Engine;
|
||||
- Registry не создаёт `EngineContext`;
|
||||
- Registry не формирует `RuntimeResult`;
|
||||
- Registry не знает Coordinator;
|
||||
- Registry не зависит от AutoTrade;
|
||||
- Registry не обращается к бирже, БД, Telegram или EventBus.
|
||||
|
||||
**Статус:** ✅ Passed
|
||||
|
||||
---
|
||||
|
||||
# Documentation
|
||||
|
||||
В рамках Build должны быть обновлены:
|
||||
|
||||
- Build History;
|
||||
- Runtime Architecture;
|
||||
- Runtime Contract;
|
||||
- Runtime Layer Documentation.
|
||||
|
||||
---
|
||||
|
||||
# Acceptance
|
||||
|
||||
Build считается завершённым.
|
||||
|
||||
Выполнены:
|
||||
|
||||
- ✅ Architecture
|
||||
- ✅ Architecture Review
|
||||
- ✅ Architecture Decision (ADR)
|
||||
- ✅ Build Design
|
||||
- ✅ Implementation
|
||||
- ✅ Compile Check
|
||||
- ✅ Domain Review
|
||||
- ✅ Documentation
|
||||
- ✅ Acceptance
|
||||
|
||||
Статус Build:
|
||||
|
||||
**Accepted**
|
||||
|
||||
---
|
||||
|
||||
# Итоги Build
|
||||
|
||||
В результате Build 015.4:
|
||||
|
||||
- Runtime Layer получил первый инфраструктурный компонент;
|
||||
- появился единый каталог зарегистрированных Engine;
|
||||
- Runtime получил единый механизм регистрации аналитических движков;
|
||||
- Registry использует `EngineRegistration` как атомарную запись;
|
||||
- подготовлена основа для реализации Runtime Runner.
|
||||
|
||||
---
|
||||
|
||||
# Архитектурные принципы, закреплённые Build
|
||||
|
||||
## Registry отвечает только за регистрацию
|
||||
|
||||
`RuntimeRegistry` не выполняет анализ и не управляет выполнением Engine.
|
||||
|
||||
Единственная ответственность Registry — управление каталогом зарегистрированных Engine.
|
||||
|
||||
---
|
||||
|
||||
## EngineRegistration является единицей хранения
|
||||
|
||||
Внутри Registry хранится исключительно:
|
||||
|
||||
```text
|
||||
EngineRegistration
|
||||
```
|
||||
|
||||
Хранение отдельных `EngineType` или `EngineMetadata` запрещено.
|
||||
|
||||
---
|
||||
|
||||
## Runtime самостоятельно создаёт регистрацию
|
||||
|
||||
Во время регистрации Registry самостоятельно получает Metadata:
|
||||
|
||||
```python
|
||||
metadata = engine_type.get_metadata()
|
||||
```
|
||||
|
||||
и создаёт:
|
||||
|
||||
```text
|
||||
EngineRegistration
|
||||
```
|
||||
|
||||
Отдельная фабрика регистрации не вводится.
|
||||
|
||||
---
|
||||
|
||||
## Registry не содержит эксплуатационной логики
|
||||
|
||||
Registry не выполняет:
|
||||
|
||||
- анализ;
|
||||
- запуск Engine;
|
||||
- сортировку;
|
||||
- разрешение зависимостей;
|
||||
- построение графов;
|
||||
- валидацию.
|
||||
|
||||
Все перечисленные обязанности относятся к другим компонентам Runtime Layer.
|
||||
|
||||
---
|
||||
|
||||
# Следующий Build
|
||||
|
||||
```text
|
||||
Build 015.5
|
||||
|
||||
Runtime Runner
|
||||
|
||||
runtime/runner.py
|
||||
```
|
||||
Reference in New Issue
Block a user