Перейти к содержимому

Игровые сессии в IZI

Опубликовано: · IZI Team

Сессия — это основная единица тарификации в компьютерном клубе IZI: интервал времени, привязанный к игроку, ПК и тарифу — основа всего, что зарабатывает клуб. Всё, что происходит на ПК — оплата, смена устройства, автопродление, возврат — отслеживается на уровне сессии. Аналитика клуба строится из данных сессий: продолжительность, выручка за сессию, ARPU. Понимание жизненного цикла сессии помогает операторам быстро разбираться в нестандартных ситуациях и правильно настраивать тарифы.

Сессия в IZI — это агрегированная сущность: хранит, когда игрок сел (plannedStartAt / actualStartAt), когда ушёл (actualEndAt), каким ПК пользовался (SessionDevice) и какой тариф действовал в каждый момент (SessionPlayerTariff).

Жизненный цикл сессии имеет четыре статуса:

СтатусЗначениеКогда возникает
PENDINGСессия создана, старт запланирован на будущееОператор создал заблаговременное бронирование
ACTIVEЗапланированное время старта наступило, игрок ещё не нажал «Старт»Автопереход по времени
STARTEDИгрок активен, ПК разблокирован, время идётПосле нажатия «Старт»
ENDEDСессия завершена, чек сформированАвтоматически по тарифу или ручное завершение

Отдельный статус CANCELLED означает отмену до фактического старта — начисление не производится, тариф возвращается на баланс согласно политике возврата.

Переходы между статусами строго определены: из PENDING можно перейти в STARTED, ENDED или CANCELLED; из STARTED — только в ENDED. Обратных переходов нет.

В IZI есть три канала создания и запуска сессий. Механика одинакова; различается, кто инициирует операцию.

Оператор через CRM. Самый распространённый сценарий. Оператор открывает раздел «Зал», выбирает ПК, привязывает игрока, выбирает тариф из оплаченных заказов. CRM создаёт сессию (createSession) и запускает её (startSession). ПК получает команду на разблокировку через MQTT-брокер. Весь процесс занимает несколько кликов и секунды.

Самозапуск через мобильное приложение. Игрок со смартфона выбирает клуб, покупает тариф, выбирает свободный ПК и нажимает «Играть». Сессия создаётся и запускается без участия оператора. Права доступа проверяются на уровне API: игрок может управлять только своей сессией (assertSamePlayer).

Режим постоплаты (открытая сессия). В клубах с постоплатой сессии создаются в режиме OpenEnded: игрок садится, предоплата не нужна. OPEN_ENDED означает, что расчёт производится при завершении сессии — IZI выставляет счёт на основе фактически проведённого времени. Автопродление в этом режиме не нужно; система управляет продлениями автоматически.

Тарификация: почасовая, мультипасс, подписка

Заголовок раздела «Тарификация: почасовая, мультипасс, подписка»

Каждая сессия привязана к одному или нескольким тарифным сегментам (SessionPlayerTariff). У каждого сегмента есть точные временные границы (plannedStartAt / plannedEndAt) и ссылка на купленный тариф (playerTariffId).

Три основные модели тарификации:

  • Почасовой тариф. Игрок покупает N часов. Сессия закрывается при исчерпании тарифа, если не включено автопродление.
  • Мультипасс. Пакет часов с условием истечения (например, 10 часов в течение 30 дней). Один мультипасс может покрывать несколько сессий — каждая сессия расходует общий пул.
  • Подписка / безлимит. Тариф с расписанием использования (например, ежедневный безлимит с 10:00 до 22:00). Сессия активна в рамках расписания; выход за его пределы переводит ПК в режим ожидания.

Подробнее о настройке каждого типа — в разделе Тарифы и ценообразование.

При смене тарифа во время сессии (автопродление или ручное продление) создаётся новый сегмент SessionPlayerTariff с новыми временными границами. Тарификация считается по сегментам независимо — итоговый чек суммирует все сегменты.

