Files
slm-design/docs2/specification/architecture-model.md

3.8 KiB
Raw Blame History

title, status, normative
title status normative
Архитектурная модель draft true

Архитектурная модель

Структура приложения

SLM-ARCH-001 - ОБЯЗАН. SLM-приложение должно разделять код по ответственности между следующими слоями:

src/
├── app/
├── compositions/
├── domains/
├── infra/
├── ui/
└── shared/

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

Группы ответственности

Группа Слои Ответственность
Framework composition app, compositions Подключение к framework и сборка application flows
Product domains Продуктовые модели, сценарии и runtime surfaces
Technical infra, ui Технические capabilities и универсальный UI
Foundation shared Детерминированный общий фундамент

Верхнеуровневое направление

app → compositions | shared
compositions → compositions | domains | infra | ui | shared
domains → infra | ui | shared согласно правилам внутренних зон
infra → infra | shared
ui → ui | shared
shared -/→ остальные SLM-слои

Схема описывает imports между SLM-слоями проекта. Framework APIs и external packages регулируются ответственностью импортирующего слоя и не показаны как SLM-слои.

SLM-ARCH-002 - ОБЯЗАН. Верхнеуровневое направление зависимостей между SLM-слоями должно соблюдаться для runtime imports и type imports, кроме явно описанных исключений.

SLM-ARCH-003 - ЗАПРЕЩЕНО. Нижний слой не может импортировать app или compositions.

SLM-ARCH-004 - ЗАПРЕЩЕНО. infra, ui и shared не могут владеть product graph или выступать service locator для domain runtimes.

Путь данных

app
  → composition
  → domain runtime surface
  → domain business scenario
  → business-owned port
  → domain adapter
  → infra / SDK / storage / external source

SLM-ARCH-005 - ОБЯЗАН. Каждый переход в цепочке продуктовых данных должен сохранять ownership: framework связывает, domain определяет semantics, adapter интегрирует, infra предоставляет technical capability.

Путь UI

app route
  → page/layout composition
  → domain UI и composition UI
  → universal UI
  → shared styles/resources

Владение multi-domain и domain UI определяется правилами SLM-CMP-006 - SLM-CMP-007 и SLM-FRM-013.

Внутренняя модель domain

domain client/server assembly
  → own business factory
  → own adapters

domain framework surface
  → own DomainRuntime через runtime access boundary

composition
  → создаёт несколько domain runtimes
  → передаёт готовые capabilities

Внутренняя assembly одного domain и cross-domain graph разделены правилами Client и server assembly и Compositions.