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
|
||
├── доменный модуль
|
||
│ ├── сегменты
|
||
│ └── вложенные модули
|
||
└── доменный модуль
|
||
```
|
||
|
||
Путь помогает определить структурную границу, но не доказывает корректность предметной декомпозиции. Решение о том, является ли ответственность самостоятельным доменом, требует понимания продукта.
|