2026-07-24 22:34:49 +03:00
---
title: Сегменты
status: draft
normative: true
---
# Сегменты
2026-07-25 15:49:31 +03:00
Segment группирует внутренние файлы module по устойчивой роли. Segment не является самостоятельным layer или module.
2026-07-24 22:34:49 +03:00
## Базовые segments
| Segment | Роль |
|---|---|
| `ui/` | Presentation components текущего module |
| `parts/` | Nested modules текущего module |
| `hooks/` | Framework hooks текущей ответственности |
| `providers/` | Provider implementations текущего module |
| `stores/` | Concrete state runtime текущего owner |
| `services/` | Scenario operations и service objects |
| `mappers/` | Transformation на границе ответственности |
| `types/` | Types текущего module |
| `styles/` | Styles текущего module |
| `lib/` | Небольшие internal utilities |
| `config/` | Constants и configuration текущего module |
| `tests/` | Tests публичной границы или составного runtime |
## Правила
2026-07-25 17:56:16 +03:00
**SLM-BASE-SEG-001 - МОЖЕТ.** Module может использовать любые необходимые segments и не обязан создавать остальные.
2026-07-24 22:34:49 +03:00
2026-07-25 17:56:16 +03:00
**SLM-BASE-SEG-002 - ЗАПРЕЩЕНО.** Нельзя создавать полный симметричный набор segments как scaffold без реального содержимого.
2026-07-24 22:34:49 +03:00
2026-07-25 17:56:16 +03:00
**SLM-BASE-SEG-003 - ОБЯЗАН.** Если файл помещён в segment, роль segment должна соответствовать фактической роли файла, а не только е г о расширению или имени. Файлы могут оставаться в корне небольшого module.
2026-07-24 22:34:49 +03:00
2026-07-25 17:56:16 +03:00
**SLM-BASE-SEG-004 - ЗАПРЕЩЕНО.** Segment не имеет внешнего public API независимо от module owner.
2026-07-24 22:34:49 +03:00
2026-07-25 17:56:16 +03:00
Запрет deep import в segment другого module определяется base-правилом `SLM-BASE-API-002` .
2026-07-24 22:34:49 +03:00
## UI и Parts
`ui/` содержит presentation components без самостоятельного architectural ownership.
`parts/` содержит nested modules с собственной внутренней структурой и локальным public boundary.
2026-07-25 17:56:16 +03:00
**SLM-BASE-SEG-006 - ОБЯЗАН.** Сущность с самостоятельной ответственностью, внешними архитектурными dependencies или nested modules должна размещаться в `parts` , а не маскироваться как плоский component. Локальные presentation hooks/state сами по с е б е не требуют `parts` .
2026-07-24 22:34:49 +03:00
## Hooks
2026-07-25 17:56:16 +03:00
**SLM-BASE-SEG-007 - ОБЯЗАН.** Hook принадлежит тому module, чью ответственность и runtime он выражает.
2026-07-24 22:34:49 +03:00
Примеры:
2026-07-25 15:49:31 +03:00
- product hook - владеющий product module;
2026-07-24 22:34:49 +03:00
- page-local hook - владеющая page composition;
- reusable technical hook - соответствующий infra module;
- product-agnostic UI hook - владеющий UI module.
2026-07-25 15:49:31 +03:00
Segments являются только внутренними организационными ролями и не вводят дополнительных архитектурных zones.