Files
slm-design/docs2/specification/layers/domains/index.md

4.1 KiB

title, status, normative
title status normative
Слой Domains draft true

Слой Domains

domains содержит законченные вертикальные продуктовые модули. Domain объединяет business logic, framework surfaces, concrete adapters и runtime-specific assembly одной предметной ответственности, не смешивая их внутренние направления зависимостей.

Domain и group

SLM-DOM-001 - ОБЯЗАН. Конечный domain должен располагаться непосредственно в domains или внутри одной или нескольких навигационных groups.

domains/{domain}
domains/{group}/{domain}
domains/{group}/{nested-group}/{domain}

SLM-DOM-002 - ЗАПРЕЩЕНО. Domain group не может иметь index.ts, public API, state, adapters, assembly или runtime.

domains/
├── navigation/               # domain
└── knv/                      # group
    ├── auth/                 # domain
    ├── user/                 # domain
    └── orders/               # domain

SLM-DOM-003 - ОБЯЗАН. Первой архитектурной единицей в group tree является конечная папка, владеющая самостоятельной предметной ответственностью.

Внутренние зоны

Базовая форма domain:

domains/{group...}/{domain}/
├── business/
├── react/
├── adapters/
├── client/
└── server/
Зона Статус Ответственность
business Обязательная Domain model, factory, ports, scenarios, errors
react Опциональная React runtime access, hooks, Providers, domain UI
adapters Опциональная Concrete реализации business-owned ports
client Опциональная Browser/client assembly одного domain
server Опциональная Server/request assembly одного domain

SLM-DOM-004 - ОБЯЗАН. Каждый domain должен содержать business как единственный владелец product model и business semantics.

SLM-DOM-005 - СЛЕДУЕТ. Опциональную зону следует добавлять только при наличии реального runtime consumer и самостоятельной ответственности.

SLM-DOM-006 - ЗАПРЕЩЕНО. Нельзя создавать пустые симметричные react, adapters, client или server на будущее.

SLM-DOM-007 - ОБЯЗАН. Domain zones должны соблюдать внутреннюю dependency direction, даже если физически находятся под одним владельцем.

Domain ownership

Domain может владеть:

  • model и value objects;
  • product scenarios;
  • domain state и transitions;
  • ports;
  • normalization и domain errors;
  • framework hooks и UI одного domain;
  • concrete integrations собственных ports;
  • client/server runtime assembly собственного business.

Domain не владеет:

  • page/route/layout composition;
  • UI, объединяющим несколько domains;
  • cross-domain graph;
  • framework route entry;
  • универсальным technical service;
  • product-agnostic UI primitive.

Product gateway

Framework surface и runtime assembly сохраняют business runtime единственным product gateway согласно SLM-DATA-001 - SLM-DATA-003.

Cross-domain boundary

Domain может принять готовую внешнюю capability через contract, но не импортирует runtime surface другого domain. Точные правила определены в cross-domain boundary.