PerfEvents
525 subscribers
21 photos
13 links
Результаты турниров / TourInfoBot / проект PerfectEvents

Блог о развитии проекта проведения танцевальных ивентов и рассылок результатов турниров
Download Telegram
В выходные прошли SDC и Armenian Cup.

Похвастаюсь достижениями 😎

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

2. Первый турнир, проведенный через устройства Apple (у счетной на Armenian Cup был Мак 👨‍💻). На обычных турнирах используют эксель с очень навороченными макросами - даже на винде эксель периодически крашится, а на других устройствах не может обработать файлы совсем. Сайт снимает такие ограничения.

3. Первый турнир проведённый счётной, с которой я не виделся в реале и даже не созванивался. Просто написал инструкцию, а считающий специалист сам прошел по ней и всё попробовал заранее в тестовом турнире. Судьям тоже вживую/по видео не нужно было рассказывать, как пользоваться бегунками. Судьям и счетной - респект! 😊

Дополнительно договорились на проведение через perf.events ближайших конкурсов АСХ в Москве) Bring The Action, Jack-n-Jill Only и DanceVision.

А там
- Dance Tour от организаторов Armenian Cup
- Динамиада и HD Cup от организаторов JnJ Only
- MusicUp Competition от организатора SDC
Схема проведения этих турниров пока не согласована, но, кажется, есть перспективы выполнить цель "10 турниров за год" с опережением графика

А пока до ближайшего турнира надо учесть фидбек по электронным бегункам (добавить 100500 настроек, т.к. у судей иногда взаимоисключающие хотелки) и добавить интерфейсы для ведущего и построителей заходов. 🤓
Нравится мне аналитика 🧮

На сайте стоят счётчики посещений (когда пользователь открывает страницу, счетчик загружается вместе с ней и отправляет запрос на сервер Яндекса/Гугла, мол, меня загрузили и серверы считают такие запросы).

Этот месяц оказался рекордным по числу уникальных пользователей - 1600 😎
А в неделю, когда на выходных было два конкурса, число уников за неделю перешагнуло 1000 человек (картинка в посте - график уников по неделям)

Не сказать, что эти цифры на что-то влияют (влияли бы, если бы на сайте была реклама с оплатой за показы 🤑), но приятно :)

Это с одной стороны, а с другой - в крупнейших хастловых ТГ-каналах, известных мне (куда идёт рассылка результатов ЧР, например), не более 2000 подписчиков, значит и для сайта с хастлоивентами потолок будет того же порядка (не десятки тысяч посетителей точно).

Хотя... Если проведение турниров упростится и хастл расширит географию, почему нет)

Кстати, тут возник вопрос/идея. Как вам возможность выбирать заранее себе номер на турнире?
Полгода назад начал замечать пользователей, которые регистрируются на почту написанную с заглавной буквы.

Вроде Vitaly@mail.ru, а не vitaly@mail.ru
Странно, но мало ли кто как почту заводит/указывает. Но вот в последний месяц периодически стали приходить сообщения от людей, что они не могут залогиниться и сброс пароля не помогает.

Полез разбираться и оказалось, что Vitaly@mail.ru и vitaly@mail.ru это вообще говоря разные логины (ещё с первой беты, когда логин был не почтой). А ещё оказалось, что услужливый браузер на мобилках сам при вводе первую букву делает заглавной 🤖

В итоге человек со смартфона регится как Vitaly@mail.ru, логинится как Vitaly@mail.ru (браузер снова делает букву заглавной), а на компе вводит vitaly@mail.ru и система его не пускает... 😾

Что с этим делать? Поправить поле ввода логина, чтобы убрать простор для самодеятельности мобильного браузера) Это сделал.

А вот что делать с существующими пользователями пока не ясно - хз, кто намеренно использовал заглавные буквы, а кто - нет. Кроме того нельзя сделать скрытую замену вводимых символов на нижний регистр (что бы пользователь ни вводил, мы на сервере всё переводим в нижний регистр и так храним), т.к. есть какое-то соглашение почтовых сервисов о том, что если у пользователя почта Vitaly@mail.ru, а мы шлём что-то на vitaly@mail.ru, то можно такие письма блокировать.

