projects/org/ideal-shop/docs/ROADMAP.md

Роадмап ideal-shop

Версия: 2.0.0
Дата: 2026-03-23
Принцип: каждая фаза — рабочий продукт, тестируемый на реальном сервере


Обзор фаз

[1] ФУНДАМЕНТ      Drupal + Bootstrap + ideal_theme (пустой)
       ↓ ✓ сайт открывается, тема подключена
[2] FREE           Контент-сайт без Commerce
       ↓ ✓ страницы, меню, блог, мобайл
[3] BASE КАТАЛОГ   Commerce + товары + категории + фильтры
       ↓ ✓ каталог работает, можно смотреть товары
[4] BASE CHECKOUT  Корзина + оформление заказа (без оплаты)
       ↓ ✓ заказ создаётся, email уведомление
[5] ИНТЕГРАЦИИ RU  ЮKassa + СДЭК + VK + Яндекс OAuth
       ↓ ✓ реальная оплата, выбор ПВЗ, вход через VK
[6] PROF           PostgreSQL + pg_trgm + 1С + улучшенный поиск
       ↓ ✓ синхронизация 1С, поиск до 30к товаров
[7] ФИЧИ           Wishlist + отзывы + промокоды + quick view
       ↓ ✓ каждая фича независимо тестируется
[8] CORP           Elasticsearch + мультисайт + белый лейбл
       ↓ ✓ 3 сайта на одном Drupal, поиск 30к+
[9] РЫНОК EEU      Robokassa + СДЭК EEU + Telegram OAuth
       ↓ ✓ оплата и доставка в СНГ
[10] РЫНОК EU/NA   Stripe + DHL + Google/Apple OAuth + GDPR
       ↓ ✓ международные заказы

Фаза 1 — ФУНДАМЕНТ

Рецепт: ideal_start_free
Результат: Drupal CMS запущен, ideal_theme подключена

Что делаем

Задача Рецепт / команда
Drupal CMS установка composer create-project drupal/cms
Bootstrap Barrio подключить drush recipe ideal_theme_base
ideal_theme дочерняя тема drush recipe ideal_theme_tokens
Layout Builder регионы drush recipe ideal_theme_layouts
Базовая конфигурация admin, cron, файловая система

Тест ✓

[ ] Сайт открывается по домену
[ ] Тема ideal_theme активна
[ ] Мобильная версия корректна (Bootstrap grid)
[ ] Admin панель работает
[ ] Performance: Lighthouse > 90

Фаза 2 — FREE (контент-сайт)

Рецепт: ideal_start_free + контент
Результат: полноценный контент-сайт без Commerce

Что делаем

Задача Описание
Главная страница Hero + преимущества + CTA
Страница "О нас" Текст + фото
Контакты Форма + карта (Яндекс / OSM)
Блог Список + карточка + статья
Меню Шапка + футер + мобильное
SEO базовое Meta, sitemap, robots.txt
Форма обратной связи Email уведомление

Тест ✓

[ ] Главная: все блоки отображаются
[ ] Блог: список → статья → назад
[ ] Контакты: форма отправляет email
[ ] Меню: работает на мобиле (бургер)
[ ] SEO: sitemap.xml доступен
[ ] Скорость: FCP < 1.5s

Фаза 3 — BASE: КАТАЛОГ

Рецепт: ideal_start_base + ideal_shop_core + ideal_shop_catalog
База: MariaDB
Результат: каталог товаров с фильтрами, без покупки

Что делаем

Задача Описание
Commerce 3 установка Магазин, валюта ₽
Тип товара Название, цена, фото, описание
Варианты товара Размер, цвет, объём
Категории Дерево категорий
Каталог (View) Сетка карточек + список
Фильтры Facets + Search API: цена, категория, бренд
Карточка товара Галерея, описание, характеристики
Поиск Search API + MariaDB
Хлебные крошки Навигация
Пагинация Бесконечная + классическая

