mirror of
https://github.com/gromlab-ru/slm-design.git
synced 2026-08-22 07:30:16 +03:00
50 lines
4.5 KiB
Markdown
50 lines
4.5 KiB
Markdown
# Проверка Level 3
|
||
|
||
> Граница автоматической проверки, архитектурного ревью и тестирования Level 3.
|
||
|
||
## Конфигурация проекта
|
||
|
||
Конфигурация проверки сопоставляет физические пути с доменами, их модулями, группами, публичными точками входа и метками сред выполнения. Она также определяет, какие точки входа предназначены только для клиента, только для сервера или для обеих сред.
|
||
|
||
Сопоставление путей не определяет предметный смысл домена. Оно позволяет проверить его форму, публичные API модулей, граф импортов, циклы и совместимость сред.
|
||
|
||
## Автоматическая проверка
|
||
|
||
Автоматическая проверка должна блокировать:
|
||
|
||
- отсутствие модуля `business` или несколько таких модулей в одном домене;
|
||
- исполняемый код или общую точку входа в корне домена;
|
||
- глубокие импорты во внутренние сегменты модулей домена;
|
||
- достижимость кода фреймворка, конкретной среды, адаптеров или сборок из точки входа `business`;
|
||
- достижимость несовместимой среды из клиентской, серверной или общей точки входа;
|
||
- циклы между модулями по общему правилу Level 1.
|
||
|
||
## Архитектурное ревью
|
||
|
||
На ревью определяется:
|
||
|
||
- представляет ли домен одну связную предметную область;
|
||
- принадлежат ли предметные сценарии, контракт ошибок и модель состояния модулю `business`;
|
||
- описывает ли порт минимальную предметную возможность без типов конкретной реализации;
|
||
- остаётся ли адаптер техническим преобразователем без предметных правил и преобразования ошибок в ошибки домена;
|
||
- представляет ли модуль группы `presets` повторяемую сборку для одного контекста выполнения;
|
||
- определены ли владелец ресурса, владелец графа, область жизни экземпляра, запуск и очистка;
|
||
- проходит ли связь между доменами во время выполнения через порт потребителя;
|
||
- принадлежит ли интерфейс React домену, а не отдельной странице или маршруту.
|
||
|
||
## Тестирование
|
||
|
||
Бизнес-логика проверяется через публичный API фабрики с управляемыми тестовыми реализациями портов. Тест адаптера проверяет техническую границу, тест сборки — выбор зависимостей, область жизни и совместимость среды, тест модуля React — провайдер, подписки и жизненный цикл фреймворка. Полный междоменный граф проверяется у его владельца.
|
||
|
||
Тесты не заменяют автоматическую проверку импортов и архитектурное ревью. Они подтверждают поведение уже выбранной границы.
|
||
|
||
## Связанные правила
|
||
|
||
- [`SLM-L3-DOMAIN-A002`](../rules/level-3.md#slm-l3-domain-a002)
|
||
- [`SLM-L3-BUSINESS-R003`](../rules/level-3.md#slm-l3-business-r003)
|
||
- [`SLM-L3-BUSINESS-A004`](../rules/level-3.md#slm-l3-business-a004)
|
||
- [`SLM-L3-ENVIRONMENT-A012`](../rules/level-3.md#slm-l3-environment-a012)
|
||
- [`SLM-L3-TEST-R014`](../rules/level-3.md#slm-l3-test-r014)
|
||
- [`SLM-L1-MODULE-A004`](../rules/level-1.md#slm-l1-module-a004)
|
||
- [`SLM-L1-DEPENDENCY-A005`](../rules/level-1.md#slm-l1-dependency-a005)
|