[recovery mode] Как мы автоматизировали стрипушник на Walking street

9b64caeb31d73133f4c0e15cfdc714e6.jpg

Есть у меня хороший друг. И есть у него одно очень замечательное свойство — он владелец русского стриптиз клуба на walking street (кто не в теме это такая улица разврата и порока в Паттайе. 

И вот как то раз, сидя в его замечательном заведении, мы разговорились про особенности его работы. Жаловался что девочки постоянно скандалят из-за комиссионных, вечные склоки с кассирами и менеджерами которые забывают записывать ледидриньки, приват танцы и многое другое. Проявив заинтересованность выяснил как обстоит дело в его заведении. Гость, приходит в клуб. Девочки, подсаживаются к нему и далее начинается развод на ледидриньки, приватные танцы, в общем на все с чего девочка получает от клуба комиссионные и за счет чего клуб собственно и живёт. Обычно весь профит пилится 50/50. Учёт на какую девочку сколько гость потратил ледидрьньков, приватов, кальянов, стоп дэнсов ведёт администратор в бумажную тетрадь, куда прикалываются кассовые чеки за каждую так сказать услугу. Заказал гость для девочки пинаколаду — кассир пробил два чека, один в тетрадку, второй в стаканчик на стол гостю для дальнейшей оплаты.

c7a6933c7cd53d56543b4f9a1a638216.jpg

Проблема в том, что к концу рабочего дня (это часам к трём ночи) большинство девчонок мягко говоря не трезвы, кассиры устают, менеджер тоже и не в состоянии уследить за 30ю столиками, чеки могут потеряться, могут не пробить, девчонки могут не правильно посчитать, и в конце недели при расчётах возникают «тёрки» — меня обманули, было больше, и т.д и т.п.

Хех, промелькнула мысль, а что если автоматизировать? Чтобы в момент пробития чека на кассе заказ автоматически капал на счёт девочки и чтобы в режиме реального времени можно было мониторить что начислили, какая комиссия, и сколько денег уже накапало на счёт!  

Предложил другу — тот загорелся. Давай, говорит, попробуем.

И так — есть задача. Сообщить системе что за столом номер X гостя обслуживает девочка Y и все чеки которые будут пробиты на этот стол должны записываться на её счёт. Самая первая идея — поставить кард ридер на каждый стол и чтобы девчонки прикладывали RFID карты к нему. Компьютер на котором висит программа кассы подключён ко всем кардридерам и «понимает» за каким столом кто «залогинился»… profit. Но столов 30 штук. Самые дальние в 15 метрах от кассы. Тянуть пачки проводов… не наш вариант. Так не годится. нужно что то на батарейке и автономное чтобы информация по воздуху шла. Как кнопки вызова официанта. Стали искать есть ли беспроводные считыватели RFID — ничего вменяемого за адекватные деньги не нашли. И потом,   карты будут терять, забывать… головняк. надо использовать что то что всегда человек носит с собой. Биометрика тоже не катит — дорого. Отпечаток пальца было бы идеально если бы были недорогие, надёжные беспроводные считыватели. 

d5fb99cda99c1a61e0a3c77ae19e2d96.jpg

И тут осенило — у всех всегда с собой телефоны. Надо идентифицировать телефон находящийся за столом X и от этого плясать. Стоп…, а зачем нам идентифицировать телефон? Пусть телефон идентифицирует стол и сообщит об этом кассе!  Размещаем на столе маяк Beacon. Программа, запущенная в телефоне, по BLE сканирует маяки, маяк с наиболее сильным сигналом будет ближайший, а значит телефон находится за одним с ним столом! Читаем его ID, отсылаем в кассу, касса сверяется с списком столов и понимает что наша  Y сидит за столом X. Все чеки пишутся на неё. Если за столом две девчонки — придут в кассу два сигнала и чек поделится пополам. Идеально. 

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

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

32fefd95c599af18ae798cd56491c023.jpg

Ну и в чем мы прокололись и почему не взлетело? Во первых, блин, батарейка. Производитель обещал 1–2 года непрерывной работы, а по факту, уже через месяц батарейка просаживалась и маяк терял значительно в мощности, пошли ложные срабатывания, когда маяк соседнего стола с более свежей батарейкой оказывался сильнее родного. Пришлось вводить программу администратора чтобы тот мог в ручном режиме поправить стол и указать что X сидит именно за столом Y, а не Z. Во вторых оказалось что некоторые чехлы глушат BLE и телефон в чехле не видит ни одного маяка. Совсем. В третьих оказалось что даже телефон без чехлов может не ловить ни одного маяка если его держать в руке не правильно. А андроид при падении заряда батареи ниже 15 процентов любил снижать чувствительность приёмника и сигнал тоже не ловился, будто ни одного маяка нет в эфире. Самые беспроблемные оказались, ожидаемо, айфоны. Самые проблемные бюджетные андроиды и некоторые модели Samsung Galaxy. Ну, а добило систему тот факт что девчонки довольно быстро просекли что могу подключаться к любому столу незаметно для гостей и администратора, даже если они с этими гостями не сидят. Постояла рядом 5 секунд и ушла. Для столов за которыми уже сидит девочка с гостем эту проблему решили просто — если вторая хочет подключиться к чеку этого стола — первая должна её заапрувить через приложение или кикнуть. Введение чата с техподдержкой через приложение тоже проблем не решило. Девочки тупили. Забывали включить блютуз, забывали включить вайфай, меню и промо акции грузились через медленный 3G потому что у клуба очень толстые стены и сигнал слабый очень…

Таким образом мы поменяли шило на мыло — роль администратора и как следствие человеческий фактор из системы мы не удалили. Нужен непрерывный контроль чтобы не было читерства. Конечно можно было бы научить систему следить чтобы телефон постоянно был в зоне действия маяка и аннулировать сессию если он исчез из эфира больше чем на, допустим 30 секунд, но в силу специфики работы, девчонки регулярно уходят на танцпол покрутиться на шесте и значит исчезать из эфира тоже будут регулярно. Ну, а в феврале walking закрыли на полгода. 

© Habrahabr.ru