«Тело. Дух. Разум» — это совместный проект с Правительством Москвы. На стороне заказчика были дизайн и верстка, на нашей — весь бэкенд с программированием.
«Тело. Дух. Разум». Интерактивный портал для Правительства Москвы
Необходимо было создать площадку для виртуальных состязаний между сотрудниками. Речь о тематических видео-конкурсах, где участники смогут проявить свои способности и таланты, а зрители и судьи голосовать и определять победителей.
Общая логика
Наша команда разработчиков на основе 1С-Битрикс создала портал с личным кабинетом, на котором можно создавать и проводить конкурсы, заливать видео и голосовать. На сайте предусмотрены роли: участник, болельщик и судья. Люди могут сами регистрироваться, как участники и как болельщики. Судьи назначаются и регистрируются администратором вручную. В зависимости от роли доступен разный функционал на портале и в личном кабинете. Когда пользователь регистрируется как участник, у него появляется возможность загружать видео-ролики и выставлять их на определенные конкурсы. Болельщики могут смотреть видео и голосовать за понравившиеся вне зависимости от конкурсов. Судьи оценивают конкурсные видео по заданным критериям. Для определения победителей в конкурсах зрительские голоса и баллы судей суммируются.
Двухэтапная регистрация на сайте
Чтобы зарегистрироваться на портале нужно выбрать роль, заполнить почту и пароль. После этого на указанный электронный адрес придет письмо с подтверждением регистрации. В этот момент пользователь уже создается и может войти на сайт, но пока он не пройдет второй этап регистрации, ему будет недоступен весь внутренний функционал. Для этого нужно авторизоваться на сайте либо перейти по ссылке из письма и заполнить форму с дополнительными данными пользователя. Если форму заполнили и сохранили, алгоритм включает пользователя в нужные группы, и ему становится полностью доступен личный кабинет. На одну почту можно завести только одну роль (личный кабинет).
Заполнение этих дополнительных параметров позволяет осуществлять градацию участников. В случае, если конкурсы будут проводиться по нескольким направлениям (например, по разным возрастным категориям), участвовать можно будет только тем, чьи данные соответствуют условиям соревнования. Остальные пользователи, которые не подпадают под параметры конкурса, просто не смогут подать свою заявку с видео.
Личный кабинет
Для каждой группы пользователей предусмотрен свой вид личного кабинета и свои разделы внутри.
Сверху в кабинете выводится горизонтальный дашборд. Дашборд для каждой роли также разный. Например, для участника показывается:
Видео
Все видео на сайте отображаются на отдельной странице, их можно фильтровать по направлениям, сортировать по дате и популярности.
В личном кабинете участника есть кнопка добавления видео, нажав на которую появляется форма загрузки. При загрузке в выпадающем меню необходимо выбрать одно из направлений и доступность видео. Если выбрать «доступен для просмотра», после загрузки ролик автоматически попадает в раздел видео на сайте.
Видео можно загружать под какой-то конкретный конкурс либо просто так. В первом случае система допустит на конкурс только то видео, которое подходит по параметрам. Во втором — участнику придет соответствующее уведомление, если запускается конкурс по направлению его видео.
При заливке видео установили ограничение по максимальному размеру — 250 МБ. Если видео весит больше, то система выдаст ошибку. После загрузки ролика запускается процесс обработки. На бэкенде на сервере стоит библиотека FFmpeg, которая берет оригинальный файл, конвертирует его в МР4/FLV/VP и сжимает до предустановленных размеров. Далее в зависимости от браузера и плеера проигрывается нужный формат.
Для ускорения загрузка видео происходит чанками. Файл разбивается на части и загружается во временную папку. При отправке формы эти части снова собираются в единое целое и загружаются на сервер.
Мессенджер
Для общения пользователей, мы добавили в личный кабинет мессенджер. Наши программисты придумали, как использовать компонент чатов из CRM Битрикс24 на 1С-Битрикс: Управление сайтом. Более того, по аналогии с Битрикс24 в режиме реального времени пользователям на сайте приходят push-уведомления о событиях (добавление видео, видео прошло на конкурс, победа в конкурсе, видео отклонил судья и т.д.). Оповещения также дублируются на почту.
Конкурсный механизм
На странице с конкурсами отображены список всех состязаний и детальная информация по каждому. Когда конкурс закончен, здесь же можно ознакомиться с видео-победителями и результатами голосований. Все конкурсы заводятся через админку сайта.
Для реализации идеи с конкурсами запрограммировали логические бизнес-процессы. Конкурс, направления конкурса, видео — всё это элементы инфоблока. Для каждого инфоблока прописан свой класс с определенными состояниями. Перейти из состояния в состояние можно только по определенным условиям. Соответственно у конкурса есть ряд состояний, этапов, которые он проходит.
Состояние конкурса Описание этапа Страница конкурсов и личный кабинет Условия перехода в следующий этап
Ожидает начала
Конкурс только создан и ожидает начала
Ничего не отображается По дате начала. Когда наступает установленная дата, состояние меняется на подачу заявокПрием заявок
Можно подавать заявки и прикреплять видео к этому конкурсу.Здесь система проверяет есть ли у участников подходящее видео по условию (направлению) Для пользователя с ролью Участник, если он в принципе удовлетворяет условиям конкурса (данные профиля: возраст, пол, уровень подготовки и т.п., отображается форма подачи заявки. Если не удовлетворяет, то можно только просмотреть описание конкурса и его результаты по завершению.
Судьям и Болельщикам на данном этапе тоже доступно только описание конкурса. По таймауту. Есть определенный период на регистрацию участников, когда он проходит то конкурс переходит в следующую стадию
Согласие судейства
Система по критериям выбирает существующих в системе судий с подходящими критериями (направление, сложность и т.д.)Судьям приходят уведомления с приглашением.
В личном кабинете Судьи в специальном разделе «Судейский стол» появляется название конкурса со ссылкой, по которой можно перейти в его детальную карточку, посмотреть описание, и кнопка Принять/Отклонить.
Переход возможен по 2-м условиям.
Либо все судьи из возможных согласились/отказались.
Либо по таймауту, если за два дня не было получено решение.
Судейство
Ролики распределяются по всем согласившимся судьям В личном кабинете Судьи в разделе «Судейский стол» отображаются видео. Есть кнопка Оценить, нажав на которую, открывается окошко с критериями.Под каждый конкурс администратором заводятся свои критерии оценки.
Судья оценивает ролики по этим критериям, присваивая от 1 до 5 звездочек.
Есть кнопка Далее, по которой под каждым критерием открывается поле, куда можно добавить свой комментарий.
На этапе оценки судья может отклонить видео, если считает, что оно не подходит для конкурса.
Все судьи оценили ролики.
Либо по таймауту, Если установленное время на судейство истекло видео от этого судьи автоматически проставляется максимальная оценка по всем критериям.
Завершен
Со всех судей собраны оценки. Они суммируются с количеством мишек, подаренных этому видео. Получается результат. В детальной информации на странице этого конкурса отображается список участников с местами. В личном кабинете участников на дашбордах обновляется информация.Х
Создали интерактивный портал с личным кабинетом для проведения видео-конкурсов. Разработали функционал для судей, болельщиков и участников. Предусмотрели автоматический механизм движения конкурсов по статусам и соответствующую работу портала по ролям пользователей на каждом этапе.
С момента запуска на портале успешно проведено уже 12 конкурсов и зарегистрировалось:
Сейчас портал находится у нас на технической поддержке. Продолжаем дальнейшее сотрудничество с клиентом в новом амбициозном проекте.