Тема
Каталог подсистем
Статус: зафиксировано (пополняется по мере решений). Исчерпывающая карта подсистем полноценной CMS корпоративного класса. Принцип: каждая подсистема — отдельный модуль (composer-пакет), кроме явно отнесённых к ядру. Ориентир по полноте — 1С-Битрикс, WordPress, Drupal, TYPO3, Magento; привязка доноров — 8 проектов студии.
У каждого модуля — отдельный файл ТЗ (возможности, API, компоненты, настройки, события, донорский код): индекс ТЗ модулей. Подсистемы ядра — в ТЗ ядра + API.
Принцип: универсальное ядро + модульное включение (модель Битрикс)
Ключевой принцип, согласованный в брейншторме:
Ядро — большое и универсальное (богатые базовые механизмы и точки расширения), но возможности раскрываются через модули, которые включаются по потребности. Чем меньше модулей включено — тем легче работает сайт.
Это в точности модель 1С-Битрикс: ядро D7 мощное и универсальное, но sale, catalog, iblock — отдельные модули. Не подключённый модуль не грузится и не тратит ресурсы.
Что относится к универсальному ядру (богатое, но не «фичи»):
- базовые механизмы: движок полей (для типов контента и форм), шина событий/хуков, очереди, кеш, стор настроек, медиа, права, API-слой (REST/GraphQL для сущностей);
- редакторы (внутренние инструменты): редактор сущностей и типов данных, файловый менеджер (файлы/папки/разделы), управление пользователями, конструктор форм;
- контент-движок: страницы+блоки, произвольные типы контента, меню, виджеты, SEO-база.
Что раскрывается модулями (фичи поверх ядра):
- e-commerce (каталог, корзина, заказы, платежи, доставка), интеграции (платёжные шлюзы, CRM, 1С, доставка, крипта, мобильные API), маркетинг, специфические подсистемы.
Что даёт такая модель:
- лёгкость по включению, а не по коду — «тяжесть» сайта определяется числом включённых модулей, а не размером ядра на диске;
- универсальность из коробки — ядро способно на многое (поля, события, API, редакторы), не переизобретая базу в каждом модуле;
- независимые релизы — модуль платежей обновляется, не трогая ядро и другие модули;
- изоляция сбоев — баг в выключенном модуле не влияет на сайт;
- раздельное лицензирование/биллинг — модуль как единица подписки.
Ядро vs модуль: критерий
| В ядре | В модуле |
|---|---|
| Базовый механизм, на котором строят другие (поля, события, API, права) | Конкретная фича (платежи, доставка, блог) |
| Нужен любому сайту или как фундамент для модулей | Нужен некоторым сайтам |
| Редактор-инструмент (сущности, файлы, пользователи) | Прикладная логика поверх редакторов |
| Не имеет смысла «выключить» | Осмысленно включать/выключать per-сайт |
Слои
| Слой | Что это | Правило |
|---|---|---|
| Ядро | Базовые механизмы + редакторы, нужные как фундамент | В cms/core. Универсальное, всегда загружено |
| Инфра-модуль | Сквозная техническая подсистема | Модуль, включается; часто нужен почти везде |
| Функц-модуль | Прикладная фича для некоторых сайтов | Модуль, включается строго под заказ |
Обязательный набор managed-парка — часть skeleton по умолчанию: Резервное копирование, Мониторинг/health-check, Sentry, Центр обновлений (условие процедуры
cms:upgrade: бэкап → health-check → гейт) + Attack-monitor и 2FA для ролей студии (безопасность). Технически это модули (сайт вне подписки живёт без них), но на managed-сайте они не выключаются.
Ядро универсальное (богатое): движок полей, события, очереди, кеш, API-слой, редакторы сущностей/файлов/пользователей, контент-движок, SEO-база, права. Оно всегда загружено — это фундамент. Всё прикладное (поиск, CDN, платежи, доставка, интеграции) — модули: включил модуль → появилась возможность; не включил → не грузится. Тяжесть сайта = число включённых модулей.
Три оси зависимостей (заложить первыми)
Почти всё в CMS висит на трёх сквозных подсистемах ядра. Если их не спроектировать идеально в фазе 0, модульность будет неполноценной:
- События/хуки — точки расширения для любого модуля. Без них модуль не может вклиниться в поток ядра, и вся расширяемость рушится. См. расширяемость.
- Очереди — почти вся коммуникация, интеграции, обработка медиа и импорт уходят в фон. Синхронная отправка письма/вебхука в HTTP-запросе — антипаттерн.
- Настройки/Конфигурация — каждый модуль регистрирует свои настройки в единой панели. Без общего стора настроек каждый модуль изобретает свой — хаос в админке.
Отдельно стоит шина интеграций (integration core) — единый слой коннекторов (креды, ретраи, логи, очереди) вместо разрозненных интеграций. Все внешние сервисы (платёжные шлюзы, CRM, доставка, 1С) подключаются через неё, а не каждый сам по себе.
Как именно подсистемы обмениваются данными (пять каналов, владение таблицами, запреты) — обмен данными: ядро ↔ модули ↔ компоненты; универсальные требования к построению любого модуля — стандарт модуля.
1. Инфраструктурные подсистемы
Сквозные, технические. Часть — в ядре (без них не живёт ничего), часть — модули.
| Подсистема | Что делает | Слой | Донор студии | Зависимости |
|---|---|---|---|---|
| Kernel/DI/bootstrap | Загрузка модулей, контейнер, service providers | Ядро | — (Laravel) | — |
| Реестр модулей | Установка/включение/порядок загрузки, зависимости модулей | Ядро | nwidart (референс) | Kernel, События |
| События/хуки | Шина доменных событий + фильтры (перехваты) | Ядро | — (проектируется) | — |
| Конфигурация (settings store) | Единый стор настроек env→config→БД, кеш | Ядро | universal, gulaev-dev | Кеш |
| Локализация ядра (i18n строк) | Переводы строк UI, локали, форматы дат/чисел | Ядро | все | Конфигурация |
| API-слой (REST) | API для всех сущностей ядра, headless-ready, версии; GraphQL — отдельный инфра-модуль (Lighthouse), см. API-контракт | Ядро | — | Аутентификация, RBAC |
| Broadcasting/realtime | WebSocket/SSE для админки и фронта | Инфра-модуль | — | Очереди, События |
Локальные переопределения (/local) | Аналог Битрикс local+init.php | Ядро | — | События |
| Кеш-слой | Теговый page-cache + инвалидация из админки | Ядро | catalog, universal | События |
| Медиатека | Загрузка/ресайз/конверсии, presets | Ядро | все (spatie/medialibrary) | Файл-хранилище |
| Обработка изображений | Ресайз, webp/avif, водяные знаки | Ядро | все | Медиатека |
| Файловое хранилище | Абстракция диска (local/S3), приватные файлы | Ядро | — | — |
| Очереди | Асинхронные задачи (Redis/Horizon) | Ядро | все | — |
| Планировщик (cron) | Регулярные задачи (sitemap, прогрев, отчёты) | Ядро | все | Очереди |
| Логирование | Каналы логов, ротация | Ядро | все | — |
| Отладка/профилирование | Telescope/Pail, query-log, N+1-детект | Инфра-модуль | — | Логирование |
| Мониторинг/health-check | Живость сервисов, метрики, alerting | Инфра-модуль (обяз. в managed-парке) | er (SEO health), catalog | Уведомления |
| Sentry/трекинг ошибок | Сбор исключений с прода, гейт обновлений | Инфра-модуль (обяз. в managed-парке) | — | Логирование |
| Поиск (индексация) | Полнотекст Scout+Meilisearch/ES, intent | Инфра-модуль | catalog, freelance | Очереди |
| CDN-инвалидация | Purge при изменении контента | Инфра-модуль | catalog (Bunny/CF) | События, Кеш |
| Аудит действий | Журнал «кто что изменил» | Инфра-модуль | freelance, referendum | События |
| Резервное копирование | Бэкап БД+файлов: регулярный + перед обновлением | Инфра-модуль (обяз. в managed-парке) | — (инфра студии) | Планировщик |
| Импорт данных | Импорт из CSV/XML/API (каталог, контент) | Инфра-модуль | universal (Import/*) | Очереди |
| Экспорт данных | Выгрузка (прайс XLSX, отчёты) | Инфра-модуль | universal | Очереди |
| Feature-flags | Механизм (laravel/pennant) — в ядре (состояния модулей); UI-таргетинг по роли/проценту — модуль | Ядро (механизм) + Инфра-модуль (UI) | — | Настройки |
| Миграции данных | Версионные преобразования данных (не схемы) | Ядро | — | — |
2. Коммуникационные подсистемы
Всё, что уходит наружу пользователю/команде. Ядро даёт только базовую отправку заявки; каналы — модули.
| Подсистема | Что делает | Слой | Донор студии | Зависимости |
|---|---|---|---|---|
| Заявки (Leads) | Форма → лид → админка (без корзины/оплаты) | Ядро | universal (Contact), freelance | Формы, Очереди |
| Email/SMTP | Отправка писем, конфиг транспорта | Ядро | все | Очереди |
| Шаблоны писем | Редактируемые шаблоны транзакционных писем | Инфра-модуль | — | |
| Шина уведомлений | Резолвер каналов + preferences получателя | Инфра-модуль | freelance (BaseNotification), notal | Очереди |
| Push (web/mobile) | Web-push / FCM | Функц-модуль | (push-server) | Шина увед. |
| SMS | Отправка SMS через шлюз | Функц-модуль | — | Шина увед. |
| Telegram | Уведомления команде/клиенту в Telegram | Функц-модуль | masha, notal | Шина увед. |
| WhatsApp/мессенджеры | Каналы мессенджеров | Функц-модуль | — | Шина увед. |
| Рассылки (newsletter) | Списки подписки, кампании, отписка, double opt-in | Функц-модуль | — | Email, Очереди |
| Исходящие вебхуки | POST во внешние системы на события, подпись, ретраи | Функц-модуль | — | События, Очереди |
| Входящие вебхуки | Приём колбэков (платежи, мессенджеры, CRM), верификация | Инфра-модуль | notal (платёжные) | События, Безопасность |
| Внутренние уведомления | Колокольчик в админке, непрочитанные | Инфра-модуль | freelance | Шина увед. |
| Чат/онлайн-консультант | Виджет чата, операторы, история | Функц-модуль | — | Realtime, Шина увед. |
3. Безопасность и доступ
| Подсистема | Что делает | Слой | Донор студии | Зависимости |
|---|---|---|---|---|
| Аутентификация | Логин/сессии/сброс пароля | Ядро | все | — |
| RBAC/права | Роли и permission'ы (Shield+spatie) | Ядро | freelance, referendum | Аутентификация |
| Политики (Policies) | Авторизация действий над моделями | Ядро | все | RBAC |
| Rate-limiting | Троттлинг форм/API | Ядро | все | — |
| Защита форм | Капча/honeypot/CSRF | Ядро | все | Формы |
| 2FA | Двухфакторка (TOTP/QR) | Функц-модуль | er, freelance (google2fa) | Аутентификация |
| OAuth/соцвход | Вход через Google/VK/Яндекс | Функц-модуль | — | Аутентификация |
| Magic-login | Вход по ссылке (passwordless) | Функц-модуль | notal | |
| API-токены | Sanctum/Passport, ключи для API | Инфра-модуль | freelance | Аутентификация |
| Антиспам | Фильтр спама в формах/комментариях | Функц-модуль | — | Формы |
| Антифрод | Детект накрутки отзывов/заявок | Функц-модуль | catalog, er | Отзывы, Заявки |
| Согласия/152-ФЗ | Расширенные согласия: журнал, экспорт/удаление данных. Базовое (чекбокс согласия + consent_at на лиде) — в ядре: формы ядра собирают ПДн с первого дня | Функц-модуль (база — ядро) | — | Аудит |
| Cookie-consent | Баннер, категории cookie, хранение выбора | Функц-модуль | — | Согласия, Настройки |
| Шифрование полей | Шифрование чувствительных данных в БД (encrypted casts) | Ядро | — | — |
| Session-управление | Активные сессии/устройства, принудительный выход | Инфра-модуль | — | Аутентификация |
| Attack-monitor (статистика атак) | Детект SQLi/XSS-паттернов, брутфорса, сканеров, флуда; журнал атак, автоблокировка со ступенями, экспорт блок-листа в Caddy, дашборд, алерты — см. безопасность | Инфра-модуль (обяз. в managed-парке) | catalog/er (антифрод), freelance (Reputation) | Логирование, Аудит, Уведомления |
| Политика паролей | Сложность, срок, история, проверка компрометации (HIBP) | Инфра-модуль | — | Аутентификация |
4. E-commerce
Целиком набор функц-модулей. Даже каталог — модуль (сайту-визитке не нужен).
Граница «лид ≠ заказ» (важно). Корпоративному/каталожному сайту магазинные бизнес-процессы не нужны: нет корзины, оплаты, налогов, чеков, бухгалтерии. Ему достаточно заявки (лида) — форма собирает контакт и уходит напрямую в админку (см. Заявки в ядре). Это подтверждено донором
universal: там естьContact(лид: тип, статус, согласие ПДн, опц. привязка к товару, город) иProduct(каталог-витрина), но нетOrder,Cart,Payment,Invoice— сайт работает на заявках без магазина.Корзина, заказы, платежи — отдельные модули интернет-магазина, включаются только когда сайту действительно нужна онлайн-продажа. Витрина каталога (просмотр товаров без покупки) возможна и без корзины — как в universal. Заявка «оставить заявку на товар» — это лид с привязкой к товару, а не заказ.
Доменная модель слоёв (торговые предложения, мульти-склад, типы цен, НДС/чеки, цифровые товары/услуги, rule-engine скидок и бонусов) — модель e-commerce.
| Подсистема | Что делает | Слой | Донор студии | Зависимости |
|---|---|---|---|---|
| Каталог | Товары/услуги, категории, вариации/SKU | Функц-модуль | universal, catalog (гео) | Медиа; suggests Поиск (fallback — PG tsvector) |
| Свойства/характеристики | Типы свойств, значения, фильтруемость, единицы | Функц-модуль | catalog | Каталог |
| Фасетный фильтр | Фильтрация по свойствам/цене/наличию, агрегации | Функц-модуль | catalog | Каталог, Поиск |
| Цены/типы цен | Розница/опт/старая/price1-2; видимость по группам пользователей и уровню лояльности; тир-прайсинг от количества | Функц-модуль | masha | Каталог, Валюты |
| Корзина | Сессионная/персистентная корзина | Функц-модуль | masha | Каталог |
| Брошенные корзины | Детект и напоминание о незавершённом заказе | Функц-модуль | — | Корзина, Email |
| Заказы | Оформление, статусы, история | Функц-модуль | masha, notal | Корзина |
| Платежи | Шлюзы: приём, возвраты, вебхуки | Функц-модуль | notal (YooKassa+эскроу), er (Cashier) | Заказы, Очереди |
| Подписки/рекуррентные платежи | Периодическое списание, тарифы, продление | Функц-модуль | er (Cashier), notal | Платежи, Планировщик |
| Доставка | Расчёт стоимости, интеграции ПВЗ/курьер | Функц-модуль | — | Заказы |
| Налоги | Расчёт НДС/налогов по правилам | Функц-модуль | — | Заказы |
| Скидки/промокоды | Правила скидок, промокоды, сертификаты | Функц-модуль | notal | Корзина, Заказы |
| Мульти-склад/остатки | Несколько складов: остатки и резервы per-склад, журнал движений, доступность по городу/каналу | Функц-модуль | masha | Каталог |
| Цифровые товары | Выдача файлов/лицензий после оплаты, чеки с признаком «цифровой товар» | Функц-модуль | — | Каталог, Платежи |
| Продажа услуг | Услуга как позиция заказа (без склада), мост с модулем «Услуги» | Функц-модуль | — | Каталог |
| Возвраты (RMA) | Оформление возвратов/рефандов | Функц-модуль | notal (споры) | Заказы, Платежи |
| Чеки/ОФД (54-ФЗ) | Фискализация, отправка чека в ОФД | Функц-модуль | — | Платежи |
| Валюты | Мультивалютность, курсы (ЦБ РФ) | Функц-модуль | er (крипто) | Каталог |
| Инвойсы/документы | Счета, накладные (PDF) | Функц-модуль | referendum (dompdf) | Заказы |
| Wishlist/избранное | Отложенные товары пользователя | Функц-модуль | — | Каталог, Пользователи |
| Сравнение товаров | Список сравнения по характеристикам | Функц-модуль | — | Каталог, Свойства |
| B2B (юрлица/договоры/кредит-лимит) | Юрлица, отсрочка, персональные прайсы | Функц-модуль | — | Заказы, Цены |
| Маркетплейс/мультивендор | Продавцы, их товары/заказы, комиссии, выплаты | Функц-модуль | notal (эскроу) | Каталог, Заказы, Платежи |
5. Контент
| Подсистема | Что делает | Слой | Донор студии | Зависимости |
|---|---|---|---|---|
| Страницы + блоки | Page + PageBlock + BlockRegistry, drag&drop | Ядро | universal, gulaev-dev | События |
| Произвольные типы контента | Пользовательские сущности (JSONB+GIN, не EAV) | Ядро | — | — |
| Конструктор форм | Клиент собирает форму сам | Ядро | — | Заявки |
| Черновики/версии | draft/published + история, откат | Ядро | — (референс Twill) | Страницы |
| Меню | header/footer data-driven | Ядро | universal | Страницы |
| Виджеты | Сквозные элементы в областях (сайдбар/футер) | Ядро | — | Страницы |
| Настройки | setting('group.key') из БД | Ядро | universal, gulaev-dev | — |
| Мультиязычность | Перевод контента (city-based / translatable) | Функц-модуль (заготовка в ядре) | referendum, universal | Страницы |
| Таксономии/теги | Категории, метки, иерархии, привязка к контенту | Ядро | несколько | Типы контента |
| Публикация по расписанию | Отложенная публикация/снятие, статусы | Функц-модуль | — | Планировщик, Страницы |
| Блог/статьи | Посты, рубрики, теги, блочный контент | Функц-модуль | gulaev-dev, universal | Страницы |
| Комментарии | Комментарии к контенту, модерация | Функц-модуль | — | Антиспам |
| Отзывы/рейтинги | Отзывы, агрегат рейтинга, модерация | Функц-модуль | catalog, er | Антифрод |
| Модерация (workflow) | Согласование контента, статусы, роли-редакторы | Функц-модуль | — | RBAC, Черновики |
| FAQ | Вопрос-ответ + Schema.org FAQPage | Функц-модуль | несколько | SEO |
| Глоссарий/справочник | Термины (SEO-полезно) | Функц-модуль | 3 проекта (Dictionary) | SEO |
| Баннеры/слайдеры | Рекламные блоки, ротация, таргет по странице | Функц-модуль | несколько | Медиа |
| Галереи/портфолио | Коллекции изображений/работ | Функц-модуль | несколько | Медиа |
| Связанный контент/рекомендации | «Похожее», «с этим смотрят», ручные связи | Функц-модуль | — | Типы контента |
| Калькуляторы | Конструктор калькуляторов из секций/полей | Функц-модуль | universal, gulaev-dev, referendum | Формы |
| Опросы/голосования | Опросы, голоса | Функц-модуль | referendum | Формы |
| Wizard/анкеты | Многошаговые формы с сессией | Функц-модуль | referendum | Формы |
6. Маркетинг и SEO
| Подсистема | Что делает | Слой | Донор студии | Зависимости |
|---|---|---|---|---|
| ЧПУ/маршрутизация URL | Человеко-понятные URL, slug, канонизация, транслит | Ядро | все | Страницы |
| SEO (мета/шаблоны) | Резолвер мета, шаблоны с переменными | Ядро | gulaev-dev, er | Страницы |
| Sitemap | Генерация xml (+HTML), пинг поисковикам | Ядро | er, catalog, notal | Планировщик |
| Robots/редиректы | robots.txt, 301-редиректы, лог 404 | Ядро | gulaev-dev | — |
| Schema.org | JSON-LD микроразметка по типу страницы | Ядро | gulaev-dev | SEO |
| OpenGraph/шаринг | OG-теги, кнопки шаринга, превью соцсетей | Ядро | несколько | SEO |
| SEO-движок (расшир.) | Auto-linking, hreflang, аудит, orphan-детект | Функц-модуль | gulaev-dev, er | SEO |
| Мультигород/геотаргетинг | Город по гео, контент/цены/телефон по региону | Функц-модуль | universal, gulaev-dev, er | SEO, Настройки |
| Аналитика/счётчики | GA4/Метрика, вставка кодов, цели | Функц-модуль | — | Настройки |
| Пиксели/tag manager | VK/Meta Pixel, GTM, события конверсий | Функц-модуль | — | Аналитика |
| UTM/трекинг источников | Разбор UTM, атрибуция заявок/заказов | Функц-модуль | — | Заявки |
| A/B-тесты | Варианты страниц/блоков, сплит | Функц-модуль | — | Feature-flags, Аналитика |
| Лендинги | Отдельные посадочные (как панель студии) | Функц-модуль | (studio-core) | Страницы |
| Поп-апы/лидогенерация | Всплывающие формы, exit-intent, таргетинг | Функц-модуль | — | Формы, A/B |
| Email-маркетинг | Триггерные цепочки, сегменты, автоворонки | Функц-модуль | — | Рассылки |
| Купоны/промо-кампании | Промо-посадочные, таймеры акций | Функц-модуль | notal | Скидки, Лендинги |
| Реферальная программа | Коды, бонусы, балансовые транзакции | Функц-модуль | notal | Заказы |
| Лояльность/бонусы | Бонусные баллы, уровни, кэшбэк | Функц-модуль | notal | Заказы |
7. Администрирование
| Подсистема | Что делает | Слой | Донор студии | Зависимости |
|---|---|---|---|---|
| Админ-shell | Панель Filament, навигация | Ядро | Filament | RBAC |
| Дашборд/виджеты | Статистика, новые заявки, кнопки действий | Ядро | несколько | Заявки |
| Настройки сайта | Filament-страница настроек | Ядро | universal | Настройки |
| Центр обновлений | cms:upgrade, версии, откат | Инфра-модуль (обяз. в managed-парке, ставится skeleton'ом) | — | Бэкап, Health-check |
| Маркетплейс модулей | Каталог расширений, установка, лицензии | Функц-модуль | — | Реестр модулей, Центр обновлений |
| Онбординг/визард установки | Пошаговая установка, проверка требований | Инфра-модуль | — | Настройки |
| Панель разработчика | Кеш-очистка, миграции, диагностика из UI | Инфра-модуль | — | Кеш, Планировщик |
| Локали/переводы (UI) | Управление языками сайта и строками из админки | Функц-модуль | — | Локализация ядра |
| Личный кабинет пользователя | Фронт-кабинет: заказы, данные, подписки — зона 3 (Inertia+React SSR) либо вторая Filament-панель, см. фронт-архитектуру | Функц-модуль | несколько | Пользователи, Заказы |
| Многосайтовость | Несколько сайтов на одной установке | Инфра-модуль | — | Настройки, Маршрутизация |
| Мультитенантность | Изоляция данных по тенанту (БД/схема/префикс) | Инфра-модуль | — | Аутентификация |
| Управление доменами | Привязка доменов к сайтам/тенантам | Инфра-модуль | (proxy) | Многосайтовость |
| Флит-дашборд | Телеметрия парка сайтов, волны обновлений | Функц-модуль | (proxy dns watch) | Центр обновлений |
7a. Внутренние редакторы (инструменты ядра)
Универсальное ядро даёт набор редакторов-инструментов — они всегда доступны и служат фундаментом для модулей. Это то, что в Битрикс размазано по «Контенту», «Настройкам» и «Пользователям», а у нас собрано как явный слой инструментов.
| Редактор | Что делает | Слой | Зависимости |
|---|---|---|---|
| Редактор сущностей | CRUD любой сущности (Filament-ресурсы, авто-генерация) | Ядро | Типы контента, RBAC |
| Редактор типов данных | Создание пользовательских типов контента и полей (JSONB+GIN) | Ядро | Движок полей |
| Движок полей | Типы полей, валидация, рендер — общий для типов/форм | Ядро | — |
| Файловый менеджер | Файлы, папки, разделы; загрузка, перемещение, чистка | Ядро | Медиатека, Хранилище |
| Управление пользователями | Пользователи, роли, права, статусы, сессии | Ядро | Аутентификация, RBAC |
| Редактор разделов/структуры | Дерево разделов сайта, привязка контента | Ядро | Страницы, Меню |
| Конструктор форм | Формы из полей (переиспользует движок полей) | Ядро | Движок полей, Заявки |
| Редактор меню | Дерево пунктов, вложенность, привязка к URL | Ядро | Страницы |
| Редактор блоков (drag&drop) | Сборка страницы из блоков, средняя свобода | Ядро | BlockRegistry |
Эти редакторы — причина, по которой ядро «большое»: они универсальны и не имеют смысла «выключаться». Модули используют их (модуль каталога заводит тип «Товар» через редактор типов; модуль вакансий — тип «Вакансия»), а не переизобретают.
8. Интеграции (РФ-специфика)
| Подсистема | Что делает | Слой | Донор студии | Зависимости |
|---|---|---|---|---|
| Шина интеграций (integration core) | Единый слой коннекторов: креды, ретраи, логи | Инфра-модуль | — | Очереди, Настройки |
| ЮKassa/Тинькофф/Робокасса/СБП | РФ-платёжные шлюзы, СБП QR | Функц-модуль | notal | Платежи, Вх. вебхуки |
| Крипто-платежи | Приём крипты, курс, подтверждения | Функц-модуль | er | Платежи, Валюты |
| ОФД/фискализация (АТОЛ/Эвотор) | Отправка чеков в ОФД по 54-ФЗ | Функц-модуль | — | Чеки 54-ФЗ, Платежи |
| 1С-обмен (CommerceML) | Двусторонний обмен товарами/заказами/остатками | Функц-модуль | — | Каталог, Заказы, Склад |
| CRM (Битрикс24/amoCRM/RetailCRM) | Отправка заявок/сделок/контактов в CRM | Функц-модуль | — | Заявки, Исх. вебхуки |
| Службы доставки (СДЭК/Почта/Boxberry) | Расчёт, отправления, трек, ПВЗ | Функц-модуль | — | Доставка |
| Маркетплейсы (Ozon/WB/ЯМаркет) | Выгрузка товаров, приём заказов | Функц-модуль | — | Каталог, Заказы, Склад |
| Яндекс-сервисы | Карты, Метрика, SmartCaptcha, Бизнес | Функц-модуль | несколько | Шина интеграций |
| Google-сервисы | Maps, Analytics, reCAPTCHA | Функц-модуль | — | Шина интеграций |
| Госуслуги/ЕСИА | Авторизация и данные через ЕСИА | Функц-модуль | — | OAuth, Согласия |
| ЭДО (Диадок/СБИС) | Обмен юридически значимыми документами | Функц-модуль | — | Шина интеграций, B2B |
| DaData/ФИАС | Подсказки адресов, реквизитов по ИНН | Функц-модуль | — | Формы, Заказы |
| Курсы валют (ЦБ РФ) | Автообновление курсов | Функц-модуль | — | Валюты, Планировщик |
| Объектное хранилище (S3/Selectel/YOS) | Бэкенд для файлов/медиа/бэкапов | Инфра-модуль | — | Файл-хранилище |
| Видеохостинг (VK Video/YouTube/Rutube) | Встраивание, превью | Функц-модуль | — | Медиа |
| Email/SMS-провайдеры (Unisender/SMS.ru) | Транспорт для рассылок и SMS через API | Инфра-модуль | — | Email, SMS |
| Календари (Google/Яндекс/CalDAV) | Синхронизация событий/бронирований | Функц-модуль | — | Шина интеграций |
| ERP/учётные системы | Обмен номенклатурой, ценами, документами | Функц-модуль | — | 1С-обмен, Заказы |
Что в ядре, а что — модуль (сводка)
Ядро (cms/core) — только то, без чего не работает сайт-визитка:
Kernel/DI · Реестр модулей · События/хуки · Конфигурация · Локализация строк ·
/local· Кеш · Медиа/картинки/хранилище · Очереди · Планировщик · Логи · Миграции данных · API-слой (REST) · Заявки · Email · Аутентификация · Пользователи · RBAC · Политики · Rate-limit · Защита форм · Согласия ПДн (база) · Шифрование · Страницы+блоки · Произвольные типы · Таксономии · Конструктор форм · Черновики · Меню · Виджеты · Настройки · ЧПУ/маршрутизация · SEO/Sitemap/Robots/Schema/OG · Админ-shell · Дашборд · Настройки сайта · (+заготовка мультиязычности)
Всё остальное — модули. Ставятся под конкретный заказ. Первый заказ (новый клиентский сайт) определит, какие модули портируются первыми — см. реестр модулей и дорожную карту.
Российская специфика — отдельными модулями
РФ-подсистемы вынесены из дефолтной поставки в отдельные модули: бизнес-логика (Платежи, Доставка, Чеки, Согласия) — абстрактна в ядре/базовых модулях, а РФ-коннекторы подключаются поверх. Так международное ядро не тащит локальную специфику, а РФ-проект ставит нужное:
54-ФЗ/ОФД · ЮKassa/Тинькофф/Робокасса/СБП · СДЭК/Почта/Boxberry · 1С-обмен (CommerceML) · маркетплейсы Ozon/WB/ЯМаркет · Яндекс (Метрика/Карты/SmartCaptcha) · Госуслуги/ЕСИА · ЦБ РФ курсы · DaData/ФИАС · 152-ФЗ (Согласия/cookie) · ЭДО (Диадок/СБИС)
Уточнения — закрыты
Вопросы, открытые на момент первой версии каталога, решены и зафиксированы:
| Было открыто | Решение | Где |
|---|---|---|
| Граница каталог/e-commerce | Каталог — модуль-витрина (universal-модель «каталог + лид»); магазин — метапакет зависимых модулей поверх | модель e-commerce |
| Обобщение калькуляторов/глоссария/антифрода | По одному конфигурируемому модулю с назначенным донором | ТЗ cms/calculator, cms/glossary, cms/antifraud в индексе |
| Метапакеты под типовой заказ | Канонические составы зафиксированы | каталог модулей |
| «Часто забываемые» подсистемы | Все внесены в каталог и получили отдельные ТЗ | индекс ТЗ модулей |
Смежные разделы
Отдельные крупные темы вынесены в свои страницы (там детальный разбор возможностей):
- ТЗ модулей — отдельное ТЗ на каждый модуль этого каталога; стандарт модуля — требования к построению;
- Обмен данными — пять каналов ядро↔модули↔компоненты, владение данными, запреты;
- Модель e-commerce — ТП, мульти-склад, типы цен, НДС/чеки, rule-engine, highload-требования каталога;
- SEO — гибкость — правила, редиректы, переменные, умный фильтр, региональность, подмена URL;
- Мультиязычность — стратегии переводов, резолв локали, hreflang;
- Интеграции и API — REST/GraphQL, вебхуки, платёжные шлюзы, доставка, крипта, CRM/1С, маркетплейсы, мобильные приложения;
- Клиентские кабинеты — ЛК B2C/B2B, мультивендор-маркетплейс, UGC-публикации от пользователей.