Самым правильным было бы сделать рассылку по таким email от лица сервиса с рассказом о проблеме и кнопкой "перевести логин в нижний регистр", но это отдельная разработка, так что руки не уверен, что быстро дойдут.

А пока я:
- Сделал 100500 настроек для электронного судейства (чтобы каждый судья мог выбрать удобный интерфейс). Вчера добавлял ещё настроек 🤓 Особо интересно будет посмотреть настройки судей посли пары турниров - какие интерфейсы и фичи нужны (включены в настройках), а какие - нет.
- Почти доделал интерфейс построителей заходов и списки заходов для ведущего и зрителей. К JnJ-Only будет готово 😊

Следующим на очереди будет вывод заходов/инфы о следующей номинации на экраны телевизоров/проектора. Тут появилась классная доп.идея - выводить QR-коды со ссылкой на ТГ-канал с результатами и с заходами на сайте. Буду разбираться с генерацией QR-кодов 👨‍💻

И где-то потом возможность брони номеров на турнире (в прошлом посте большинство высказалось за то, что это будет здорово)

А вот судейство ТТД при анализе оказалось слишком многогранным - иногда в отборах ставят баллы, иногда места, иногда "места, но можно поставить несколько одинаковых мест"; иногда партнерам надо выходить повторно, получается, что им надо два электронных бегунка, а ещё финалы, в которых судятся танцоры отдельно, да ещё и разные судьи для партнеров и партнерш... В общем, пока отложил 😌
На выходных прошел JnJ-Only, первый московский турнир со 100% новым электронным судейством 😎
На деле получилось 98%, но не суть)

Ещё на JnJ-Only попробовали связь между построителями заходов и ведущим через телеграм. Для построителя оказалось супер-удобно, а ведущему приходится переключаться между браузером и телеграмом. В общем, кажется надо будет делать какие-то пуш-уведомления и систему связи прямо на сайте. Но пока это не первый приоритет.

Про бронь турнирных номеров - подготовил MVP (минимальный полезный прототип) для бронирования. Будет тестовый запуск на Dance Tour 😇 Участники могут выбирать номера заранее - это прямо очень прикольно получилось, аж самому захотелось выбрать)
Ещё есть планы сделать такую бронь на один из ближайших московских турниров, но поглядим.

Пока в реализации всё суперпросто - участник выбирает номер при предварительной регистрации и получает его (счетная видит выбранный номер).

Ну а впереди много веселья на стороне разработки начиная от ограниченного времени брони номера - чтобы номер закреплялся за участником на сутки/двое и, если участник не внёс оплату за участие, номер освобождался; и заканчивая возможностью устанавливать цены на номера. Чтобы, например, 7 или 1 или 13 стоили каких-то денег, 100 или 666 стоили других, а иные номера были бесплатными.
А на всё это ещё накладывается требование к возможности замены номеров (и пересчету оплаты), резервирования/назначения отдельных номеров со стороны организаторов (чтобы 69 не любому мог достаться 😅 М-м...

В общем, пока надо доделать бронь номерков и её настройку для оргов, а ещё сделать вывод на экраны ТВ/проекторов всякой полезной инфы от расписания заходов до мест в финале 🤓
Новый рекорд) регистрация идёт на пять ивентов/турниров одновременно 😎

Расширилась как география, так и диапазон масштабов 🤩
Так скоро и фильтры по географии понадобятся)

А последние недели плотно работал над функционалом счетов (инвойсов). Чтобы участник регистрировался, орги проверяли выбранные пассы/проясняли прочие вопросы и выставляли счёт. А участник затем счёт оплачивал. Стандартная схема для большинства ивентов с пассами, пришло время её автоматизировать 🤖
Кто хочет посмотреть, как это выглядит со стороны участников, гоу региться на HD Fest 😄

А сейчас последние часы регистрации на DANCEVISION, это субботний конкурс, где будет первая проба показа инфы на экране и возможность выбрать себе номер при регистрации.
Из забавно-неочевидного - казалось бы, есть форма, в которой счётная проверяет/назначает номинации и номерки. Для турниров с предбронью номера я добавил, чтобы поле номера заполнялось согласно выбору участника; ну и на всякий случай сделал проверку того, что номер, который хотят назначить не забронирован другим участником. Вроде бы всё? Ан-нет, оказалось, что такой интерфейс создаёт для счётной весёлую (не очень) игру-угадайку 😈

