Клиент регистрируется в приложении, получает цифровой пропуск и проходит по QR. Решение об открытии принимает сервер, а не сканер.



Аккаунт привязывается к карточке клиента в клубе. Без карточки пропуск не выпускается.
QR подписан и обновляется сам. Скриншот, отправленный другу, устаревает за минуты.
Сканер отправляет код на сервер. Проверяется подпись и срок, а не картинка.
Срок, заморозка, лимит посещений, блокировка. Отказ приходит с причиной.
Событие в журнале: кто, когда, устройство, решение. Отказ пишется так же.
| Случай | Решение |
|---|---|
| Пропуск переслали | Короткий срок жизни и автообновление кода |
| Истёк абонемент | Отказ с причиной и подсказкой, событие в журнале |
| Пропал интернет | Локальный список на турникете, события уходят позже |
| Двойной скан | Идемпотентность: второй проход не открывается |