К содержимому
Codenrock
ОрганизаторСредний5 мин

Лидерборд

Как создать лидерборд, настроить правила подсчёта и отображение результатов

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