Когда к тебе пришел участник без регистрации, перед тобой сотня номерков на столе и ты начинаешь вводить их по одному и спрашивать систему, не забукан ли номер 😓
В общем, хорошо, что Аля задала правильный вопрос и было время дополнить интерфейс показом свободных номерков 😊 надеюсь, эта тема с выбором номерков и зайдёт участникам, и не перегрузит счётную 😇
Прошел почти месяц с предыдущего поста 🗓

За это время успешно прошли и DanceVision, и DanceTour - два конкурса с бронью номерков. По впечатлениям счётной и оргов, искать/выдавать заброненые номерки в массовых количествах непросто... Впечатления участников же самые положительные 😇

Надо всё же будет собраться и сделать возможность платной брони (платность/цены/диапазон номерков будет на усмотрение оргов, конечно).
Если это получится, выйдет интересный эффект - само использование системы PerfEvents сможет очевидно/явно повышать выручку организаторов. Прям отдельная строка будет - выручка с номерrов 🤑 Ещё один аргумент к использованию 🥸

А ещё я тут писал про число уникальных посетителей за июнь в 1600 человек... Так вот, писал я это 22 июня и за остаток месяца число уников дошло до 2100. И в июле было 2100. И в августе уже 2000 - скрин метрики вверху сообщения. Приятное такое летнее плато 😎

За прошедший месяц я добавил возможность проводить финалы с неравным числом партнеров и партнерш (кто-то станцует больше одного раза в разных парах). Это может пригодиться для нерейтинга/инвитейшенл.

И как-то на волне большей гибкости в проведении нерейтинга пришла идея зрительского голосования. Идея не моя, но в хастле такого не было (и в вкс не видел).
Заключается в том, что финалистов оценивают зрители. Ну а что, электронные бегунки для финалов уже готовы, надо только электрнно раздать их всем присутствующим 🔥🔥🔥

А потом собрать и обработать оценки, конечно... Подсчет скейтинга по местам, пришедшим от сотни судей. Как тебе такое, Илон Маск? 🤖
И это может как заменить, так и дополнить места от аттестованных судей (приз зрительских симпатий, например) 🏆

И это же будет некоторый шаг в сторону проведения ТДД через систему ☺️

P.S. за неделю до Пурги голосование не успеть сделать, хотя там бы оно точно зашло, но к MusicUp - реальная цель🤞
Ну и для истории, новый рекорд - сразу 6 ивентов на главной 😎 (отображаются только предстоящие/идущие мероприятия)
Тээкс, прошел месяц 🗓
Но вообще-то я обленился и надо посты раз в неделю хотябы писать 😓

Достижения сайта:
- новый рекорд посещаемости - 2700 "уникальных" человек за сентябрь, а вчера было 600 за день (последний день регистрации сразу на 3 конкурса), тоже рекорд 😎
- турнир в новой стране - "Бульбакубок" догадайтесь где)) Уже завтра
- ну и по городам РФ продолжаем расширяться) +Калининград 🌟

Развитие и фичи:
- сделал зрительское "голосование". А на самом деле судейство) Т.е. зрители выбирают не одну лучшую пару финала, а расставляют пары по местам - скейтинг более устойчив к "накруткам", чем обычное голосование большинством. Будет интересно проследить за динамикой/востребованностью этой фичи. Но я могу легко представить фановые номинации, где финал вообще судьи не судят, а всё отдано на откуп зрителям.

- апгрейднул интерфейс ведущего - теперь построитель захода отмечает присутствие/отсутствие людей и ведущий у себя это сразу видит (раньше у построителя была кнопка, которая слала список отсутствующих в ТГ ведущему и тому приходилось переключаться из браузера в тг, а затем обратно). Должно стать удобнее.

- сделал печать инфы на конвертах, как на НордКапе и автоматическое назначение номеров участникам (чтобы было что раскладывать по конвертам). Ожидаю первое использование уже на HD в октябре (осталось только с оргами согласовать 😃).

- добавил платную бронь номерков! Надеюсь, это повысит популярность бронирования среди оргов)