Тест ✓

[ ] Каталог: 20+ товаров отображаются
[ ] Фильтры: работают без перезагрузки (AJAX)
[ ] Карточка: галерея, вариант меняет цену
[ ] Поиск: находит по названию
[ ] Хлебные крошки: корректны
[ ] Мобиль: фильтры как drawer

Фаза 4 — BASE: CHECKOUT

Рецепт: ideal_shop_core (checkout flow)
Результат: полный цикл покупки, оплата наличными/при получении

Что делаем

Задача Описание
Корзина Добавить, изменить, удалить
Mini-cart Выпадающий в шапке
Checkout шаг 1 Контакты: имя, телефон, email
Checkout шаг 2 Доставка: адрес / самовывоз
Checkout шаг 3 Оплата: наличные / при получении
Checkout шаг 4 Подтверждение + страница спасибо
Email заказ Покупателю + менеджеру
Личный кабинет История заказов
Регистрация Email + пароль
Гостевой checkout Без регистрации

Тест ✓

[ ] Добавить товар → в корзине
[ ] Mini-cart обновляется без перезагрузки
[ ] Checkout: пройти все 4 шага
[ ] Заказ создан в admin
[ ] Email получен покупателем и менеджером
[ ] Гостевой checkout: заказ без регистрации
[ ] Личный кабинет: заказ отображается

Фаза 5 — ИНТЕГРАЦИИ RU

Рецепты: ideal_shop_yukassa + ideal_shop_cdek + OAuth
Результат: реальные платежи, реальная доставка, социальный вход

Что делаем

Интеграция Задача
ЮKassa Оплата картой + СБП + SberPay
СДЭК Виджет ПВЗ + расчёт стоимости + трекинг
VK ID OAuth вход
Яндекс ID OAuth вход
Telegram Login OAuth вход
SMS.ru SMS при создании заказа
Unisender Email рассылки + транзакции
Яндекс.Метрика Аналитика + e-commerce цели
DaData Подсказки адресов

Тест ✓

[ ] ЮKassa: тестовая оплата проходит
[ ] ЮKassa: webhook обновляет статус заказа
[ ] СДЭК: виджет показывает ПВЗ на карте
[ ] СДЭК: стоимость рассчитывается по адресу
[ ] VK OAuth: вход работает
[ ] SMS: приходит при создании заказа
[ ] Метрика: purchase событие фиксируется
[ ] DaData: адрес подсказывается при вводе

Фаза 6 — PROF (PostgreSQL + 1С + поиск)

Рецепты: ideal_start_prof + ideal_shop_1c + ideal_shop_elastic (pg_trgm)
База: PostgreSQL
Результат: синхронизация с 1С, нечёткий поиск до 30к товаров

Что делаем

Задача Описание
PostgreSQL миграция Переезд с MariaDB
pg_trgm Нечёткий поиск, исправление опечаток
Синхронизация 1С Товары, остатки, цены → сайт
Синхронизация 1С Заказы, клиенты → 1С
Автокомплит поиска Подсказки при вводе
Синонимы поиска "телефон" = "смартфон"

Тест ✓

[ ] Поиск: "тилевизор" находит "телевизор" (опечатка)
[ ] 1С: новый товар появляется на сайте через N мин
[ ] 1С: заказ с сайта появляется в 1С
[ ] 1С: остаток 0 → кнопка "нет в наличии"
[ ] pg_trgm: поиск работает на 30к+ товарах < 1s

Фаза 7 — ФИЧИ

Рецепты: ideal_shop_reviews + ideal_shop_wishlist + ideal_shop_promo
Результат: модульные фичи, каждая тестируется независимо

Что делаем

Рецепт Фича Тест
ideal_shop_wishlist Кнопка ♥, список избранного Добавить → список → в корзину
ideal_shop_reviews Отзывы + рейтинг 1-5 звёзд Написать отзыв → модерация → публикация
ideal_shop_promo Промокод в корзине Ввести → скидка применилась
Quick view Клик → popup с товаром
Уведомление о наличии Подписка → email при поступлении
Похожие товары Блок на карточке товара
Недавно просмотренные Cookie → блок

