7.5 KiB
Build 015.3 — Common Models Extension / EngineRegistration
Engineering Build Document
Контроль документа
| Свойство | Значение |
|---|---|
| Build | 015.3 |
| Название | Common Models Extension / EngineRegistration |
| Статус | Accepted |
| Подсистема | Market Intelligence |
| Layer | Common |
| Тип | Architecture + Implementation |
| Версия | 1.0 |
| Язык | Русский |
Причина появления Build
Во время проектирования RuntimeRegistry было установлено, что хранение только класса Engine недостаточно.
Runtime Registry постоянно работает с двумя сущностями:
- типом Engine;
- его Metadata.
Постоянный вызов Engine.get_metadata() привёл бы к дублированию логики и усложнил бы реализацию Registry.
Для устранения этой проблемы введена единая модель регистрации Engine.
Цель Build
Добавить в Common Layer новую фундаментальную модель:
EngineRegistration
Модель описывает зарегистрированный аналитический движок и является единицей хранения Runtime Registry.
Architecture
EngineRegistration представляет собой атомарную запись регистрации Engine.
Модель не является:
- Engine;
- Runtime;
- Registry;
- Runtime Contract.
Это исключительно модель Common Layer.
Architecture Review
Проверка подтвердила:
- модель относится к Common Layer;
- Runtime Registry использует одну запись регистрации вместо двух независимых сущностей;
- отсутствует дублирование Metadata;
- сохраняется разделение Metadata и Logic;
- сохраняется однонаправленная архитектура зависимостей.
Архитектура Build признана корректной.
Architecture Decision (ADR)
Решение
Добавить модель:
EngineRegistration
в common.models.
Статус
Accepted
Обоснование
Во время проектирования Runtime Registry подтверждено, что регистрация Engine является самостоятельной архитектурной сущностью.
Модель объединяет:
- тип Engine;
- его Metadata.
При этом сама Metadata остаётся единственным источником информации об Engine.
Главное правило
EngineRegistration не должен дублировать информацию, уже содержащуюся в EngineMetadata.
Запрещается добавлять отдельные поля:
engine_name
engine_version
dependencies
priority
enabled_by_default
registered_at
Последствия
После принятия решения:
- Runtime Registry сможет хранить атомарные записи регистрации;
- Metadata будет доступна без обращения к классу Engine;
- Runtime сохранит контроль над жизненным циклом Engine;
- модель регистрации останется независимой от Runtime-состояния.
Build Design
В файл
app/src/trading/market_intelligence/common/models.py
добавлены:
EngineTypeProtocol
EngineRegistration
EngineTypeProtocol используется как минимальный контракт класса Engine и позволяет избежать запрещённой зависимости:
Common → Engine
Implementation
Реализованы:
EngineTypeProtocol
EngineRegistration
Состав модели:
EngineRegistration
├── engine_type
└── metadata
Модель не содержит дополнительных полей.
Compile Check
Проверка выполнена командой:
python -m compileall src/trading/market_intelligence
Результат:
- успешно скомпилирован
common/models.py; - синтаксические ошибки отсутствуют;
- циклические зависимости отсутствуют.
Статус: ✅ Passed
Domain Review
Проверено соответствие предметной области.
Подтверждено:
EngineRegistrationописывает регистрацию Engine, а не сам Engine;- модель не содержит аналитической логики;
- модель не содержит Runtime-состояния;
EngineRegistrationне дублирует данные изEngineMetadata;- Common Layer не импортирует
EngineProtocol; - Runtime Registry сможет использовать
EngineRegistrationкак единую запись регистрации.
Статус: ✅ Passed
Documentation
В рамках Build должны быть обновлены:
- Build History;
- Runtime Architecture;
- Engine Layer Architecture;
- Common Models Documentation.
Acceptance
Build считается завершённым.
Выполнены:
- ✅ Architecture
- ✅ Architecture Review
- ✅ Architecture Decision (ADR)
- ✅ Build Design
- ✅ Implementation
- ✅ Compile Check
- ✅ Domain Review
- ✅ Documentation
- ✅ Acceptance
Статус Build:
Accepted
Итоги Build
В результате Build 015.3:
- Common Layer получил модель
EngineRegistration; - Runtime Registry получил единицу хранения зарегистрированных Engine;
- устранено дублирование вызовов
Engine.get_metadata(); - сохранён принцип единственного источника истины;
- сохранена однонаправленная архитектура зависимостей между слоями.
Архитектурные принципы, закреплённые Build
В рамках Build официально закреплены следующие правила.
EngineRegistration не дублирует Metadata
Если информация уже содержится в EngineMetadata, она не должна повторяться в EngineRegistration.
Один источник истины
Описание Engine хранится исключительно в EngineMetadata.
EngineRegistration только связывает тип Engine с его Metadata.
Common Layer не зависит от Engine Layer
Для хранения типа Engine используется минимальный локальный протокол:
EngineTypeProtocol
Это позволяет избежать запрещённой зависимости:
Common → Engine
Следующий Build
Build 015.4
Runtime Registry
runtime/registry.py