This commit is contained in:
67
docs/platform/04-layout-engine.md
Normal file
67
docs/platform/04-layout-engine.md
Normal file
@@ -0,0 +1,67 @@
|
||||
# 04. Layout Engine
|
||||
|
||||
## Назначение
|
||||
Layout Engine отвечает за композицию страницы из секций по данным конфигурации и управляет только структурой и позиционированием, без доменной бизнес-логики.
|
||||
|
||||
## Поведение системы
|
||||
- Engine читает page.sections.
|
||||
- Секции сортируются по order.
|
||||
- Для каждой секции применяется layout-стратегия.
|
||||
- Виджеты размещаются внутри секции согласно layout-параметрам.
|
||||
|
||||
## Обязательные свойства JSON
|
||||
- section.id
|
||||
- section.type
|
||||
- section.order
|
||||
- section.widgets
|
||||
|
||||
## Опциональные свойства JSON
|
||||
- section.layout.strategy
|
||||
- section.layout.columns
|
||||
- section.layout.gap
|
||||
- section.layout.align
|
||||
- section.visibility.desktop/tablet/mobile
|
||||
- section.featureFlag
|
||||
|
||||
## Строгие правила
|
||||
- Layout определяется только конфигурацией.
|
||||
- Виджет не может переопределять секционный grid/columns на уровне страницы.
|
||||
- Если section.visible=false, секция не рендерится.
|
||||
- Секция должна рендериться в стандартном каркасе: section + page container.
|
||||
|
||||
## Пример JSON секции
|
||||
```json
|
||||
{
|
||||
"id": "section-featured-products",
|
||||
"type": "product-collection",
|
||||
"order": 2,
|
||||
"layout": {
|
||||
"strategy": "grid",
|
||||
"columns": 4,
|
||||
"gap": "16px",
|
||||
"align": "stretch"
|
||||
},
|
||||
"visibility": {
|
||||
"desktop": true,
|
||||
"tablet": true,
|
||||
"mobile": true
|
||||
},
|
||||
"widgets": [
|
||||
{
|
||||
"id": "widget-featured",
|
||||
"type": "product-carousel",
|
||||
"version": "1.0.0"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## Ответственность Frontend
|
||||
- Корректно применять сортировку и layout-параметры.
|
||||
- Гарантировать единые отступы и контейнеры секций.
|
||||
- Безопасно деградировать при частично некорректном layout.
|
||||
|
||||
## Ответственность Backend
|
||||
- Отдавать корректные layout-атрибуты в bootstrap.
|
||||
- Не смешивать контентные данные с layout-инструкциями.
|
||||
- Поддерживать непротиворечивость секций внутри страницы.
|
||||
Reference in New Issue
Block a user