Как правильно спроектировать формат передачи рассадки и планировки зала для виджета бронирования мест?
Всем привет,
Есть евент-агенство с несколькими "своими" концертными площадками. Под концертной площадкой может пониматься любое заведение от обычного концертного зала, театра до стадиона и ресторана. У некторых мест рассадка фиксированная, у некоторых динамическая и меняется от мероприятия к мероприятию. Где-то рассадка простая, линейная, где-то сложно комбинированая: партер, амфитеатр, балконы. Есть места с рассадкой в два этажа.
Сейчас у закзачика есть инструмент только по продаже стоячих мест, типа "фанзоны", продажа билетов по рассадке осуществляется через сервисы партнеров с оплатой комиссии этим партнерам.
Заказчие преследует две цели:
1 Хочет продавать все свои билеты самостоятельно, т.е. хочет дать клиенту интерфейс, который с одной стороны предоставит информацию о рассадке и уже занятых местах, а с другой - позволит забронировать и купить свободные места;
2 Хочет подключить к своему приложению другие организации со схожей деятельностью и зарабатывать на комиссии с продаж.
Я буду делать бекенд. iOs/Android/Web-разработчиков еще нет. Моя глваная трудность сейчас заключается в том, что я не знаю как хранить информацию о планировке и рассадке. Что это должно быть? Несколько спрайтов на одном поле + JSON c информацией о том, как эти спрайти расположить на поле?
Я пытался консультироваться со знакомыми iOs/Android/Web-разрабами. Вебер предложил отправлять svg, на котором находятся все объекты + JSON c информацией об этих объектах. Мобильщики предложили либо захардкоить все экраны у них и не париться.
Если рассматривать решение, которое дал вебер, то оно, лично мне, кажется красивым, но это только теория и фактически он никогда ничего похожего не делал и возможно не сработает. Если рассматривать предложение мобильщиков, то хардкодить тут не вариант, потому что, во-первых захардкодить на стороне веба все-равно нельзя, а во-вторых нужно, чтобы мобилы сразу узнавали о новых рассадках/залах.
SkiaCharp на мобильниках для отображения мест и интерактива. На бэке плагин для каждого клиента. В админке тоже плагин, плюс несколько пресетов для новых клиентов. Хранение данных каждый клиент это набор зон, в каждой зоне svg превьюшка список мест и атрибуты места. В итоге получаем следующее: в админке один раз создаётся шаблон зала с привязкой места к эскизу, дальше клиент получает список мест с атрибутами , в мобильном все тоже самое. Что бы было понятней город , место проведения, зал, зона, места
Я впервые слышу про SkiaCharp, нагуглил только SkiaSharp, видимо это оно, но опять-таки не знаком с технологией. Мне сейчас главное понимать, какие данные будут ходить по сети между мобилкой и беком. Из вашего оттвета я делаю вывод, что это будет:
1 Одно svg-изображение c эскизом зала;
2 По одному svg-изображению на каждый тип места. Под типом я имею в виду вариатовность самих мест, например вип-кресло, обысное кресло.
3 Атрибуты мест (JSON?)?
3.1 Координаты места относительно эскиза зала;
3.2 Занято/свободно или "выбрано текущим пользователем";
3.3 Цена места;
3.4 Прочие атрибуты.
Только как быть с браузером? SkiaCharp это чисто мобильная технология или в браузере тоже можно отрисовать?
ksimmi, SVG поддерживается браузером нативно, так что в общем то и не нужно рендерить для браузера.
Кроме того если использовать WebView то и на мобильнике не нужно будет что то делать, просто показывать страницу.
2 По одному svg-изображению на каждый тип места. Под типом я имею в виду вариатовность самих мест, например вип-кресло, обычное кресло.
Это как атрибут вынесенный выше, "цвет штанов" можно дифференцировать тарифными планами.
3 Атрибуты мест (JSON?)?
Их в общем то не так много. Я бы предложил следующий вариант:
id - идентификатор в зоне
row - логический ряд
col - логический столбец
price
x - физическая привязка для экрана
y - физическая привязка для экрана
isBusy
meta - дополнительные данные для каждого клиента
Я про SkiaSharp интересовался. Хочется либо технологию, которая будет работать на всех трех платформах: iOs, Android, браузер. Либо, сделать решение для браузера и обернуть в WebView.
Это как атрибут вынесенный выше, "цвет штанов" можно дифференцировать тарифными планами.
Я имел в виду буквально другое отображение, а не просто "другой цвет". Например, есть обычное место, которое отображается в один ряд и их 15 в ряду, а есть вип-место, которых всего 6 в длину ряда, и каждое по ширине в 2 ряда. Обычное место - кресло, вип-место - диван со столом.
Есть концертная площадка в виде кафе/ресторана, куда приезжают музыкальные группы, а публика ужинает под их выступление. Там есть Столики на 2-х, 4-х, 6-х. Где-то стулья, где-то кресла.
Спасибо за советы, если SkiaSharp можно использовать в брауере как mvp, то это то что нужно.
ksimmi, В браузере не получится, но как мне видится в браузере несколько другие задачи и инструменты.
Мобильное приложение оно больше для отображения результата.
Даже svg по большему счету не нужно. Просто отрисовка условных "квадратиков" над одной подложкой, конечно подсветка контура было бы круто, но не так уж и важно.
ksimmi, Дизайнеры умеющие в UX крайне редко встречаются.
В вашем случае, например есть несколько кейсов.
1. Редактирование зоны.
Однозначно не частая операция, только в браузере, скорее всего кастомный редактор. Типа онлайн векторного редактора. Добавляет подложку, тип кресла, иконку для типа кресла, подсветку. Соответственно привязываются и места.
2. Интерфейс заказы билетов для кассира
Требования быстро все заполнить, ткнул мышкой, вбил контакты клиента, зафиксировал.
Единственное отступление это часть клиентов типа ночного клуба, там мобильное приложение и фиксация на входе.
3. Интерфейс администратора зала
Тут в общем то кроме назначения цен. евентов и просмотра статистики ничего не нужно.
Но самое главное что мобильная версия должна быть с уведомлениями и возможностью разрулить все по быстрому зарезервировав места, красот не нужно, только информационная картинка
Владимир Коротенко,
1 Это настолько нечастая операция, что я не хочу делать интерфейс редактирования. Хочу захардкодить просто все концертные площадки, со всеми вариантами рассадки, если она вариативна. Пользователь админки просто будет выбирать под конкретное мероприятие рвссадку и все. Когда появтяся партнеры, то мы также будем хардкодить все их варианты рассадки, предварительно согласовав.
2 Для кассира ничего делать не надо. У них либо уже есть свой софт, который работает с той же БД, что и наш софт Тут скорее будет нужна интеграция, чтобы наши системы знали о уже купленных билетах друг друга. Сейчас достаточно только проверки билетов по QR-коду.
3 Это не срочно.
Владимир, спасибо ваш совет очень близок к тому, что мне нужно.
Владимир Коротенко, Даже не знаю, что сказать. СПАСИБО! Как только проект перейдет к более активной фазе - обязательно напишу. Тогда еще вопрос: в этом вашем "похожем" все-таки было решение браузерное? Если да, то какое?
ksimmi, Браузерная часть это инфоматы для покупателя. Там все вообще просто. Оператор в своей программе выбирает зал, на инфомате подгружается Angular вьюшка , сверху логотип, время сеанса, название фильма, внизу легенда, центральное поле это зал. После выбора оператором в своей программе высвечивается место и сумма. Подносит карту к терминалу, выводится сообщение: Спасибо за покупку. Желаем приятного просмотра.