mirror of
https://github.com/gromlab-ru/slm-design.git
synced 2026-08-22 15:30:16 +03:00
55 lines
4.3 KiB
Markdown
55 lines
4.3 KiB
Markdown
|
|
# Терминология Level 2
|
|||
|
|
|
|||
|
|
> Нормативные определения рабочего черновика. Этот раздел не объявляет правила.
|
|||
|
|
|
|||
|
|
Level 2 наследует терминологию Level 1 и добавляет определения, необходимые слою `domains`. Структурные сущности Level 1 не меняют смысл.
|
|||
|
|
|
|||
|
|
## Нормативный порядок слоёв
|
|||
|
|
|
|||
|
|
Для Level 2 нормативным является полный порядок:
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
app → compositions → domains → infra → ui → shared
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Нижним считается любой слой справа от исходного. Промежуточный слой не является обязательным посредником.
|
|||
|
|
|
|||
|
|
## Слой `domains`
|
|||
|
|
|
|||
|
|
Слой предметных областей приложения. Он содержит доменные модули и Groups, которые классифицируют эти модули.
|
|||
|
|
|
|||
|
|
Код слоя выражает продуктовые понятия, правила, сценарии или продуктовое состояние, которые не принадлежат устройству одной конкретной страницы, маршрута или визуальной композиции.
|
|||
|
|
|
|||
|
|
## Доменная ответственность
|
|||
|
|
|
|||
|
|
Связная предметная область приложения, которая может включать собственные модели, правила, сценарии и продуктовое состояние. Наличие каждого из этих элементов не является обязательным.
|
|||
|
|
|
|||
|
|
Количество экранов, endpoint-ов, хуков или файлов само по себе не определяет границу доменной ответственности.
|
|||
|
|
|
|||
|
|
## Доменный модуль
|
|||
|
|
|
|||
|
|
Обычный SLM-модуль слоя `domains`, представляющий одну доменную ответственность. Его ближайшей внешней структурной границей является слой `domains` или Group этого слоя, а не другой модуль.
|
|||
|
|
|
|||
|
|
Доменный модуль подчиняется всем правилам модулей Level 1: имеет отдельную папку, одного владельца, единый публичный API, собственный узел графа зависимостей и определённый жизненный цикл ресурсов.
|
|||
|
|
|
|||
|
|
Доменный модуль может содержать корневые файлы, сегменты, компоненты и вложенные модули. Вложенный модуль внутри него остаётся обычным вложенным модулем и не становится самостоятельным доменным модулем.
|
|||
|
|
|
|||
|
|
## Group слоя `domains`
|
|||
|
|
|
|||
|
|
Обычная Group Level 1, которая классифицирует доменные модули по принадлежности к бизнес-приложению, продуктовой области или другому понятному проекту признаку.
|
|||
|
|
|
|||
|
|
Такая Group не является доменом, владельцем ответственности или узлом графа зависимостей. Она не задаёт отдельного направления импортов и не изолирует содержащиеся в ней модули от других Groups.
|
|||
|
|
|
|||
|
|
## Структурная модель
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
SLM root
|
|||
|
|
└── domains
|
|||
|
|
├── доменный модуль
|
|||
|
|
│ ├── сегменты
|
|||
|
|
│ └── вложенные модули
|
|||
|
|
└── доменный модуль
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Путь помогает определить структурную границу, но не доказывает корректность предметной декомпозиции. Решение о том, является ли ответственность самостоятельным доменом, требует понимания продукта.
|