POS UI/UX Research — 2026-05

Глубокое исследование лучших практик UI/UX для POS-кассы фастфуда (QSR — Quick Service Restaurant) и конкретные рекомендации для нашего desktop-pos. Основа для последующих BR’ов по UX-улучшениям.

Контекст

Touch-redesign desktop-pos завершён (8 фаз: tokens, BottomSheet, NumericInput, Stepper, ActionBar, TextInput, etc). Базовая touch-эргономика хорошая, но конкуренты (Toast, iiko, Square, Lightspeed) опережают по информационной архитектуре и workflow. Этот research — план следующих улучшений.

1. Конкурентный обзор

iiko Front (РФ — главный конкурент)

3-колонка: слева список блюд + сумма / по центру меню с группами + поиск (по name/SKU/barcode) + комбо-наборы / справа 3 вкладки «избранное».

Паттерны для воспроизведения:

  • Постоянная видимость корзины (не модальная, не collapsible)
  • Поиск по нескольким атрибутам (название, артикул, баркод)
  • «Избранное» отдельно от категорий
  • Модификатор как отдельная сущность с обязательными/опциональными группами

Toast POS (US — флагман в QSR)

3-зона: слева детали чека / по центру меню + поиск + Open Item / справа/внизу Hold/Send/Pay sticky.

Паттерны:

  • Favorites tab per-cashier → у Velvet Taco +20% throughput
  • Required-модификаторы подсвечиваются в нижней зоне диалога
  • Sticky footer с тремя primary actions (Hold / Send / Pay)

Источник: restauranttechnologynews.com, Toast docs.

Square for Restaurants (US)

Conversational modifiers — главная фишка. Кнопки Add / No / Extra / Sub рядом с каждой опцией (вместо отдельных списков «без…» и «с…»). Auto-progression через required modifier sets.

Источник: Square community.

Lightspeed K-Series (CA/EU)

3-зона register: order summary (верх) / numpad (collapsible, середина) / меню (главная зона). Quick Service Mode — pay-at-order на одном экране.

Паттерны:

  • Numpad collapsible (свёрнут когда не нужен → больше места меню)
  • Allergens/Notes как отдельные кнопки (не overflow)
  • Картинки опциональны (tile-only тоже работает)

Revel Systems (на iPad)

Conversational ordering — кассир принимает заказ в любом порядке (а не «выбери основное → потом гарнир»). Критично для шаурмы где клиент диктует «двойной соус, без лука, средний» вперемешку.

McDonald’s NP6 (proprietary)

Photo-driven, language-agnostic — иконки/фото вместо текста. Meal-сборка через wizard «Step 1 of 3». Цветовое кодирование секций. Фиксированный grid 4×6 (никаких scrollable lists).

Subway POS

Жёсткий wizard: хлеб → размер → начинка → сыр → овощи → соусы → meal upgrade → напиток. Брендовые цвета, лаконичный текст. Subway отказался от формального обучения — система само-обучаема.

Starbucks Next Gen POS

80% drink orders помещаются на главный экран без навигации — это самый важный показатель для QSR. Top-N обычных заказов на главном (без drill-down). Batch-grouping одинаковых напитков в KDS.

Источник: koronapos.com — Starbucks.

R-Keeper / Quick Resto / Tillypad

R-Keeper: настраиваемый screen designer (drag-and-drop кнопок). Quick Resto: similar к iiko. Tillypad: mid-range функционал.

2. Best Practices (с источниками)

