Доступен — Локальные цифровые продукты
HCA · Studio
TR Контакты ↗
Заметка 04 · Архитектура продукта

Архитектура POS-системы ресторана

Сложность POS-системы не в том, чтобы записать заказ. Сложность — оставаться читаемой в час пик, помнить удалённую продажу, не падать при обрыве связи и гарантировать, что цена приходит из одного места.

Область
Ресторан и кафе
Тема
Архитектура системы
Основа
Из практики
Короткий ответ

Пять решений определяют исход POS ресторана: (1) отмены не запрещаются, но оставляют след; (2) касса — сенсорная и с минимумом касаний, работающая рефлекторно; (3) кухонный экран — не список заказов, а экран состояния с цветовой индикацией ожидания; (4) цена меню приходит из одного источника, включая QR-меню; (5) данные лояльности — естественная часть записи о продаже, а не приделанный модуль. Эти решения важнее выбора языка или фреймворка.

Неверная отправная точка

Большинство разработчиков начинают POS с модели данных: стол, заказ, товар, оплата. Модель работает за неделю, и система выглядит готовой.

Настоящие проблемы начинаются потом, и ни одна из них не про модель данных:

  • Кассиру нужно семь касаний там, где должно быть три.
  • Позицию ввели неверно, удалили, и никто не знает, что произошло.
  • На кухонном экране двадцать заказов, и не видно, какой опаздывает.
  • Цена в QR-меню отличается от цены на кассе.
  • В конце месяца на вопрос «сколько раз приходил этот гость» ответа в системе нет.

Ни один пункт не решается лучшей схемой базы данных. Все они — продуктовые решения.

Отмены и след аудита

Самая чувствительная функция POS — не добавить продажу, а удалить её.

Обе крайности неверны. Запретите отмены — система станет непригодной: ошибки бывают в каждую смену. Разрешите свободно — откроете самый лёгкий путь к недостаче: ввели позицию, получили деньги, удалили запись.

Правильная схема посередине: отмены разрешены, но оставляют след.

  • Запись не удаляется физически, а помечается отменённой.
  • Кто, когда, какую позицию и на какую сумму — всё сохраняется.
  • Отчёты показывают эти записи; отмены — отдельная строка в отчёте за день.
  • Отмена после оплаты — другая операция, чем до оплаты, и требует отдельных прав.

Интерфейс кассы

Единственный критерий интерфейса кассы — скорость, и она берётся из числа касаний, а не из визуального минимализма.

  • Самые ходовые товары всегда на виду. В меню может быть 200 позиций, но 80% смены делают 20. Эти 20 не должны требовать поиска.
  • Крупные зоны нажатия. Интерфейс не может рассчитывать на точность мыши: им пользуются мокрыми руками, в спешке, глядя сбоку.
  • Минимум подтверждений. Каждое подтверждение — касание. Подтверждать нужно только необратимое: закрытие смены, а не добавление позиции.
  • Быстрое исправление. Откат последней позиции — одно касание, потому что это самая частая ошибка.

Преимущество веб-POS: одно приложение работает как разные виды на кассе, планшете и кухонном экране. Нет установки на каждое устройство и расхождения версий.

Кухонный экран

Самая частая ошибка — отдать кухне административный список заказов. Он создан для операций интернет-магазина: фильтры, поиск, постраничная навигация.

Человек на кухне не читает списки. Он смотрит на экран с полутора метров, с занятыми руками, одну секунду. Экран должен сказать ему одно: что делать сейчас?

  • Только сегодня, только активные. Завершённые и вчерашние заказы не должны занимать экран.
  • Время ожидания и цвет. На каждом заказе — минуты ожидания, карточка меняет цвет за порогом. Цвет — единственный сигнал, понятный без чтения.
  • Явная метка нового заказа. В час пик новый заказ без метки теряется.
  • Обновление без мерцания. Экран должен обновляться регулярно, но не перерисовывать весь список каждый раз. Иначе экран постоянно мерцает, персонал перестаёт его читать, и панель выходит из употребления. Мелочь на бумаге — и именно та мелочь, из-за которой панели бросают в реальной работе.