После запуска оператор видит все активные сессии в режиме реального времени в разделе «Зал». Доступные действия:

Продление без перерыва. Оператор добавляет тариф к активной сессии через CRM — создаётся новый сегмент, ПК не перезагружается. Игрок продолжает играть без перебоев.

Автопродление. Если у игрока включено автопродление и на балансе есть совместимый тариф, система автоматически добавляет сегмент при истечении текущего. Оператор видит в зале, что сессия продлилась без прерывания игрока.

Перевод на другой ПК. Операция switchSessionDevice — игрок меняет место, сессия продолжается. IZI закрывает привязку к старому ПК (actualEndAt = now), открывает к новому. Оба ПК получают команду на reconcile. Счётчик времени не прерывается.

Завершение. Ручное завершение доступно оператору (разрешение SessionEdit) и игроку через приложение. При завершении IZI записывает actualEndAt, формирует итоговый чек и отправляет событие session_ended для аналитики и других модулей.

Отмена. Доступна только для сессий, которые не были запущены (actualStartAt = null). Требует разрешения SessionDelete. При отмене тариф возвращается на баланс согласно политике возврата тарифа.

Сессии закрываются двумя способами: автоматически или вручную.

Автозакрытие происходит, когда тариф исчерпан (coverageUntilAt < now), а автопродление выключено или не нашло подходящий тариф. Система записывает actualEndAt, ПК переходит в режим ожидания, а CRM уведомляет оператора через подписку в реальном времени.

Ручное закрытие — оператор или игрок инициирует endSession. IZI проверяет статус (сессия не должна быть в ENDED / CANCELLED), записывает время окончания и причину (endedReason: ManualByAdmin или ManualByPlayer), формирует итоговый чек по всем сегментам.

Чек включает:

  • все тарифные сегменты с фактическими временными границами
  • суммы по сегментам с учётом зонального ценообразования
  • вычеты бонусов, если игрок частично оплатил бонусами
  • итоговую денежную сумму

Возвраты после закрытия обрабатываются через заказ — политика возврата задаётся на уровне тарифа отдельно для каждого продукта.

Каждая сессия генерирует набор метрик для аналитики клуба.

Продолжительность сессии — разница между effectiveEndAt и effectiveStartAt. IZI хранит оба значения как вычисляемые поля представления (sessions_view), поэтому продолжительность всегда консистентна даже при нестандартном закрытии сессии.

Выручка за сессию — сумма всех транзакций тарификации, привязанных к сессии. Позволяет вычислить среднюю выручку за сессию как аналитическую метрику, отдельно от средней выручки за визит.

ARPU за сессию — выручка за сессию, делённая на количество уникальных сессий за период. Более точная метрика, чем ARPU за визит, для клубов, где один игрок играет несколько раз в день.

Загрузка зала — отношение часов сессий к доступным часам ПК за период. Рассчитывается из actualStartAt / actualEndAt всех сессий в статусе STARTED/ENDED на каждом устройстве.

Покрытие тарифа (coverageStatus) — операционная метрика для оператора: показывает для каждой активной сессии, насколько тариф покрывает оставшееся время. Помогает проактивно предложить продление до того, как сессия закроется по истечению.

Историческая аналитика сессий доступна в разделе «Отчёт по сессиям» в CRM, с фильтрацией по ПК, игроку, тарифу и дате; доступен экспорт для внешних инструментов.


Смотрите также: Тарифы и ценообразование · Зал в реальном времени · Бонус при пополнении · Что такое IZI · Мобильное приложение игрока

Механика сессий описана на основе продакшен-кода IZI X API (пакет sessions). Конкретные шаги в UI могут незначительно отличаться в зависимости от версии CRM и конфигурации клуба.

Частые вопросы

Что такое игровая сессия в IZI?