Что дальше?

Уровни мастерклассов выкатить и инструкции надо бы обновить/написать) А то функционала всё больше и сообщения оргам с описанием того, что система может - всё длиннее)
Уф... Это был длинный день ☀️

4 конкурса по хастлу (и немного по ВКС 🫣) в один день, из них 3 через сайт (Москва, Новосибирск и Минск) и ещё один только рассылка результатов в ТГ (Екатеринбург). Хех, а я весной ставил цель 10 турниров за год через сайт провести 😎

День начался с сообщений в 5:30 утра в вк (в Новосибе +5 часов и началась регистрация на месте), а затем звонком в 7) Но я морально был готов и ложился спать пораньше - очень много нововведений с последнего конкурса и что-то могло сломаться... Но первая проблема была - не отправлялись заходы в ТГ.
Оказалось, что орги забыли в системе указать, в какой канал слать заходы (но сайт тоже молодец - весело сообщал, что всё в порядке и заходы отправляются). Починил и причину, и проверку. Но спустя полчаса не отправились уже результаты и тут это следствие моих ноухау 🙈

На самом деле помимо крупных изменений, которые я описал во вчерашнем посте, случается и много мелких доделок. Например, я сделал, чтобы всякое для жеребьёвки можно было печатать не только в финалах, но и в отборочных (для всяких Джекпотов/ДнД Классик) или чтобы можно было отправлять состав финала в телеграм в фиксированном порядке (без сортировки по номерам) и писать, что это порядок выступлений, а не просто состав.
Это второе небольшое изменение оказалось внезапно несовместимым с рассылкой результатов... Ну т.е. я забыл совместить) Но быстро починил.

Потом по ходу дня ещё поправил интерфейс ведущего - ему ведь надо вызывать не только тех, кого не хватает на построении, но и других людей (по просьбе главного судьи, например). Так что удобно, чтобы ведущий у себя в списке мог делать пометки... В общем, добавил функционал заметок - можно кликнуть по участнику и ввести текст; текст отобразится рядом с ФИО участника и позволит не забыть что-то важное.

Я немного боялся, что от оргов и счетных 4х турниров может быть очень большой поток вопросов/запросов, но они молодцы и со всем разбирались самостоятельно (иногда с инструкцией). В Минске вообще это первый турнир для организаторов, счётной и большинства судей 🔥

В общем, я доволен 😇, можно готовиться к HD через две недели. Ух, полноценный фест, полноценно через perf.events!
Написал в прошлом посте, что надо бы писать чаще, чем раз в месяц и пропал почти на два)) Белиссимо 🤌 В психологии наверняка должен быть термин для такого))

На самом деле в эти два месяца шла работа по подготовке всякого для крупных ивентов 🧑‍💻

В частности добавил функционал промокодов. Теперь организаторы могут заводить автоматические скидки на пассы и какие-то ещё услуги. Участник вводит промокод и цена для него меняется. Да здравствуют скидки! 🎉🎉

Сразу, правда, возник вопрос - а что если участник заплатил, а потом узнал, что мог использовать скидку? Или наоборот - использовал промокод, к которому не должен был иметь доступа (скидка регионам, например)? 🧐

И пошли фундаментальные изменения) В общем, у участника появился "баланс" и возможность иметь долг/переплату. Собственно, пользователи на странице своей регистрации теперь могут видеть на какую сумму они нарегистрировались и сколько заплатили.

Приятным бонусом к этому стала возможность для участников переносить оплату с одной номинации на другую. Например в декабре участник зарегился в БГ на Нордкапе, оплатил участие, а затем набрал баллов и перешел в Райзы. Участник может сам, без помощи оргов дорегистрироваться в Райзы и перенести оплату номинации с Бг на Рс. Организаторам останется только выразить благодарность такому сознательному участнику 😇)

Дополнительно сделал возможность в парных номинация брать оплату за пару целиком с партнера (или целиком с партнерши для каких-нить рутин ПроАм). Вкупе с возможностью переносить оплату с одной номинации на другую, это добавит гибкости и в номинации типа Джекпота и Стриктли. Если вдруг с текущим партнером/партнершей выступить не получается, то для партнерши вообще ничего в регистрации менять не надо - новый партнер сам зарегит и оплатит; для партнера тоже все решается без привлечения оргов - регишься в новой паре и переносишь оплату со старой пары на новую. 💃🕺

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

