Что требовалось решить
Расширить действующий сайт доставки и связать пользовательский опыт, бизнес-правила, работу сотрудников и заказы внутри MAX, сохранив Flexbe как ecommerce-основу.
Кейс / Азия Тут / Website / Backend / VK / MAX / Integrations
Коммерческий проект · ProductionПроект начался как доработка действующего сайта доставки на Flexbe, но постепенно вырос в связанную production-систему: новый frontend, собственный Flask backend, аккаунты клиентов, скидки и промокоды, VK workflow сотрудников и полноценный MAX-бот для оформления и сопровождения заказов.
Расширить действующий сайт доставки и связать пользовательский опыт, бизнес-правила, работу сотрудников и заказы внутри MAX, сохранив Flexbe как ecommerce-основу.
Custom frontend поверх Flexbe, Flask backend и SQLite, VK для управления статусами и MAX для полного клиентского сценария. Заказы проходят общую production-цепочку.
01 / Редизайн сайта
Существующий Flexbe был сохранён как ecommerce-основа, а поверх него построен большой custom HTML/CSS/JS слой.
Карточка товара
НаггетсыОформление
Корзина и checkoutНовый header и hero, внешний вид каталога, мобильные карточки и product modal. Ingredient chips и sprites, поиск по названию и ингредиентам.
Стилизация cart / checkout, доставка и самовывоз, адрес квартиры или частного дома, выбор времени, палочки, upsell и success overlay.
Автозаполнение из аккаунта, повтор заказа на сайте, UI акций и birthday-механики, mobile drawer и мобильные исправления.
Объём frontend показан как срез масштаба разработки, а не как показатель качества.
02 / Архитектура
Flexbe остаётся источником истины для меню, цен, доступности, корзины, checkout и lead/order. Custom frontend отвечает за UX сайта, а Flask связывает все части системы.
Custom HTML/CSS/JS расширяет существующий сайт. Ecommerce-основа и реальные заказы остаются в Flexbe.
Backend связывает website, accounts, Flexbe, VK, MAX, SQLite и бизнес-логику.
VK — управление статусами для сотрудников. MAX — меню, корзина, checkout, история, повтор, отмена, timeline и уведомления для клиента.
03 / Аккаунты клиентов
Регистрация, вход, профиль, история заказов, повтор, отмена, автозаполнение checkout и выход из аккаунта.
Состав · доставка · время получения
Повторить заказ ↗Отмена в первые 15 минутТовары и количества сохранены
Новый клиент может создать аккаунт до первого заказа. Для существующего номера остаётся защита через подтверждение прошлым заказом.
Номер, состав, сумма, статус, доставка и время. Прошлый заказ возвращается в корзину с проверкой актуальных товаров и цен; новый заказ создаётся только после подтверждения клиента.
Сервер повторно проверяет владельца, возможность отмены и текущий статус. После успешной отмены меняет статус в Flexbe, отправляет событие в VK и уведомление в MAX.
04 / Birthday и промокоды
10% только на товары: доставка в скидке не участвует. Подписанный токен, один раз в календарный год и idempotency защищают правило от повторного применения.
Если обычная скидка выгоднее или равна birthday, birthday-бонус не расходуется.
Backend API, локальная таблица промокодов и applied promo. Frontend показывает доступные акции; custom logic не конфликтует с birthday.
Legacy BIRTHDAY10 не используется как frontend fallback.
05 / Оплата и сдача
Для доставки и самовывоза доступны «Мобильный банк» и «Наличные». При оплате наличными клиент выбирает «Без сдачи» или «Нужна сдача».
Доставка / самовывоз
Поля появляются по выбранному сценарию. Если нужна сдача, клиент вводит сумму, с которой её подготовить. Поле принимает только цифры.
Backend получает финальную сумму заказа после серверных корректировок, рассчитывает сдачу и передаёт информацию сотрудникам.
В карточке VK видны «Без сдачи» либо сумма клиента и рассчитанная сдача. Рассчитанная сдача клиенту на frontend не показывается.
Пример в схеме условный и не содержит данных реального клиента.
06 / Бизнес-правила
Самовывоз бесплатный. Минимального заказа нет. Порог доставки определяется subtotal.
ASAP доступен. Отложенный заказ — минимум +2 часа, шаг выбора времени — 30 минут.
11:00 считается открытием; в 23:30 заказ ещё доступен, в 23:31 приём закрыт.
07 / VK Staff Workflow
VK — основной рабочий интерфейс сотрудников. Карточка заказа объединяет состав, получение, оплату, скидки и итоговую сумму.
Новый → Принят → Готовится → Передан курьеру → Выполнен.
Новый → Принят → Готовится → Готов к выдаче → Выполнен.
MAX notification может отправляться после успешного database commit. Ошибка MAX не должна ломать изменение статуса заказа и работу VK.
08 / MAX Customer Bot
MAX — полноценный клиентский order bot. Заказ, оформленный в MAX, создаёт реальный заказ в Flexbe и проходит через ту же production-цепочку обработки.
Клиентский order bot
Меню → корзина → заказЗащита от двойного заказа
Каталог и категории, серверный renderer карточек: название, цена, вес, ингредиенты и кнопка добавления. Пагинация — 4 карточки на страницу.
Главная показывает текущий заказ, корзину, меню и «Мои заказы». В рабочее время: «Принимаем заказы с 11:00 до 23:30», вне рабочего времени: «Приём заказов закрыт». Меню и корзина остаются доступны.
Повторное нажатие кнопки подтверждения не должно создать второй заказ.
09 / Production round trip
Полный production round trip: клиент оформляет заказ, сотрудники обрабатывают его, а обновления возвращаются клиенту в MAX.
Сотрудники меняют статус
Accepted, cooking, courier, ready, completed и cancelled. Формат — PNG + text.
Notification delivery idempotent: успех и ошибка фиксируются, одно событие не должно отправляться повторно.
Ошибка MAX не ломает основной order/status flow.
10 / MAX «Мои заказы»
Пагинация, обычный номер заказа, статус, товары, сумма и подробности. Из истории доступны повтор, отмена и timeline.
Самовывоз
Доставка
Клиент открывает прошлый заказ и подтверждает повтор. Проверяются текущая доступность и цены, корзина перестраивается. Новый заказ автоматически не создаётся до подтверждения checkout.
Перед отменой проверяются ownership, can_cancel и текущий статус. После успеха Flexbe получает cancelled, локальный статус обновляется, VK получает событие, MAX — cancelled notification.
11 / Backend и инфраструктура
Flask связывает сайт и мессенджеры, а инфраструктура обеспечивает работу production-системы.
Flask, Gunicorn, systemd и SQLite. Собственная бизнес-логика и обработка событий.
VPS, DNS, Nginx, HTTPS, CORS, секреты в переменных окружения и backups.
Pillow renderer для карточек и Playwright QA для проверки интерфейса.
12 / QA
Зафиксированные результаты QA проекта. Автоматические проверки и ручные подтверждения показаны отдельно.
13 / Production recovery
Финальная recovery-точка проекта проверена checksum и сохранена отдельно от production-сервера.
Full project backup и отдельный SQLite backup.
Flexbe custom source, public Flexbe snapshot и infrastructure snapshot.
SHA256 manifest, master recovery bundle и off-server copy.
Проект находится в production и на этапе финальной передачи.
Результат
В результате существующий сайт доставки превратился в связанную production-систему. Flexbe остался источником истины для каталога и заказов, custom frontend отвечает за пользовательский опыт сайта, Flask связывает аккаунты, бизнес-логику, VK и MAX, сотрудники управляют статусами через VK, а клиент может оформить и сопровождать заказ как на сайте, так и внутри MAX.
Проект включает не только frontend и backend, но и реальные бизнес-сценарии: доставку и самовывоз, время заказа, оплату, сдачу, скидки, birthday-механику, повтор, отмену, статусы, клиентские уведомления, QA и recovery.
Mini App для питания, здоровья, привычек и личного развития