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

4.4 KiB
Raw Blame History

Граница Domain

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

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

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

Domain представляет одну связную предметную область: auth, catalog, orders или checkout. Он собирает её business contract, concrete integrations, повторяемые assemblies и framework bindings, но не становится большим module со смешанными ролями.

Domain является предметной границей, а не владельцем runtime-кода в смысле Level 1. Каждый scenario, adapter, preset и framework binding остаётся ответственностью конкретного module. Такое разделение позволяет одной области иметь несколько public module APIs без нарушения правила о единственном владельце ответственности.

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

Путь Роль Структурный вид
domains/auth Предметная область Auth Domain
domains/auth/business Business Module
domains/auth/business/ports Business capabilities Segment
domains/auth/presets Навигация assemblies Group
domains/auth/presets/application Application preset Module
domains/auth/presets/application/adapters Private integrations preset Segment
domains/auth/adapters Навигация promoted adapters Group
domains/auth/adapters/identity-provider Reusable adapter Module
domains/auth/react React binding Module

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

Корень Domain

Корень Domain не содержит реализацию, state, lifecycle resources, index.ts или общий barrel. Его прямыми детьми могут быть business, Groups presets и adapters, а также framework modules с именем framework, например react.

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

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

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

Эти пути являются public API role modules. Root path @/domains/auth не существует как runtime boundary. Он не должен объединять isomorphic business, client React и server-only preset через export *.

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

Ответственность Владелец
Business scenarios, contracts, state semantics и errors domains/auth/business
Concrete adapter одной assembly Segment соответствующего preset
Reusable auth integration Promoted adapter module
Повторяемая assembly AuthApi Preset module
React provider, hook и domain-specific React UI domains/auth/react
Page, route, redirect, screen и конкретный visual outcome Module compositions
SDK wrapper или технический сервис без Auth semantics Module infra

Framework dependency сама по себе не делает UI частью Domain. Component принадлежит react только когда он работает с domain contract и не определяет page, route или product composition.