Тест ✓

[ ] Wishlist: ♥ добавляет без перезагрузки
[ ] Wishlist: сохраняется после выхода и входа
[ ] Reviews: отзыв проходит модерацию
[ ] Reviews: рейтинг отображается в Schema.org
[ ] Promo: WELCOME10 даёт -10%, SALE20 даёт -20%
[ ] Promo: истёкший промокод → понятная ошибка
[ ] Quick view: ESC закрывает, товар добавляется

Фаза 8 — CORP (Elasticsearch + мультисайт)

Рецепт: ideal_start_corp
База: PostgreSQL
Поиск: Elasticsearch
Результат: 3 магазина на одном Drupal, мощный поиск

Что делаем

Задача Описание
Elasticsearch Установка + Search API connector
Индексация Все товары в индекс
Автокомплит Мгновенные подсказки
Facets на Elastic Фильтры с подсчётом
Drupal multisite 3 сайта: pirofey, feyerverk, gipir
Общий каталог Товары из одной БД
Разные темы Sub-theme A, B, C
Белый лейбл Убрать "ideal_theme" брендинг

Тест ✓

[ ] Elastic: поиск работает на 30к+ товарах
[ ] Elastic: автокомплит < 100ms
[ ] Multisite: сайт A, B, C открываются на разных доменах
[ ] Multisite: общий каталог, разные цены
[ ] Белый лейбл: нет упоминания ideal_theme в HTML

Фаза 9 — РЫНОК EEU (СНГ)

Результат: продажи в Беларусь, Казахстан, Узбекистан

Что делаем

Задача Описание
Robokassa Оплата карты СНГ
СДЭК EEU Доставка в СНГ
Мультивалюта BYN, KZT (через $ курс)
VK ID Уже есть
Telegram Login Уже есть
Checkout Поля адреса под СНГ

Тест ✓

[ ] Оплата Robokassa: тестовый платёж из BY
[ ] СДЭК: расчёт до Минска
[ ] Валюта: цена показывается в BYN

Фаза 10 — РЫНОК EU/NA

Результат: международные продажи

Что делаем

Задача Описание
Stripe Карты Visa/MC международные
DHL Доставка в EU/NA
Google OAuth Вход через Google
Apple ID Вход через Apple
GDPR Cookie consent, Privacy Policy
Мультиязычность EN, DE, FR (i18n)
Мультивалюта USD, EUR
Checkout EU VAT поле, postcal code
Checkout NA State, ZIP
Brevo Email EU (GDPR compliant)

Тест ✓

[ ] Stripe: тестовый платёж карта US
[ ] DHL: расчёт доставки в Германию
[ ] GDPR: cookie banner при первом входе
[ ] i18n: переключение EN/RU
[ ] Checkout EU: поля корректны

Сводный план

Фаза Что получаем Можно продавать?
1 Drupal + тема
2 Контент-сайт FREE FREE тариф ✓
3 Каталог товаров
4 Полный заказ (без оплаты) BASE (наличные) ✓
5 Реальные платежи RU BASE полный ✓
6 PostgreSQL + 1С + поиск PROF ✓
7 Фичи (wishlist, отзывы) BASE+ / PROF ✓
8 Elasticsearch + мультисайт CORP ✓
9 Рынок СНГ EEU ✓
10 Рынок EU/NA Мировой ✓

Принципы

  1. Каждая фаза — деплой на сервер — не "работает локально"
  2. Тест перед переходом — все чекбоксы закрыты
  3. Фичи = рецепты — включаются независимо
  4. RU сначала — MVP на знакомом рынке
  5. Минимум → расширение — не строим всё сразу

← Назад | Рецепты → | Рынки → | Лицензии →