В блог

Кейс. Как мы баскетбольному клубу билетную систему делали.

«вряд ли за неделю у них получится такое сделать»
(с) собеседник заказчика

Предыстория

Наш клиент, компания 12Talk, занимающаяся привлечением болельщиков на спортивные мероприятия, подписала контракт с баскетбольным клубом «Буревестник». В рамках контракта, необходимо было так же заниматься реализацией билетов на баскетбол.

Основные игроки на рынке билетных систем либо не подходили по цене, либо по срокам, либо плохо интегрировались с онлайном, а это должен быть один из основных каналов продажи.

Так как нужно было делать не только онлайн-продажу, но и оборудовать полностью: кассу, точки контроля, печать билетов и абонементов — мы сомневались в том, что уложимся в срок, поэтому изначально должны были делать только дизайн, с этим проблем не возникло.

Схема

Места

Для технической реализации, был выбран подрядчик, имеющий опыт в подобных задачах, но спустя 1.5 месяца работы (за 8 дней до старта продаж) мы увидели результат, который был крайне далек от дизайна и от технического задания.

[мы бы его показали, но вряд ли это разрешено по договору, да и там смотреть особо не на что]

После короткого разговора с заказчиком по телефону стало понятно, что вариантов других нет — делать будем мы. У нас была одна неделя и отсутствие опыта в разработке билетных систем.

Юзер стори

Перед началом работы – формулируем задачу в виде ситуаций, в которых могут оказаться пользователи билетной системы:

  1. Главное — клиент покупает билет. Ему дается что-то (решили, что это штрих-код) в каком-то виде (бумага, картинка на телефон, смс). При проходе на арену, контролер считывает штрих-код, система проверяет есть ли такой билет и не проходил ли он еще сегодня и сообщает эту информацию контролеру.
  2. Клиент покупает билет в кассе. На руки он должен получить красивый билетик со штрих-кодом, который ему распечатает кассир из своего удобного интерфейса.
  3. Клиент может купить билет онлайн. Тогда он получает электронный билет и изображение штрих-кода на телефон. Само-собой база купленных билетов должна быть одна, чтобы не было коллизий (одновременной покупки на сайте и в кассе), при этом в онлайне он может оплатить билет не моментально, поэтому мы бронируем место на 20 минут, за которые любой сможет довести операцию до конца (забавный факт – в среднем, на оплату у человека уходит 3,5 минуты).
  4. Клиент может купить как билеты, так и абонементы. Согласовываем с клиентом, что при покупке 5 и более билетов будет выдаваться карточка-абонемент. То есть могут быть ситуации, когда один штрих-код = несколько игр.
  5. Кассир. Должен уметь делать всё тоже самое, что клиент, плюс еще кое-что (удалять билеты, распечатывать «приглашения», делать скидки). Получается, кассиру нужно оборудование для печати билетов и абонементов. Плюсом ко всему каким-то образом для этого оборудования готовить данные. 
  6. Контролер. Должен иметь считыватель штрих-кодов и интерфейс просмотра результатов. 
  7. Ко всему этому добавляются скидки. Школьник? Скидка! Идете парой? Скидка! Всей семьей? Еще больше скидка! А если вы семья, где есть 2 школьника, да еще и купон достали – вообще 70% получается. Короче, на систему скидок заказчик не поскупился.

Онлайн

Верстка и программирование базового функционала онлайн-продажи на сайте заняли 3 дня. Небольшая сложность была в том, что кроме билетов там можно купить и абонементы. А вот большая сложность состояла в том, что клиент хотел гибкую систему скидок, промо-коды, базу клиентов с гибкой фильтрацией и возможностью рассылки смс-сообщений и писем.

Глаза боятся, а руки делают. Дизайнеры – играют в контролеров и болельщиков с билетами, продумывая наиболее удобный вид для электронного билета. Рассматриваются все крайние ситуации:

— Ну, если 1 билет на 1 игру, то всё просто.
— Если четверо идут на 1 игру, то тоже просто — четыре штрих кода на листочке.
— Не, тогда путаница будет. Вдруг они по отдельности пойдут — как понять какой код «пикать»?
— Пусть будет на одного человека – один билет.  Но надо обязательно указать там что за матч, потому что если я куплю 2 билета на 2 игры, то хорошо бы не запутаться.
— Нормально, у тебя будет просто 2 бумажки – в каждой по 2 игры.
— Тогда продумай, чтобы там влезло.. сколько там домашних игр? 20!

Тем временем программисты внедряют скидки льготникам, парочкам, семьям.

Скидки

— Так если они семья, то просто 3%.
— Если идет пара студентов, то скидки перемножаются.
— Караул. Если семья, где двое взрослых, один студент и один школьник, да еще и с купоном, надо всё учесть.
— А если идет взрослый и школьник, и ставит что они пара?
— ээ…. Милицию вызываем?

Все покупки аккуратно складываются в личный кабинет пользователя и внутреннюю базу данных для дальнейшей работы.

Модуль для рассылки смсок и писем – ничего необычного, всё прошло гладко.

Оффлайн

«Оффлайн» в кассе условный. На самом деле, кассир работает на том же сайте, но под своим защищенным аккаунтом и слегка измененным интерфейсом (убрали всё лишнее). Для надежности, заказчик проводит в кассу резервный интернет-канал (тьфу-тьфу-тьфу, ни разу не пригодился).

Дальше начинается самое веселье. Распаковываем принтеры. Ошибочно решаем, что абонементы печатать сложнее (все-таки на карточках пластиковых), поэтому начинаем с них. Подключаем чудо-машинку к компьютеру. Хорошая новость, Zebra zxp3 – это всего лишь принтер со своим форматом бумаги, а значит нам достаточно сформировать PDF-файл с информацией для абонемента, после чего кассир нажмет «энтер» и свершиться магия. Пара пустяков, через час модуль был готов и мы опробовали его на тестовых абонементах (дизайн которых тоже делали мы).

