2026-07-24 22:34:49 +03:00
---
title: Архитектурная модель
status: draft
normative: true
---
2026-07-25 15:49:31 +03:00
# Архитектурная Модель
2026-07-24 22:34:49 +03:00
## Структура приложения
```text
src/
├── app/
├── compositions/
├── infra/
├── ui/
└── shared/
```
2026-07-25 17:56:16 +03:00
**SLM-BASE-ARCH-001 - ОБЯЗАН.** Base SLM-приложение должно разделять код по ответственности между слоями `app` , `compositions` , `infra` , `ui` и `shared` .
2026-07-25 15:49:31 +03:00
Н е каждый слой обязан содержать код в минимальном приложении. Пустые папки и speculative scaffolding не требуются.
2026-07-24 22:34:49 +03:00
## Группы ответственности
| Группа | Слои | Ответственность |
|---|---|---|
| Framework composition | `app` , `compositions` | Подключение к framework и сборка application flows |
2026-07-25 15:49:31 +03:00
| Product | Product owner; в base SLM - `compositions` | Product semantics, UI и flows владеющего module |
| Technical | `infra` , `ui` | Technical capabilities и универсальный UI |
2026-07-24 22:34:49 +03:00
| Foundation | `shared` | Детерминированный общий фундамент |
## Верхнеуровневое направление
```text
2026-07-25 15:49:31 +03:00
app -> compositions | shared
compositions -> compositions | infra | ui | shared
infra -> infra | shared
ui -> ui | shared
shared -/-> остальные SLM-слои
2026-07-24 22:34:49 +03:00
```
2026-07-25 15:49:31 +03:00
Framework APIs и external packages регулируются ответственностью импортирующего слоя и не показаны как SLM-слои.
2026-07-24 22:34:49 +03:00
2026-07-25 17:56:16 +03:00
**SLM-BASE-ARCH-002 - ОБЯЗАН.** Верхнеуровневое направление зависимостей между base SLM-слоями должно соблюдаться для runtime imports и type imports, кроме явно описанных исключений.
2026-07-24 22:34:49 +03:00
2026-07-25 17:56:16 +03:00
**SLM-BASE-ARCH-003 - ЗАПРЕЩЕНО.** Нижний слой не может импортировать `app` или `compositions` .
2026-07-24 22:34:49 +03:00
2026-07-25 17:56:16 +03:00
**SLM-BASE-ARCH-004 - ЗАПРЕЩЕНО.** `infra` , `ui` и `shared` не могут владеть product wiring или выступать service locator для application modules.
2026-07-24 22:34:49 +03:00
## Путь данных
```text
app
2026-07-25 15:49:31 +03:00
-> product owner public API
-> infra public API
-> external source
2026-07-24 22:34:49 +03:00
```
2026-07-25 17:56:16 +03:00
**SLM-BASE-ARCH-005 - ОБЯЗАН.** Каждый переход product data должен сохранять ownership: framework связывает, product owner определяет semantics, а technical capability не присваивает с е б е product model.
2026-07-24 22:34:49 +03:00
## Путь UI
```text
app route
2026-07-25 15:49:31 +03:00
-> page/layout composition
-> product UI
-> universal UI
-> shared styles/resources
2026-07-24 22:34:49 +03:00
```
2026-07-25 15:49:31 +03:00
Product UI принадлежит product owner; в base SLM таким owner является composition. Универсальный product-agnostic UI принадлежит `ui` .