Files
slm-design/DRAFT/level-2/terminology.md

55 lines
4.3 KiB
Markdown
Raw Normal View History

2026-07-30 10:56:48 +03:00
# Терминология 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
├── доменный модуль
│ ├── сегменты
│ └── вложенные модули
└── доменный модуль
```
Путь помогает определить структурную границу, но не доказывает корректность предметной декомпозиции. Решение о том, является ли ответственность самостоятельным доменом, требует понимания продукта.