Абонементы

Билетный принтер CUSTOM TK302. Ну… Это, пожалуй, был самый длинный половой акт с принтером за нашу жизнь. Два дня и две ночи мы тратили пробники билетов, пытаясь понять как заставить эту чудо-машину отрезать билет в нужном месте.

Чтобы вы понимали – билеты представляют собой ленту из 500 штук, перфорированные в двух местах (стык между билетами и линия корешка, который остается у кассира). Для того чтобы умный принтер распознал где кончается один билет и начинается второй, на билетах делают особую пометку с обратной стороны – обычно это или полоса, или черный квадрат).

Билеты 1 сторонаБилеты 2 сторона


Основная проблема была в том, что принтер не хотел отрезать билеты в нужном месте. Ну то есть вообще не хотел:

Косяки принтера

Для начала, в драйверах не оказалось формата билета нужного размера. Ну хорошо, мы добавили свой. Принтер в упор не хотел видеть полоску и ориентиром для отреза билета был просто размер листа, при этом погрешность составляла 1 миллиметр. Казалось бы – мелочь, но спустя 10 билетов сдвиг на 1 сантиметр выглядел уже не смешно.

В эти непростые отношения с машинами мы очень хотели привлечь поддержку производителя, но дело было в ночь с субботы на понедельник, поэтому приходилось делать всё самим. В инструкции к принтеру мы нашли два раза упоминание и опровержение его возможности работать с любым размером билета.

Билеты на баскетбол
Да, мы даже нашли ноутбук с windows, чтобы тестировать печать

Следующим сюрпризом оказалось, что полоска на обратной стороне билета была толщиной не 5 мм (как было заявлено типографией и выставлено нами в настройках), поправили настройки на поиск чего угодно толще 2 миллиметров – не помогло.

На утро третьего дня, когда проснулась техподдержка, нам открылась правда. Представьте наше удивление, когда оказалось, что если при установке драйвера выбирать вариант FULL (полный), то настроек будет сильно меньше, чем в варианте STANDART (стандартный). Так же, от производителя был получен комплект утилит, позволяющий подчищать настройки на системах семейства windows, так как штатных средств там для этого нет.

Заветная галочка «ориентироваться на полоску на задней стороне билета» вызвала аплодисменты в офисе.

Подготовленный макет для билета был успешно напечатан в «чистовом» виде, оборудование собрано в коробки и срочно доставлено в кассу.

Касса

Итого
При оформлении билета кассиром, формируется либо PDF-макеты для билетного принтера (если куплен билет на 1–4 игры), либо PDF-макет для абонемента. Сразу же открывается диалоговое окно печати, кассир просто нажимает «ввод» и происходит магия.

Абонемент

Билет

Контролеры

К моменту окончания войны с принтерами, вся инфраструктура для контролеров была готова.
В работе контролеров есть 2 основных момента:

  1. У них работает тот же самый ресурс с отдельными правами доступа.
  2. Им нужна мобильность, т.к. место проверки билетов могло меняться.

Решение было очевидным – мы выбрали и купили 2 планшета за 10 000 рублей на windows 10, в usb-порты воткнули считыватели (технически, это просто клавиатура, которая при считывании штрих-кода вводит нужные цифры и нажимаем “ввод”), открыли на все окно браузер и провели несколько экспериментов – всё работало идеально. 

Был один нюанс – пришлось заменить считыватели на более продвинутые, так как не все считывают информацию с экранов телефонов, а часть людей приходят именно так – показывают штрих-код на экране.

Для контролеров были реализованы разные полезные фишки:

  1. Если человек покупал билет онлайн, то контролер на экране видел имя.
  2. Если болельщик использовал промо-код при покупке, то это так же видел контролер.
  3. Если по этому билету уже проходили на матч, то на экран выводилась информация о всех проходах с точным временем.

Итого

В день запуска проекта – сразу же пошли продажи. Мы, как техподдержка, даже немного заскучали, поводов обратиться к нам с проблемами у людей практически не возникало.

Время на обучение кассира – 20 минут, контролера – 3 минуты.

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

– Покажите мне всех, кто был на 3 играх в 2015, но пропустил первые игры в 2016.
– Покажите мне всех, кто билеты купил, но не пришел
– А тех, кто опаздывает на игры более чем на 10 минут?
– А еще тех, кто был с детьми, для них сделаем мероприятие отдельное.
– А теперь выведите мне сравнение продаж через сайт в ноябре и декабре.

Легко!

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

Само-собой, мы подумали о надежности. Постоянное зеркалирование данных, отказоустойчивый сервер и грамотные политики безопасности доступа.

Компания 12Talk уважает принципы доступности информации, с удовольствие поделимся некоторыми цифрами с их разрешения:
  • 573 продажи за первые 20 дней работы
  • 26% билетов покупается через интернет 
  • 3,5 минуты – средняя продолжительность покупки онлайн
  • 12% людей воспользовались различными купонами на скидку
  • 10% покупаемых билетов – для школьников
  • Срок программирования и внедрения всей системы – 8 дней :)

Вывод

Слабоумие и отвага Если есть четкое представление результата, слаженная работа, опыт управления и желание разбираться в чем-то новом – любая проблема становится просто очередной решаемой задачей.

Особо хотелось бы поблагодарить за участие нашего неповторимого дизайнера Александра Тетерина, крутого программиста Сергея Пантелеева, всю нашу команду за поддержку и, со стороны заказчика, Марка Пухова – за адекватность и доверие.

Хочу проект
Закрыть