Сессия — это единица учёта игрового времени: привязана к конкретному игроку, ПК и тарифу. Вся тарификация клуба считается посессионно — пока сессия открыта, время идёт; когда закрывается — формируется чек. У одного игрока может быть только одна активная сессия на конкретном ПК в один момент времени.

Чем сессия отличается от заказа?

Заказ — финансовый документ: список купленных тарифов и сумма к оплате. Сессия — процесс игры: когда ПК запустили, сколько времени фактически прошло, на каком устройстве. Один заказ может породить несколько сессий (купили 3 часа, играли в два захода), а одна сессия всегда привязана ровно к одному заказу.

Как запустить сессию из CRM?

В разделе «Зал» находите ПК, выбираете игрока, выбираете тариф из купленных заказов и нажимаете «Старт». CRM создаёт сессию в статусе PENDING, затем сразу переводит в STARTED — ПК разблокируется. Весь процесс занимает секунды; никаких ручных действий на ПК не требуется.

Может ли игрок самостоятельно запустить сессию через приложение?

Да. Через мобильное приложение IZI игрок выбирает клуб, покупает тариф и запускает сессию самостоятельно — без участия администратора. ПК разблокируется после подтверждения. Этот режим называется самозапуском; в клубах с постоплатой сессия стартует сразу, оплата собирается при выходе.

Что происходит, когда оплаченное время заканчивается?

Система проверяет покрытие тарифа (coverageStatus). Если включено автопродление, ПК продолжает работать, а система автоматически продлевает сессию за счёт следующего доступного тарифа игрока. Если автопродление выключено и тариф истёк, ПК переходит в режим предупреждения, и кассир видит это в виде зала.

Может ли игрок продлить сессию, не вставая с места?

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

Что такое пауза сессии и зачем она нужна?

В IZI пауза представлена статусом ACTIVE — сессия существует с запланированным временем начала, которое уже наступило, но игрок ещё не нажал «Старт». После нажатия «Старт» сессия переходит в STARTED и начинается фактический отсчёт времени.

Можно ли перевести сессию на другой ПК?

Да, через операцию switchSessionDevice. Оператор в CRM или игрок через приложение указывает новый ПК — IZI закрывает привязку к старому устройству и открывает к новому в рамках той же сессии. Счётчик времени не прерывается, тариф остаётся прежним.

Как рассчитывается стоимость при смене тарифа во время сессии?

Каждый тарифный сегмент внутри сессии хранится отдельно (SessionPlayerTariff) с точными временными границами. Тарификация считается по сегментам независимо: первые 2 часа по тарифу А, следующий час по тарифу Б. Итоговый чек — сумма всех сегментов.

Что видит оператор, если ПК завис или перестал отвечать?

В разделе «Зал» у каждого ПК отображается coverageStatus сессии. Если ПК перестаёт выходить на связь через MQTT, его статус устройства меняется на «не отвечает». Оператор видит это сразу в виде цветового индикатора без обновления страницы.

Можно ли отменить сессию?

Да, но только до фактического старта (пока сессия в статусе PENDING или ACTIVE, то есть actualStartAt равен null). После того как игрок нажал «Старт», отмена недоступна — можно только завершить сессию. Для отмены нужно разрешение SessionDelete в CRM.

Как оформить возврат по сессии?

Возвраты обрабатываются через заказ, привязанный к сессии. Политика возврата задаётся на уровне тарифа: «вернуть остаток на бонусный баланс», «сжечь остаток» или «вернуть деньгами». Полный возврат доступен, если тариф не использован или использован частично в соответствии с политикой.

Есть ли суточный лимит времени на ПК?

Технического лимита на уровне сессии нет — сессия работает, пока тариф покрывает время или активно автопродление. Ограничения задаются через расписание тарифа (например, ночной тариф доступен только с 23:00 до 07:00) или через лимиты зоны клуба. Отдельного суточного счётчика в IZI нет.