ПрактикаДетальИсточник
Distance-based sizingКассир смотрит с ~80 см. На 1080p+ моноблоке нужен body 18-20px (у нас 16px)Creative Navy
Tap speed = 2× normalОпытный кассир тапает в 2 раза быстрее. Целевой бенчмарк: транзакция <5 секflip-pos
Touch target ≥1cm физическиНа 21.5”/1080p ~55px. На 15.6” минимальные ≥48 могут быть теснымиNN/G
Spacing важнее размераМежду primary actions ≥8-12px иначе fat-finger hitsNN/G
Glove modeКассиры в перчатках бывают. Решение: hardware с industrial-controller + увеличить touch-area hitboxPioneer
Steppers vs numpadStepper для 1-5 единиц (один tap), numpad для cash/tip/скидокNN/G Steppers
Conversational > forced wizardВ QSR клиент диктует модификаторы вперемешку. Wizards только для meal-dealsRevel + Square
Цветовое кодирование категорийМозг сортирует по цвету быстрее чем по тексту. Brand-corner цвета для секцийdev.pro
Минимум модаловКаждый модал = потеря контекста. Inline/side-panel вместо overlay где можноLogRocket
Persistent cart > collapsibleКассир должен видеть итог всегда (anti-fraud, double-check)iiko/Toast/Lightspeed
Photos optional, color tiles mandatoryФото плохого качества хуже чем colored tile с текстомStarbucks/McDonald’s
Top-N favorites zoneГде 80% продаж. Toast: per-cashier favorites = +20% throughputToast
«Open Item» quick-productКнопка для произвольной позиции с ценой (сезонные/нестандарт)Toast
Errors recovery > prevention dialogs1-tap отмена позиции > подтверждение каждого выбораUXmatters

3. Рекомендации по нашим экранам

MainScreen (приём заказа)

R-1. Поиск + «Часто» — две недостающие зоны. Сейчас categories slot вертикально слева. У всех serious конкурентов сверху сайдбара есть поиск + favorites/часто. Шаурма/донер: клиент произносит «Big Mac» → кассир должен набрать первые 2 буквы, не скроллить категории. Что менять: Над списком категорий — кнопка-tile «★ Часто» и кнопка-tile «🔍 Поиск». «Часто» — top-N товаров за 7 дней по этой ТТ. Поиск — overlay-input с auto-complete по prefix. Источник: Toast favorites (+20% throughput), iiko «быстрое меню».

R-2. Корзина 440px возможно избыточна. На 1366×768 (бюджетный 15.6” моноблок) — это 32% экрана только для корзины. У Toast/Lightspeed корзина 25-30%. Что менять: gridTemplateColumns: "200px minmax(0, 1fr) minmax(360px, 28%)".

R-3. Toolbar «Обновить меню» сильно outsized. Меню меняется редко. Перенести в шапку или footer категорий — освободить прайм-зону.

R-4. Tile продуктов — добавьте badge-индикаторы для модификаторов. ProductTile получает hasModifiers, но это не отображено. Toast/Square показывают значок «требуется выбор» (диамант или dot) в углу. Что менять: Правый-верх угол маленький значок если hasModifiers=true.

R-5. OrderType Switcher и стол — слишком много места. В час пик такси/самовывоз 80%, это one-time choice на смену. Что менять: Поднять OrderTypeSwitcher как maly sticky-полоску (3 segmented-button) сверху корзины 40px высотой.

R-6. Цветовое кодирование категорий — обязательно. В Catalog Service backfill color из палитры по умолчанию: ['#EF3124', '#FFB800', '#00A86B', '#0066CC', '#8B4789', '#F77F00', '#264653', '#E07A5F'].

R-7. OrderTypeSwitcher → иконки. 🍽 / 🥡 / 🛵 вместо/рядом с текстом. Кассир видит за 0.1 сек.

Modifier selection

R-8. Conversational pattern (как Square). Заменить radio/checkbox на inline + / − / ✕ кнопки на каждой опции. Required-группа подсвечена красным сверху если не выбрано. Источник: Square conversational modifiers.

R-9. Required-модификаторы блокируют CTA. Primary Добавить в чек — disabled пока не выбран size.

R-10. Multi-select с лимитом — visible counter. «Топпинги (выбрано 1 из 3)» над группой.

R-11. «Назад» в bottom-sheet для случая «упс, не тот товар».

Payment flow

R-12. Минимизировать шаги: 3 экрана максимум. (1) Сумма + способ → (2) ввод суммы / ожидание карты → (3) Успех. Если способ один (только cash/card) — сразу big-buttons на 1-м экране.

R-13. Suggested amounts для cash. 💵 Наличные → numpad + кнопки 1000 / 1500 / 2000 / Точная сумма / +200. Клиент даёт 1500 за чек 1430 → один tap.

R-14. Сдача — гигантским шрифтом на 2-3 секунды (auto-dismiss или tap-to-continue), потом печать.

