Выбрал, оплатил, забрал. Между этими действиями система сама отдаёт команды пищевому и кофейному оборудованию.
Коротко
- Заказ превращается в команды для оборудования: продукт, температура, время
- Еда и кофе готовятся параллельно и сходятся в один заказ
- Оператор удалённо видит статусы устройств, ошибки и чеки
Задача
Сначала клиент описывал современное кафе самообслуживания: гость выбирает блюдо, платит в интерфейсе, а готовит бариста. Мы проектировали автоматизацию заказа и работы точки, человек в производстве оставался.
По ходу проекта модель сменилась. Клиент решил убрать бариста из цепочки целиком: от оплаты до готового заказа точка должна отработать сама. Вместе со сменой концепции пришлось искать оборудование, которое вообще умеет такой сценарий, и понять, как связать его с нашей системой. Это уже была не только разработка интерфейса.
Выбрали специализированные устройства из Китая для еды и кофе. Для каждого блюда система должна передать режим — температуру, время и другие параметры. Кофейная машина выполняет свою часть заказа сама. Цифровая позиция в корзине должна стать физическим действием устройства.
Итоговая задача: связать интерфейс гостя, оплату, сервер и несколько устройств в один цикл. От нажатия «Оплатить» до выдачи.


Решение
Гость проходит короткий self-service сценарий. Выбирает позиции, оплачивает и следит за статусом. Касса, официант и бариста в этом пути не участвуют.
После оплаты заказ раскладывается на команды. Система понимает, какая позиция на какое устройство уходит, и передаёт параметры приготовления.

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

Интеграция с оборудованием
Самый тяжёлый кусок — разговор с устройствами. Это не публичный SaaS с понятной документацией, а промышленное оборудование китайского производителя.
Документация и большая часть переписки были на китайском. Пришлось разбирать и протокол, и то, как команда производителя описывает поведение машины.

С разработчиками оборудования сверяли команды, ответы, статусы приготовления и поведение в сбоях. Часть логики в документах не написана: её выясняли на совместных проверках.
Пограничные случаи здесь дороже, чем в обычном веб-сервисе. Устройство получило команду и не начало готовить. Связь оборвалась. Сервер считает заказ отправленным, машина его не приняла. На экране это легко показать ошибкой. На точке это оплаченный заказ, которого физически нет.

Команды, ответы и реальные статусы проверяли по очереди и под это переписывали серверную логику. Готовый API «подключили и забыли» здесь не существовал. Вокруг чужого оборудования собрали свой слой, который понимает, что происходит с заказом.
Связка software и оборудования
Интерфейс может показать правильную корзину, база — сохранить заказ, а продукт работает только когда устройство реально приготовило позицию.

У каждой позиции в каталоге есть физическое поведение: не только цена и фото, но и режим на оборудовании. Ошибки тоже часть модели. Устройство недоступно, команда не принята, статус неожиданный. Между «оплачено» и «можно забрать» десятки состояний, и гостю нужно честное из них, а оператору — причина.
Платежи и фискализация встроены в тот же цикл. Сквозной сценарий гоняли на реальной точке: платёжное устройство, чек, приготовление. Админка нужна даже пустому залу: оператор удалённо видит заказы, устройства, ошибки и этап приготовления.
Стек
- Nest.js
- Node.js
- Интеграция API
- Интеграция данных
- Микросервисы
Результат
Проект вырос из «приложения для заказа еды» в контур автономной точки. Для гостя путь короткий: выбрал, оплатил, забрал. За ним стоят платёж, сервер, несколько устройств и физические процессы, которые должны сойтись в один заказ.
Отдельный результат — рабочая интеграция с оборудованием: от документации и переговоров с производителем до команды, которая меняет температуру и время на конкретной машине.
Для бизнеса это другая операционная модель точки. Система не подсказывает сотруднику, что готовить. Она управляет приготовлением. Ошибка в этой логике — уже не кривой пиксель, а оплаченный заказ, который не появился на выдаче. Поэтому статусы, повторы и расхождения между сервером и устройством проектировали так же внимательно, как сам экран меню.