Last, but not least - в эти выходные пройдёт первый нехастловый ивент через PE! Кубок Ивары по Бачате) расширяем горизонты!

Ну а мне предстоит подправить рассылку результатов в ТГ - классы и номера АСХ танцорам Бачаты видеть ни к чему)
Последний день перед двумя конкурсами. Почему бы не выкатить обновление чего-то важного? 🥸

Изменил всякое с судейством и заходами и вроде бы протестил)

Добавил для счетной опцию распределять людей по заходам равномерно согласно крестам предыдущего тура (это в дополнение к существующим вариантам: равномерно по уровням ⚖️, подряд по номерам и случайно 🎲)

Судьям дал возможность изменять отправленный бегунок до того, как счётная его выгрузила к себе. Может быть полезно для судей, которые после первой мелодии последнего захода уже всё поставили и отправили, а затем вдруг кто-то упал/совсем уж накосячил 🫣. Ну или наоборот блеснул музыкальностью 😁

А ещё из интересно-неочевидного - заходы принято делить так, чтобы число пар от захода к заходу отличалось не больше, чем на 1. Например, если есть 10 пар и 3 захода, то распределяют 4-3-3, а не 4-4-2.
В результате в ДнД бывает часто, что в первом заходе пар 7, т.е. судье надо оценить 14 танцоров за две мелодии, а к последним заходам и пар становится 6, и партнёров вызывают второй раз, так что оценить по сути надо только 6 партнерш 💃. Получается дисбаланс, который я поправил) Теперь счётная может помещать побольше людей в последние заходы, а в первые - наоборот меньше. Если встретите такое на турнире, это не баг, а фича - чтобы судьям было чуть проще судить 😇
А пока все на ЧРе совершенно 🔥 огненно 🔥 танцуют 🔥, я улучшаю аналитику PerfEvents 🥸

После турнира по бачате долго не сводился баланс (или "долго сводился"? 😄) и приоритет улучшений, чтобы можно было видеть списком, кто за что и сколько заплатил, вырос.

Раньше орги видели графики оплат/регистраций по дням (как на скрине), статистику рег.в номинации и оплат всякого. А вот, например, кто участвовал в Bg01 и сколько заплатил - только в отдельных карточках участников.

Сейчас можно будет видеть и это, и:
1. Статистику регистраций оплат товаров/услуг. Например, чтобы заморозить покупку пассов для партнеров/партнерш определенного уровня, если ожидается слишком уж большой дисбаланс на классах 🙈. Теперь видеть дисбаланс уже можно, замораживать - в планах)
2. Использовавших промокоды участников (надеюсь, скоро пригодится)
3. "Бесплатных" участников (волонтёры / люди, выигравшие пасс)
И многое-многое другое)

В общем, добавляю фишек для полноценного проведения ивентов 😇
Вчера закончился ЧР, а сегодня открылась регистрация на НордКап ☺️

Даа, на perf.events! 😎

Тут бы пуститься в воспоминания, как я 10 лет назад смотрел трансляцию с НК и думал: "вот бы туда съездить", потом ездил и это были нереальные впечатления, а теперь вот... Делаю систему, через которую будет проходить айтишная часть НордКапа 🥹 чтобы у других впечатления были ещё лучше 😇

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

Как достижение - за первый, "ажиотажный" день регистрации (можно выбрать красивый номер, некоторое время можно было успеть в основной состав Джекпота) особо ничего не сломалось 🤩
По отзывам, у сервиса, принимающего платежи, было больше ошибок/проблем, чем у perf.events за это время 🥸

Но не меньше ещё предстоит доделать... Ближайшие 3 месяца скучно не будет точно 😆
Давно ничего не постил, а обновлений на сайте за последнее время вышло прилично. Из существенных:

- Добавил возможность разным судьям оценивать партнеров и партнерш в одной номинации. Это больше для бачаты/WCS, хотя и для стилл-н-джилл в Хастле может зайти. Надо ещё раздельное судейство в финале сделать.