R-15. Split bill — отложенный appetite. Для шаурма/бургер takeaway split редкий. Прячем в overflow. Для dine_in (TableOrderScreen) — выводим явно.

ActiveOrders / поиск заказа

R-16. Filter chips сверху + auto-refresh. В час пик 30 заказов/час → может быть 10-15 активных одновременно. List + scroll медленно. Нужны:

  • Filter chips: «Все» / «Готовится» / «Готовы к выдаче» / «Просрочены»
  • Auto-refresh каждые 5-10 сек (или WebSocket)
  • Sort: «just open first» / «overdue first»
  • Поиск по № чека (1-3 цифры с мини-numpad)

R-17. Card-tile вместо list-row. Tile 200×160: № чека крупно сверху, статус-цветом (warning «готовится», success «готов»), 2-3 первых блюда + сумма.

R-18. Time-since-open visible counter. Каждый tile: «🕐 4:32» с момента открытия. Цвет: серый <3min, оранжевый 3-7min, красный >7min.

Refund

R-19. Three-step с обязательной причиной.

  1. Выбор позиций (чекбокс на tile с количеством для частичного)
  2. Причина (selectable: «Брак» / «Ошибка кассира» / «Отмена клиентом» / «Другое»)
  3. Подтверждение с суммой + способом возврата

R-20. Сильный confirm только на финальном шаге. Не плодить «Вы уверены?» на каждом — anti-pattern. Один modal с большой Подтвердить возврат 530 ₽.

R-21. Audit-trail видимый. Под confirm мелким текстом: «Возврат привязан к чеку №1024, кассир Иванов, смена №56».

4. Anti-patterns которых стоит избегать

#Anti-patternПочему плохо
A1Скрытые жесты на primary CTA (swipe-down)Кассир не знает что есть
A2Однотипные цвета категорийГлаз сортирует по цвету быстрее чем по тексту
A3Захардкоженные wizards с 5+ шагами в час пикРаздражают опытных
A4Модалы поверх модаловКассир теряется
A5Подтверждения каждого тапаSlowdown ×2-3
A6Скрытие критических данных за collapsibleКассир сверяется с дисплеем клиента
A7Низкий контраст в primary buttonsВ свете дневной кухни не видно
A8Cancel рядом с Pay одного размераMistap
A9Tipping default 25% незаметноДарк-pattern
A10Нет undo для последнего действияСлучайный товар → искать в корзине
A11Внутренний scroll категорийДвойной scroll в час пик
A12Нет «Open Item» на главномСезонный товар → блок
A13Numpad overlay поверх корзиныКассир не видит итог при вводе
A14Photo обязательно для каждого товараНизкокачественные фото хуже tile с текстом
A15Логин по password в час пик30 заказов/час и каждый кассир входит password — медленно. PIN/RFID

5. Топ-10 приоритетных изменений

#ЧтоГдеЭффектСложность
1«★ Часто» tab + поиск (auto-complete) сверху колонки категорийMainScreen + Catalog Service (favorite metric per ТТ)Сокращение времени принятия популярных заказов на 30-40%Средняя
2Conversational modifiers с Add/No/ExtraUI пакет ModifierSelector2× скорость заказа со многими модификаторамиСредняя
3Required-modifiers блокируют CTA + автопрогрессияModifierSelectorМеньше «забыл выбрать size»Низкая
4Suggested amounts для cash payment (1000/1500/2000 + точная)NumericInput / payment screenНа 50% быстрее cash transactionsНизкая
5Filter chips + auto-refresh + status-color tile в ActiveOrdersActiveOrdersScreenПоиск активного 1-2 сек вместо 5-10Средняя
6Цветовые палитры категорий по умолчанию + backfillCatalog миграция + админкаМеньше misclickНизкая
7Корзина 440px → minmax(360px, 28%)MainScreen layoutНа 15.6” +30% места tileОчень низкая
8Time-since-open в ActiveOrders (серый/жёлтый/красный)ActiveOrdersScreenМенеджер видит overdueНизкая
9PIN-логин (4-6 цифр) для смены кассира внутри открытой сменыLoginScreen + Auth ServiceНа 80% быстрее переключениеСредняя
10Refund 3-step с одним финальным confirmRefundScreenМеньше ошибочных, audit trailСредняя

Источники

Связанные документы