Files
slm-design/DRAFT/level-1/domains.md

3.2 KiB
Raw Blame History

Доменные модули Level 1

Пояснение базовой модели предметных областей без обязательной внутренней архитектуры.

Связанные правила

Один домен, один модуль

Связная предметная область получает один доменный модуль. Level 1 не требует выделять business, adapters, assemblies или framework bindings в самостоятельные соседние модули.

domains/auth/
├── hooks/
├── services/
├── stores/
├── types/
├── ui/
└── index.ts

Показанные каталоги являются возможными сегментами, а не обязательным каркасом. Доменный модуль может содержать предметные типы, сценарии, состояние, framework-код, локальные адаптеры, компоненты и вложенные модули.

Публичный API

Внешний код использует домен через обычный публичный API модуля:

import { signOut, useSession } from '@/domains/auth'

Глубокий импорт во внутренний сегмент нарушает модульную границу:

import { useSession } from '@/domains/auth/hooks/use-session'

Groups

При большом количестве доменных модулей слой domains может содержать обычные навигационные Groups:

domains/
├── shop/                 # Group
│   ├── catalog/          # Доменный модуль
│   └── orders/           # Доменный модуль
└── cabinet/              # Group
    └── profile/          # Доменный модуль

Group не имеет index.ts, реализации, состояния или публичного API. Она не создаёт dependency boundary и не реэкспортирует содержащиеся в ней домены.

Переход на Level 2

Доменный модуль переводится в доменный пакет Level 2, когда ему нужны устойчивые API, несколько фабрик, разные среды выполнения или независимые SLM-модули сборок и framework-интеграции.

Такой переход изменяет только форму выбранного домена: корневой доменный модуль исчезает, а его предметная ответственность переходит обязательному модулю business внутри доменного пакета. Другие предметные области SLM root не обязаны переходить вместе с ним.