- Сделал адаптивными результаты в ТГ. Раньше все картинки были одной ширины и часть информации о танцорах могла не поместиться (если у партнера много клубов, даже ФИО партнерши могло не влезть). Теперь ширина подстраивается под информацию об участниках и будь ваш клуб хоть из Петропавловска-Камчатского, всё поместится)

- Сиильно расширил аналитику - статистика по тем, кто вносил оплаты, долги, стата по городам и клубам, все цифры стали ссылками на соответствующие списки - орги теперь в один клик могут увидеть, кого ожидать на 4й уровень мастерклассов в субботу)

- ну и много-много всего ещё, но поменьше (почтовая рассылка, доп.удобство построителей заходов, доп.логирование, комменты оргов, удаление элементов из пассов)...

Upd. а на картинке для привлечения внимания труд нейросети, над которой я работаю на основной работе, по запросу "Коала с Капибарой на конкурсе по социальным танцам") Если зайдёт, буду сопровождать посты подобными картинками, а не скринами с сайта)
Давно тут не было постов... 😴
Как и крупных обновлений на PE.
Но время пришло 🥳

Танец для двоих. 💃🕺
Одна из самых популярных номинаций. Лет 10 назад проводилась только на нерейтинговых турнирах. Потом в хастле появилось электронное судейство, времени у счетной стало больше и ТДД стало заглядывать и на рейтинговые турниры. Но всё равно эта номинация требовала невероятно много времени. И если время на паркете теоретически можно было оптимизировать (выпуская одновременно 3 захода - они всё равно не пересекаются), то работу счетной ускорить вариантов не было - эксель, где считаются результаты, не позволяет параллелить ввод оценок на несколько счётных; в итоге одному человеку нужно было обработать 40-80 "бегунков" 📝 с ошибками/помарками/разным почерком 🥲.

И вот настало время для следующего шага 🚀

Пару недель назад я доделал поддержку ТДД при проведении конкурсов через PerfEvents. Проведение отборочных, финалов и электронное судейство для участников) Должно сииильно упростить жизнь счётной и ускорить проведение номинации

Первая успешная проба прошла на Школе Чемпионов, а в эту субботу будет Динамиада. И там сразу два ТДД ✌️ Интересно будет услышать впечатления 😇

Электронное судейство доступно только тем, кто под своей учеткой регился на турнир. "Анонимные" регистрации смогут судить, как и раньше, на бумажках.

Заходы и результаты будут публиковаться в ТГ. 📢
В разбивке по заходам будут видны и выходы в качестве саппорта (так что если нашли себя в первом заходе, проверьте, нет ли вас ещё и позже 👀).
В отборочных участники должны будут ставить друг другу баллы (чем больше понравился танец, тем больше баллов поставить). В общем случае от 1 до 5, но счётная может настраивать требования к оценкам довольно свободно. Например, убрать оценки 4 и 5, а участникам предложить после 5 танцев поставить одну единицу, две двойки и две тройки.

В результатах будут видны только абстрактные итоговые баллы каждого участника (по шкале от 0 до 100), где 100 означает, что во всех танцах вам поставили максимальный доступный балл. Т.е. считается средний балл танцора по всем танцам и приводится к шкале от 0 до 100. У кого выше, тот проходит дальше. Оценки отдельных танцоров друг другу в результаты ТГ или на печать не попадут.

В финале расставляются места от первого до последнего. В результатах финала, как и в отборах, оценок отдельных танцоров видно не будет, только итоговое место.
Финал раздельный (вариант с разбивкой на пары и судейством, как в финале Лиги Дубровки пока только в планах).

Вот, как-то так 😎
Сегодня небольшой пост про улучшения для организаторов ивентов 🧐

В последние недели автоматизирую всякое:
Добавил возможность самостоятельно загружать логотип ивента. Картинка автоматически скейлится и обрезается.
Теперь можно удалять номинации) Создавать пока всё еще могу только я - там пока никак не придумаю удобный интерфейс, чтобы все настройки номинаций указывать. Но и это в ближайших планах.

А ещё добавил функционал уведомлений о новых регистрациях (и изменениях старых). Теперь админы ивентов могут создать чатик или канал в тг и получать туда сообщения о новых регистрациях на ивент 🤩
Это должно пригодиться админам ивентов с пассами, где нужно связываться с новыми участниками.
За прошлую неделю расширил функционал организаторов)

