Можно ли подменить стол в URL?
Изменение номера нарушает HMAC-подпись. Сервер не принимает такой сегмент как подтвержденный стол для заказа.
QR-заказы для кальянной
Гость сканирует код на столе и сразу попадает в Алхимик выбранного заведения. Стол уже указан в подписанной ссылке, а команда получает точный состав и повторяющийся сигнал в пульте.
Камера открывает адрес с названием заведения, номером стола и подписью. Гостю не нужно искать точку в списке и повторно вводить стол. На первом экране доступны быстрый подбор, ручное смешивание и мастер-миксы. Любой выбранный состав попадает в общую чашу с итоговой граммовкой.
Перед отправкой сервис показывает заведение и стол. Сервер заново проверяет подпись ссылки и существование стола. После создания заказа гость видит статус, а запись появляется в истории текущего устройства. Закрытие вкладки не отменяет уже отправленный заказ.
Свободное поле легко заполнить ошибочно, а изменение сегмента URL без проверки позволяет направить заказ не на тот стол. В Алхимике подпись строится из slug заведения, метки стола и версии QR. Сервер доверяет столу только после проверки этой подписи.
Обычная ссылка без подписи остается полезной: гость может посмотреть меню и собрать микс. Для отправки он должен выбрать стол вручную либо отсканировать действующий QR. Удаление стола или повышение версии делает старую подпись недействительной и предотвращает использование устаревшего буклета.
В заказе есть номер стола, ингредиенты, граммовка, название рекомендации и комментарий гостя. Событие появляется в веб-пульте и Android-приложении выбранного заведения. Для Android можно выбрать системный или встроенный звук и прослушать его в настройках до сохранения.
Повторяющийся сигнал нужен, чтобы заказ не потерялся при занятой команде. Он прекращается после принятия или ручного приглушения, но приглушение не меняет статус заказа. Это различие важно: тишина на одном устройстве не должна создавать ложное впечатление, что заказ уже принят.
Android-пульт использует уведомление и фоновый механизм, рассчитанный на получение событий при выключенном экране. Пользователь выдает разрешение на уведомления, выбирает канал звука и разрешает работу без ограничений батареи. Конкретное поведение зависит от версии Android и оболочки производителя, поэтому приложение показывает переход к системным настройкам.
После разблокировки рабочий экран синхронизируется с сервером, а не полагается только на текст уведомления. Заказ должен появиться в своей колонке даже если событие пришло, пока приложение было свернуто. Ручное обновление и автоматическое восстановление соединения страхуют нестабильную сеть.
Скачайте код без фона, разместите на контрастной подложке и оставьте свободное поле. Проверьте сканирование на iOS и Android, при дневном и вечернем освещении. Затем сделайте тестовый заказ с каждого физического стола и убедитесь, что номер совпадает в гостевом статусе и пульте.
После размещения отслеживайте ошибки подписи и открытия по столам. Если конкретный стол почти не используется, проверьте видимость и состояние носителя. Если открытий много, а заказов мало, анализируйте завершение подбора и понятность CTA, а не увеличивайте QR механически.
На буклете укажите, что действие относится к текущему столу. Это уменьшает пересылку фотографии кода между зонами. Для временных площадок создавайте отдельные метки столов и отключайте их после события, не переиспользуя старую подпись бесконечно.
Реальный интерфейс
Откройте гостевую часть, а для настройки точки оставьте заявку. Кабинет создается после проверки, чтобы заведения и доступы не появлялись без ответственного владельца.
Вопросы и ответы
Изменение номера нарушает HMAC-подпись. Сервер не принимает такой сегмент как подтвержденный стол для заказа.
Его подпись перестанет подтверждать заказ. Меню открыть можно, но стол придется выбрать заново по действующим данным.
Нет. Пульт авторизуется для конкретной точки и получает события только ее канала.
Нет. Системные уведомления и долгий звук нужны рабочему Android-пульту команды, а статус гостя показывается в веб-интерфейсе.