Единый источник цены

В ресторане цена появляется минимум в трёх местах: на кассе, в печатном или QR-меню и на сайте заказов, если он есть. В разных системах они неизбежно расходятся.

Результат — спор с гостем, и этот спор заведение проигрывает каждый раз.

Правильная схема: у цены один источник, остальные поверхности читают из него. QR-меню должно питаться данными о товарах из POS — не отдельный сайт меню, а другой вид тех же данных.

Устойчивость к обрывам

В ресторане связь пропадёт. Это вопрос времени, а не вероятности. Если система не готова, обслуживание останавливается, заведение переходит на бумагу — и данные этой смены теряются навсегда.

  • Минимум: при обрыве система чётко предупреждает и не теряет данные; продолжает с того же места при восстановлении.
  • Средний: открытые заказы хранятся локально на устройстве, приём заказов продолжается, синхронизация происходит при восстановлении связи.
  • Полный: работа на локальном сервере, интернет нужен только для резервных копий и отчётности.

Какой уровень нужен — зависит от заведения, и это бюджетное решение, а не техническая необходимость. Но решение должно быть осознанным. Худший вариант — когда вопрос не задали и ответ узнали при первом обрыве.

Почему лояльность нельзя добавить потом

В большинстве систем программа лояльности — приделанный позже модуль, и поэтому работает плохо: запись о продаже и запись о клиенте живут в разных местах, сопоставление зависит от инициативы кассира, данные собираются наполовину.

А ведь лояльности нужно лишь фиксировать, кому сделана продажа. Это решение принимается в самом начале.

Критично, чтобы правило не было зашито в код. «Двойные штампы на фильтр-кофе по вторникам» не должно требовать обновления ПО. Иначе бизнес перестаёт экспериментировать, и система несёт мёртвую функцию.

Итог

POS отличает не выбор технологии, а пять решений: отмены оставляют след, касса работает за минимум касаний, кухонный экран показывает состояние, цена приходит из одного источника, а продажа знает, кому она сделана.

Пример этой архитектуры на практике: POS и лояльность Sisa Atelier.

Список решений
Отмены
Не удалять, а помечать — сохранять кто, когда и на сколько
Касса
20 ходовых товаров всегда видны; откат последней позиции одним касанием
Кухня
Только сегодня + время ожидания + цветовой порог; частичное обновление (без мерцания)
Цена
Один источник — QR-меню читает данные товаров из POS
Обрывы связи
Уровень выбирается осознанно: предупреждение / локальная очередь / локальный сервер
Лояльность
Фиксировать, кому сделана продажа, с первого дня
Кампании
Правила должны задаваться, а не быть зашитыми в код
Развёртывание
Контейнерная доставка — нет расхождения версий на устройствах
Частые вопросы

Об архитектуре POS.

Готовая POS или своя разработка?

Для одной точки со стандартной работой готовый продукт обычно дешевле и достаточен. Своя разработка оправдана, когда схема лояльности, логика кампаний или требования к отчётности не помещаются в рамки продукта. Решающий вопрос: насколько ценно, чтобы система помнила клиента и правила задавали вы?

Достаточно ли планшета для кухонного экрана?

Достаточно, если экран читается с расстояния. Повар смотрит примерно с полутора метров; список мелким шрифтом бесполезен. Возможность увидеть время ожидания и цвет опоздания с этого расстояния важнее размера экрана.

Остановится ли система при обрыве интернета?

Зависит от того, на какой уровень устойчивости построена установка. На простом уровне система предупреждает и не теряет данные, но принимать заказы нельзя. На среднем открытые заказы хранятся на устройстве и синхронизируются при восстановлении. Это бюджетное решение — важно принять его осознанно при разработке.

Работают ли цифровые штампы и баллы?

Они работают скорее на возврат существующих гостей, чем на привлечение новых, — а именно там прибыльность кофейни. Условие: правило должно подходить бизнесу и настраиваться опытным путём. В системе с фиксированным правилом функция лояльности быстро выходит из употребления.

Доступность и смета

Виден в локальном поиске.
Убедителен в продукте.