Files
slm-design/docs2/specification/layers/infra.md

62 lines
2.2 KiB
Markdown
Raw Normal View History

---
title: Слой Infra
status: draft
normative: true
---
# Слой Infra
`infra` содержит технические capabilities приложения, не определяющие продуктовую модель и сценарии.
## Примеры modules
```text
infra/
├── http/
├── backend-api/
├── realtime/
├── analytics/
├── logger/
├── app-config/
├── storage/
├── i18n/
└── theme/
```
## Правила
**SLM-INF-001 - ОБЯЗАН.** Infra module должен описывать техническую capability, а не продуктовый domain.
**SLM-INF-002 - МОЖЕТ.** Infra module может импортировать public API другого infra module и `shared`.
**SLM-INF-003 - ЗАПРЕЩЕНО.** Infra module не может импортировать `domains`, `compositions` или `app`.
**SLM-INF-004 - ЗАПРЕЩЕНО.** Infra не может собирать domain factory, хранить cross-domain graph или предоставлять generic product service locator.
**SLM-INF-005 - ЗАПРЕЩЕНО.** Infra не создаёт domain errors, domain fallback и domain model из transport DTO.
**SLM-INF-006 - МОЖЕТ.** Infra может экспортировать technical client, transport, event source, storage primitive или platform wrapper через собственный public API.
**SLM-INF-007 - ОБЯЗАН.** Generated SDK и transport details должны оставаться внутри infra или concrete domain adapter и не становиться public contract продуктовых consumers.
## Отличие от adapter
Infra знает технический механизм:
```text
HTTP client
WebSocket transport
local storage primitive
analytics SDK
```
Domain adapter знает, какая часть этого механизма реализует конкретный business-owned port:
```text
AuthPhonePort
OrdersEventsPort
UserAgreementsStoragePort
```
Один infra module может использоваться adapters нескольких domains без знания их product semantics.