Files
slm-design/DRAFT/level-3/domains/domain.md

5.5 KiB
Raw Blame History

Граница домена

Пояснение предметной и структурной границы Level 3.

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

Предметная граница

Домен представляет одну связную предметную область: auth, catalog, orders или checkout. Он объединяет её бизнес-логику, технические интеграции, повторяемые сборки и модули фреймворков, но не превращается в большой модуль со смешанными ролями.

Домен является предметной границей, а не владельцем исполняемого кода в смысле Level 1. Каждый сценарий, адаптер и способ сборки принадлежит конкретному модулю. Поэтому одна предметная область может иметь несколько публичных API, не нарушая правило о единственном владельце ответственности.

Структурные виды и роли

Путь Роль Структурный вид
domains/auth Предметная область авторизации Домен
domains/auth/business Бизнес-логика Модуль
domains/auth/business/ports Необходимые бизнес-логике возможности Сегмент
domains/auth/presets Навигация по типовым сборкам Группа
domains/auth/presets/application Сборка уровня приложения Модуль
domains/auth/presets/application/adapters Закрытые адаптеры сборки Сегмент
domains/auth/adapters Навигация по самостоятельным адаптерам Группа
domains/auth/adapters/identity-provider Повторно используемый адаптер Модуль
domains/auth/react Связь с React Модуль

Роль отвечает на вопрос, что делает код. Структурный вид определяет, какую архитектурную границу он образует. Имя папки само по себе не доказывает ни роль, ни структурный вид.

Корень домена

Корень домена не содержит реализацию, состояние, ресурсы жизненного цикла, index.ts или общий файл реэкспортов. Его прямыми детьми могут быть модуль business, группы presets и adapters, а также модули фреймворков, например react.

Корневые ветки model, types, errors, lib, ui, client, server или tests не создаются автоматически. Такой каталог должен быть либо сегментом модуля-владельца, либо самостоятельным модулем с одной из допустимых ролей домена.

Публичная граница

@/domains/auth/business
@/domains/auth/presets/application
@/domains/auth/react

Эти пути являются публичными API отдельных модулей. Корневого пути @/domains/auth для исполняемого кода не существует: он не должен объединять независимый от среды модуль business, клиентский React и серверную сборку через export *.

Граница с другими слоями

Ответственность Владелец
Предметные сценарии, контракты, модель состояния и ошибки domains/auth/business
Технический адаптер одной сборки Сегмент соответствующего модуля в presets
Повторно используемая интеграция авторизации Самостоятельный модуль адаптера
Повторяемая сборка AuthApi Модуль в presets
Провайдер, хук и относящийся к домену интерфейс React domains/auth/react
Страница, маршрут, перенаправление, экран и конкретный визуальный результат Модуль compositions
Обёртка над SDK или технический сервис без семантики авторизации Модуль infra

Зависимость от фреймворка сама по себе не делает интерфейс частью домена. Компонент принадлежит react, только когда работает с контрактом домена и не определяет страницу, маршрут или продуктовую композицию.