Files
slm-design/docs2/specification/terminology.md

6.2 KiB
Raw Blame History

title, status, normative
title status normative
Терминология draft true

Терминология

Слой

Layer - верхнеуровневая зона src, определяющая вид ответственности и допустимые направления зависимостей.

SLM использует слои app, compositions, domains, infra, ui и shared.

Модуль

Module - минимальный самостоятельный владелец ответственности с public boundary. Модуль может содержать код разных технических типов, если весь этот код принадлежит одной ответственности.

Группа

Group - навигационная папка, классифицирующая модули или другие группы. Группа не является модулем, не имеет public API и не владеет runtime.

Домен

Domain - конечный продуктовый модуль в слое domains, владеющий одной предметной ответственностью и всеми её runtime surfaces.

Допустимые пути:

domains/{domain}
domains/{group...}/{domain}

Группа доменов

Domain group - группа внутри domains, используемая только для навигации. Например, knv в пути domains/knv/auth является группой, если не имеет собственного public API, состояния и assembly.

Зона домена

Domain zone - внутренняя архитектурная часть domain с отдельным направлением зависимостей. Базовые зоны: business, react, adapters, client, server.

Зона не является самостоятельным domain.

Business

Business - framework-neutral зона domain, владеющая моделью, правилами, ports, сценариями, состоянием, нормализацией и domain errors. Business создаёт public logic runtime через factory.

Factory

Factory - side-effect-free constructor, принимающий явные dependencies и возвращающий public business runtime API.

DomainRuntime

DomainRuntime - созданный factory экземпляр доменного поведения. Он предоставляет commands, queries, snapshots, subscriptions и lifecycle operations, необходимые конкретному domain.

Factory создаёт DomainRuntime. DomainRuntime является публичным шлюзом к данным и поведению domain.

Port

Port - business-owned contract внешней capability, необходимой domain. Port описывается языком domain и не раскрывает concrete SDK, transport или framework runtime.

Adapter

Adapter - concrete реализация port поверх infra, SDK, storage, platform API, framework runtime или другого внешнего механизма.

Готовая capability одного DomainRuntime, структурно удовлетворяющая port другого domain, является cross-domain runtime dependency, а не concrete adapter автоматически. Wrapper adapter требуется только при реальном преобразовании contracts.

Framework surface

Framework surface - API domain для конкретного UI/framework runtime. Для React он может включать runtime access boundary, hooks, Providers и domain UI.

Framework surface не является параллельным business API и не обращается к external source в обход DomainRuntime.

Assembly

Assembly - связывание factory с concrete adapters и runtime-specific input для создания готового runtime одного domain.

Composition

Composition - модуль, связывающий готовые modules и domain runtimes в page, route, layout, screen, widget или другой application flow.

Graph owner

Graph owner - composition, request setup или test setup, которое выбирает набор runtime instances, порядок их создания, lifecycle scope и cleanup.

Domain runtime Provider

Domain runtime Provider - часть framework surface, передающая готовый runtime instance framework consumers одного domain. Она не является владельцем cross-domain graph автоматически.

Provider composition

Provider composition - composition module, создающий или получающий несколько runtimes и монтирующий их framework boundaries в выбранном scope.

Segment

Segment - внутренняя папка модуля, группирующая файлы по роли, например hooks, services, types, styles или lib.

Domain zones не являются обычными segments.

Компонент

Component - presentation unit внутри владеющего module. Компонент не является самостоятельным архитектурным owner и не выбирает источники данных или runtime dependencies.

Продуктовые данные

Product data - данные, состояние и outcomes, имеющие смысл в предметной области продукта. Transport DTO, raw SDK response и browser storage schema не являются доменной моделью автоматически.

Runtime dependency

Runtime dependency - dependency, необходимая выполняемому коду: API другого объекта, external source, store, query runtime, event source, clock, environment или platform capability.

import type не создаёт runtime dependency, но может создавать статическую связанность contracts.