Лидерборд
Лидерборд — это таблица рейтинга участников, автоматически рассчитываемая по результатам решения задач или по итогам голосования жюри. Можно создать несколько лидербордов с разными настройками для одного конкурса.
Когда использовать
- Рейтинг участников по задачам (ML-соревнование, CTF, тестирование)
- Итоговый рейтинг по результатам голосования жюри
- Отдельные рейтинги по трекам или этапам
Создание лидерборда
Шаг 1: Откройте раздел «Лидерборд»
- Перейдите на страницу конкурса
- Наведите на секцию «Лидерборд» и нажмите иконку карандаша
- Нажмите «Добавить»
Шаг 2: Заполните основные поля
| Поле | Обязательно | Описание |
|---|
| Название | Да | Название лидерборда (например, «Основной рейтинг») |
| Источник данных | Да | По трекам (задачи) или по голосованиям (жюри) |
| Треки / Голосования | Да | Какие треки или голосования включить в расчёт |
| Видимость | Да | Всем (публичный) или только организаторам (приватный) |
| Сортировка | Да | По убыванию (больше = лучше) или по возрастанию (меньше = лучше) |
Шаг 3: Настройте правила (для треков)
Эти настройки доступны только при источнике данных «По трекам»:
| Настройка | Описание |
|---|
| Правило агрегации | «Лучший результат» — лучший балл по задаче; «Сумма» — сумма всех попыток |
| Показывать время | Включить колонку времени в таблице |
| Приватный score | Использовать приватный балл вместо публичного |
| Нулевой score | Показывать участников с нулевым баллом |
Шаг 4: Сохраните
Нажмите «Создать». Лидерборд появится в списке и сразу будет виден участникам (если публичный).
Источники данных
По трекам
Лидерборд считает баллы из решений задач (Solution) выбранных треков. Каждый участник (или команда) получает итоговый балл — сумму лучших результатов по каждой задаче.
- Выбранные треки определяют набор задач
- Участники, у которых нет сданных решений, не отображаются
- При
considerZero: false участники с нулевым итоговым баллом скрыты
По голосованиям
Лидерборд считает баллы из оценок жюри. Итоговый балл — взвешенная сумма средних оценок по критериям (подробнее — в документации голосования).
- Оцениваются только команды
- Формула:
(средний балл / макс. балл) * вес для каждого критерия
По активности
Лидерборд считает не результат решения задач, а участие в жизни мероприятия: прошёл тест после вебинара, записался на встречу, забронировал слот чек-поинта, загрузил материалы, вступил в команду. Пригодится идейным форматам, где активность — условие допуска к следующему кругу или решающий фактор при равных оценках жюри.
Вместо списка задач или голосований выбираются правила начисления — по одному на действие:
| Действие | За кем закрепляется | Когда возникает |
|---|
| Регистрация на мероприятие | участник | регистрация |
| Анкета заполнена | участник | заполнена анкета регистрации |
| Создание команды, вступление в команду | участник | команда создана / заявка подтверждена |
| Сдача задачи | участник | первая сдача решения, включая загрузку материалов |
| Задача решена | участник | решение принято или балл выше нуля |
| Запись на событие | участник | запись на событие календаря |
| Бронь слота | команда | бронь слота чек-поинта, один раз на команду и этап |
| Переход по воронке | команда | куратор перевёл команду на следующую стадию |
| Пуш в репозиторий | участник | первый пуш в репозиторий задачи |
| Сообщение в чате | участник | не чаще раза в день |
| Обратная связь | участник | ответ на опрос |
| Ручное начисление | участник или команда | кнопка «Начислить баллы» в карточке |
Для каждого правила задаются:
- Баллы — сколько начисляется за одно действие.
- Лимит — максимум начислений этого типа на одного участника или команду (например, «Сообщение в чате» не больше 10). Действия сверх лимита видны в детализации как «не засчитано».
- В команде — как считать личные действия в командном мероприятии: один раз (команда получает баллы, когда действие совершил хотя бы один участник — тест после вебинара) или за каждого (каждый участник заполнил профиль).
Каждое действие засчитывается единожды: повторная сдача той же задачи, перебронирование слота или повторная запись на этап баллов не добавляют.
В командном мероприятии рейтинг строится по командам, в одиночном — по участникам. Период лидерборда ограничивает действия по дате. Сортировка по умолчанию — по убыванию; режимы времени и правило агрегации к этому типу не применяются.
Личные действия, совершённые до вступления в команду (регистрация, анкета, первые сдачи), закрепляются за командой в момент подтверждения членства — иначе они не попали бы в командный рейтинг. Участник, сменивший команду, оставляет прошлые действия прежней команде: новой засчитываются только те, что совершены после перехода.
Ручное начисление. За действия, которых платформа не видит (встреча с держателем трека, выступление на чек-поинте), баллы начисляет организатор: кнопка «Начислить баллы» в карточке команды (раздел «Команды») или в профиле участника. Указываются баллы и комментарий; начисление попадает в лидерборд с правилом «Ручное начисление». В командном мероприятии начисление участнику идёт в зачёт его команды.
Ошибочное начисление отменяется там же: баллы снимаются сразу, а запись остаётся в истории зачёркнутой — с датой отмены и именем того, кто отменил.
Комментарий и автор начисления видны только организаторам. Участникам и гостям в детализации показываются тип действия, дата и баллы — поле комментария можно использовать как рабочую заметку.
Детализация. В расширенном лидерборде строка раскрывается в список засчитанных действий с датой, объектом и баллами; отдельно показано, что не засчитано из-за лимита или как повтор внутри команды.
Примечание: журнал действий заполняется с момента включения функции. Для мероприятия, которое уже идёт, нужно один раз выполнить бэкфилл (scripts/backfill-activity-events.ts), иначе лидерборд покажет нули по прошлым действиям. Скрипт заодно дописывает команду тем действиям, что были записаны до её появления, поэтому цифры после бэкфилла совпадают с живым сбором. Повторный запуск безопасен.
Правило агрегации
Лучший результат (BEST)
По каждой задаче берётся лучшая попытка участника. «Лучшая» зависит от направления сортировки:
- По убыванию: максимальный балл
- По возрастанию: минимальный балл
Итого = сумма лучших баллов по всем задачам.
Сумма (SUM)
По каждой задаче суммируются все попытки участника. Итого = сумма сумм по всем задачам.
Примечание: Режим «Сумма» полезен, когда каждая попытка добавляет очки (например, в CTF).
Режимы времени
Время показывается только при включённой настройке «Показывать время». Доступно три режима:
Сумма времени задач
Для каждой задачи считается отдельно: от момента, когда участник открыл задачу, до сдачи лучшего результата. Время учитывается только для того пользователя, который отправил решение (при командном участии).
Итого = сумма времён по всем задачам. Перерывы между задачами не учитываются.
От первой задачи
Общее время от момента открытия самой первой задачи до сдачи лучшего результата по последней задаче. Включает все паузы.
От открытия доступа
Общее время от даты начала трека до сдачи лучшего результата по последней задаче. Если в лидерборде выбрано несколько треков, используется самая ранняя дата начала среди них.
Примечание: Если у выбранных треков не заполнена дата начала, время в этом режиме не отображается.
Ранжирование
Лидерборд использует DENSE_RANK — при одинаковом балле участники получают одинаковое место, а следующее место идёт без пропуска:
| Место | Участник | Балл |
|---|
| 1 | Команда А | 100 |
| 1 | Команда Б | 100 |
| 2 | Команда В | 95 |
| 3 | Команда Г | 90 |
При включённом времени участники с одинаковым баллом ранжируются по времени (меньше = лучше).
Видимость
| Режим | Описание |
|---|
| Публичный | Виден всем посетителям страницы конкурса |
| Приватный | Виден только организаторам. Полезен для тестовых или промежуточных рейтингов |
В режиме просмотра приватные лидерборды отмечены иконкой закрытого глаза. Участники их не видят.
Управление лидербордами
Редактирование
- Наведите на секцию «Лидерборд» и нажмите карандаш
- Нажмите на строку лидерборда или иконку редактирования
- Измените настройки и нажмите «Сохранить»
Изменения применяются мгновенно — результаты пересчитываются при каждом просмотре.
Удаление
- В режиме редактирования нажмите иконку корзины на строке лидерборда
- Подтвердите удаление
Предупреждение: Удаление необратимо. Настройки лидерборда нельзя восстановить.
Частые вопросы
В: Когда обновляются результаты?
О: Результаты пересчитываются при каждом открытии лидерборда. Новые решения участников сразу отражаются в рейтинге.
В: Можно ли создать несколько лидербордов?
О: Да, можно создать сколько угодно — например, публичный рейтинг для участников и приватный для организаторов, или отдельные рейтинги по разным трекам.
В: Чем отличается «Лучший результат» от «Суммы»?
О: «Лучший результат» берёт одну лучшую попытку по задаче, «Сумма» складывает все попытки. Для большинства конкурсов подходит «Лучший результат».
В: Что такое приватный score?
О: Некоторые задачи имеют два балла: публичный (виден участнику) и приватный (скрытый, на основе расширенного набора тестов). Включение этой настройки использует приватный балл для расчёта рейтинга.
В: Почему у участника нет времени?
О: Время показывается только если участник сначала открыл задачу (создалась запись просмотра), а затем отправил решение. Если запись просмотра отсутствует — время не вычисляется.
В: Как работает поиск?
О: Поиск фильтрует по имени команды или участника. Ранги при этом сохраняются — они рассчитаны до применения фильтра.