# 15. Правила и ограничения платформы ## Назначение Документ фиксирует обязательные ограничения платформы для всех команд: frontend, backend, QA, DevOps и интеграционных партнеров. ## Базовые неизменяемые принципы - Платформа полностью configuration-driven. - Никакой hardcoded tenant/project логики во frontend. - Tenant определяется только по домену. - UI строится из bootstrap.json. - Виджеты переиспользуемы и не обращаются к API напрямую. - Backend предоставляет данные, а не layout. - Layout управляется только конфигурацией. ## Обязательные правила JSON-модульности - Bootstrap: структура страниц и подключение систем. - Theme JSON: только визуальные токены. - Navigation JSON: только маршруты и меню. - Catalog/Product/Category API JSON: только доменные данные. - Запрещено смешивать зоны ответственности между JSON-модулями. ## Что разрешено - Добавлять новые виджеты через registry/manifest. - Расширять опциональные поля с сохранением обратной совместимости. - Добавлять новые секции/страницы через конфигурацию. ## Что запрещено - Хардкод tenant-веток в компонентах. - Прямые API-вызовы из widget UI слоя. - Дублирование layout-правил в каждом виджете. - Breaking изменения контрактов без schemaVersion. ## Пример policy JSON ```json { "platformPolicy": { "configurationDriven": true, "tenantResolution": "domain-only", "widgetsCanCallApiDirectly": false, "layoutControlledBy": "configuration", "backendProvides": ["products", "categories", "items"] } } ``` ## Ответственность Frontend - Соблюдать архитектурные ограничения и слоистость. - Не вводить локальные обходы конфигурации. - Проводить регрессионные проверки на multi-tenant сценариях. ## Ответственность Backend - Строго следовать контрактам данных. - Поддерживать tenant isolation и аудируемость изменений. - Предоставлять стабильные и документированные API.