Files
slm-design/docs/ru/specification/segments.md

3.3 KiB
Raw Blame History

title, status, normative
title status normative
Сегменты draft true

Сегменты

Segment группирует внутренние файлы module по устойчивой роли. Segment не является самостоятельным layer или module.

Базовые 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

Правила

SLM-BASE-SEG-001 - МОЖЕТ. Module может использовать любые необходимые segments и не обязан создавать остальные.

SLM-BASE-SEG-002 - ЗАПРЕЩЕНО. Нельзя создавать полный симметричный набор segments как scaffold без реального содержимого.

SLM-BASE-SEG-003 - ОБЯЗАН. Если файл помещён в segment, роль segment должна соответствовать фактической роли файла, а не только его расширению или имени. Файлы могут оставаться в корне небольшого module.

SLM-BASE-SEG-004 - ЗАПРЕЩЕНО. Segment не имеет внешнего public API независимо от module owner.

Запрет deep import в segment другого module определяется base-правилом SLM-BASE-API-002.

UI и Parts

ui/ содержит presentation components без самостоятельного architectural ownership.

parts/ содержит nested modules с собственной внутренней структурой и локальным public boundary.

SLM-BASE-SEG-006 - ОБЯЗАН. Сущность с самостоятельной ответственностью, внешними архитектурными dependencies или nested modules должна размещаться в parts, а не маскироваться как плоский component. Локальные presentation hooks/state сами по себе не требуют parts.

Hooks

SLM-BASE-SEG-007 - ОБЯЗАН. Hook принадлежит тому module, чью ответственность и runtime он выражает.

Примеры:

  • product hook - владеющий product module;
  • page-local hook - владеющая page composition;
  • reusable technical hook - соответствующий infra module;
  • product-agnostic UI hook - владеющий UI module.

Segments являются только внутренними организационными ролями и не вводят дополнительных архитектурных zones.