Что защищает деньги и данные
Страница для тех, кто оценивает систему технически: партнёров, интеграторов и владельцев, которые сравнивают поставщиков. По пунктам — как устроена защита.

Доступ и ключи
Пароли и PIN
Хранятся необратимым хешем (Argon2id). Восстановить пароль нельзя — только сменить. PIN не видит даже администратор.
Секреты вне кода
Ключи внешних сервисов и строки подключения к базе живут в серверном хранилище секретов, не в репозитории и не в клиентском коде.
Короткие сессии
Токен доступа живёт минуты, обновление — в защищённом хранилище. При увольнении или смене роли сессии отзываются.
Права на сервере
Каждое действие проверяется на сервере по коду права. Скрытая кнопка в интерфейсе — удобство, а не защита.
Защита от подбора
Счётчик неверных попыток входа и PIN с временной блокировкой.
Ключи интеграции
Один ключ — одно заведение. Чужие данные через него недостижимы по устройству системы. Отзыв мгновенный.
История всех действий с заказом
Каждое действие с заказом попадает в ленту событий чека: открытие, добавление позиции, отправка на кухню, удаление, скидка, ручная цена, оплата, печать, возврат. С именем сотрудника, временем и суммой.
- Удаление позиции после отправки на кухню помечается отдельно — это прямой убыток, и он не теряется среди обычных правок
- Видно, что было до и что стало после: старая цена и новая, старое количество и новое
- События связаны цепочкой контрольных сумм: каждая запись подписывает предыдущую
- Изменение прошлого события нарушает цепочку, и это видно при проверке
- Журнал только дополняется: строки в нём не редактируются и не исчезают

Продажи, движения склада и журнал не удаляются
Это не настройка прав, которую можно ослабить, а устройство системы. Ни кассир, ни управляющий, ни владелец, ни мы не можем стереть проданный чек, движение склада или строку журнала.
- Чек не удаляется. Ошибочный закрывается возвратом — и возврат остаётся видимым, с причиной и автором
- Проведённый документ не редактируется. Исправление — сторно или корректирующий документ, история цела
- Блюда и продукты с историей уходят в архив, а не стираются: отчёт за прошлый месяц через год покажет то же самое
- Записи журнала и движения склада запрещено изменять и удалять на уровне базы данных
- Резервная копия снимается перед каждым изменением структуры и ежедневно; восстановление проверяется

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

Что происходит при сбое
Нет интернета
Касса продолжает продавать и печатать, а продажи отправляются на сервер автоматически и без дублей.
Отказал принтер
Продажи не останавливаются; чек печатается повторно с экрана чеков, кухне помогает экран кухни.
Недоступен внешний сервис
Операция возвращается к ручному сценарию, повтор не создаёт дубля, ошибка видна администратору.
Нужны детали для технической оценки?
Отвечаем на вопросы интеграторов и службы безопасности партнёров, показываем систему на демо-доступе.