Больше свободы! (картинка поста сгенерена нейросетью по запросу "счастливый организатор хастлоивента за день до ивента")

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

А ещё в PE есть страница с аналитикой, там инфа о зарегеных и заплативших в разбивке по клубам, городам, номинациям и товарам.
Добавил туда и разбивку оборота по пассам и не пассам.

Маленькими шагами движемся к автономному сервису 🤖
💃🕺Давно не писал про улучшения PerfEvents, а тут интересная задача возникла.

Бывает, что номинации идут параллельно (одновременно на паркет выходят заходы двух номинаций). При этом один и тот же танцор может участвовать в обеих.

Такое было на ЧРе, но может стать практикой и на других турнирах - это здорово экономит тайминг (главное, чтобы площадь паркета и количество судей позволяли).

И вот для ПерфИвентс возникла задача - после распределения по заходам одной номинации распределить участников по заходам другой так, чтобы:
1️⃣ у каждого участника была пара заходов на отдых (если в первой номинации он в первом заходе, то во второй должен быть в 4м). Больше тоже лучше не надо, чтобы участник не остыл/замерз.
2️⃣ если это невозможно для всех участников, то кому-то оставить только один заход отдыха, но сделать, чтобы таких участников было как можно меньше.
3️⃣ если и это невозможно, то кому-то не оставить заходов для отдыха и сообщить об этом счётной.
4️⃣ ну и если в любом случае кто-то из участников получает одинаковый номер захода в обеих номинациях, показать большое предупреждение счетной.

Такая вот задача, которую надо бы решить идеально, но если не получается идеально, то как можно лучше)

Простейший подход для, например, Бг и Рс, идущих в параллель - всех, кто участвует в обеих номинациях в Бг отправляем в первые заходы, а в Рс - ставим в последние. И чаще всего никаких пересечений - вы великолепны)
Правда, в итоге пострадает равномерность распределения - в Бг в среднем более сильные (или смелые) танцоры будут в первых заходах, а в Рс - всех претендентов отправят в последние... Такое себе.

Получается, есть ещё одно требование - распределение заходов по уровню участников должно быть +- равномерным. Функция для равномерного распределения по заходам в ПерфИвентс есть, осталось её проапгрейдить.

Где-то слышал, что если у тебя в руках оказывается молоток, то все проблемы кажутся гвоздями 🤠
Вот и я тут прохожу курсы по машинному обучению (на ютубе лекции Стенфорда бесплатно лежат и там же домашки) - там как раз рассказывали про всякие алгоритмы оптимизации, поиска пути... И я такой - О! Да этож оно 🤓

Ща построим искуственный интеллект!)

В общем берём и танцоров номинации Рс распределяем независимо от распределения в Бг, а затем считаем скор (оценку) этого распределения:
- за танцора, у которого в Бг и Рс совпадают заходы даём -1000
- если танцор в Бг и Рс в соседних заходах, то -100
- если заходы с разницей 1, то -50
- если с разницей 2, то +20
- а если 3 или больше, то -10.

Получаем какое-то (видимо, очень отрицательное) число. И смотрим, каких двух танцоров можно в заходах поменять местами, чтобы скор стал повыше (просто перебираем все варианты - при 100 участниках это не больше 10к вариантов, не самый большой перебор).
Меняем.
Смотрим, кого бы ещё поменять.
И снова меняем.
И т.д., пока не перестанем находить подходящие пары, улучшающие скор.

Правда, каждая замена приводит к нарушению "равномерности" по уровню в заходах, так что сделаем плату за перестановку - столько, насколько далеко заменяемые танцоры были в изначальном списке (отсортированному по уровню).

И в итоге это работает и быстро сходится к вполне приличному результату 🧑‍💻
Он, правда, может быть не оптимальным глобально, но тут помогает на каждом шаге брать не одну самую лучшую замену, а вариантов пять самых лучших.

Очень прикольно, что специфичный алгоритм внезапно нашел применение во вполне практической задаче 😎

Ну и надеюсь, что параллельные номинации приживутся и турниры будут длиться не 12 часов, а хотябы 8 😇