# Ввод результатов соревнований Подробное руководство по вводу результатов участников за выполнение заданий (WOD) через личный кабинет организатора. ## 📋 Введение После проведения соревнования и выполнения участниками заданий, организаторам и судьям необходимо внести результаты в систему. ИКОН автоматически рассчитывает баллы по системе CrossFit Games и формирует лидерборд в реальном времени. ```{note} Ввод результатов доступен только пользователям с ролью **Организатор** или **Судья** для соответствующего соревнования. ``` ## 🎯 Типы скоринга WOD Перед вводом результатов важно понимать, какой тип скоринга используется для конкретного задания (WOD). От этого зависит формат ввода и принцип подсчета баллов. ### 1. For Time (меньше время = лучше) **Описание:** Участник выполняет задание на время. Чем быстрее выполнено - тем лучше. **Примеры заданий:** - Фрэн (21-15-9 Выбросы штанги + Подтягивания) - Хелен (3 раунда: 400 м бег, 21 махов гирей, 12 подтягиваний) - Мёрф (1 км бег, 100 подтягиваний, 200 отжиманий, 300 приседаний, 1 км бег) **Формат результата:** ``` 02:35 # 2 минуты 35 секунд 05:47 # 5 минут 47 секунд 12:30 # 12 минут 30 секунд ``` **Сортировка:** Меньшее время на первом месте --- ### 2. AMRAP / Reps (больше повторений = лучше) **Описание:** Участник выполняет максимальное количество повторений за отведенное время (AMRAP - As Many Rounds/Reps As Possible). **Примеры заданий:** - 7-минутный AMRAP: 5 подтягиваний, 10 отжиманий, 15 воздушных приседаний - 20-минутный AMRAP: 5 бёрпи, 10 запрыгиваний на тумбу, 15 бросков мяча в цель **Формат результата:** ``` 150 # 150 повторений 8+12 # 8 полных раундов + 12 повторений 325 # 325 повторений ``` **Сортировка:** Большее количество повторений на первом месте --- ### 3. Max Weight (больше вес = лучше) **Описание:** Участник поднимает максимальный вес в одном повторении (1RM - One Rep Max). **Примеры заданий:** - 1ПМ Приседания со штангой на спине - 1ПМ Становая тяга - 1ПМ Взятие штанги на грудь и толчок **Формат результата:** ``` 120 # 120 кг 85.5 # 85.5 кг 100kg # 100 кг (можно указывать единицы) ``` **Сортировка:** Больший вес на первом месте --- ### 4. Max Distance (больше дистанция = лучше) **Описание:** Участник преодолевает максимальную дистанцию за отведенное время. **Примеры заданий:** - 12-минутная гребля на максимальную дистанцию - 10-минутная работа на велотренажёре на максимум калорий - 20-минутный бег на максимальную дистанцию **Формат результата:** ``` 2500 # 2500 метров 1850m # 1850 метров 3.5 # 3.5 км ``` **Сортировка:** Большая дистанция на первом месте --- ### 5. Max Tonnage (больше тоннаж = лучше) **Описание:** Участник поднимает максимальный суммарный вес за отведенное время. **Примеры заданий:** - 10-минутный AMRAP: Становая тяга (количество повторений × вес штанги) - Комплекс тяжелой атлетики с подсчетом общего объема нагрузки - AMRAP: Толчковая тяга + Взятие на грудь (сумма всех поднятых кг) **Формат результата:** ``` 5000 # 5000 кг общего тоннажа 7250 # 7250 кг ``` **Сортировка:** Больший тоннаж на первом месте --- ## 📝 Форматы ввода результатов Система ИКОН поддерживает различные форматы ввода результатов и автоматически их распознает. ### Таблица поддерживаемых форматов | Тип результата | Примеры ввода | Распознается как | |----------------|---------------|------------------| | **Время (мм:сс)** | `02:35`, `05:47`, `12:30` | Минуты и секунды | | **Время (секунды)** | `17.57`, `150.5`, `234.12` | Секунды с десятыми | | **Повторения** | `150`, `200`, `325` | Количество повторений | | **Раунды + повторения** | `8+12`, `10+5` | Раунды и повторения | | **Вес (кг)** | `100kg`, `85кг`, `120` | Вес в килограммах | | **Дистанция (м)** | `500m`, `2500`, `1.5км` | Дистанция в метрах | | **Тоннаж** | `5000kg`, `7250` | Тоннаж в килограммах | ```{tip} Система автоматически убирает единицы измерения (kg, кг, m, км, reps) и преобразует результат в числовой формат для сортировки. ``` ```{warning} Для времени используйте формат **ММ:СС** (например, `02:35`), а не десятичные дроби. Десятичные дроби интерпретируются как секунды. ``` --- ## 🔢 Система подсчета баллов ИКОН использует систему подсчета баллов, аналогичную **CrossFit Games**. ### Принцип работы 1. **Сбор результатов:** Все результаты участников для одного задания собираются в список 2. **Сортировка:** Результаты сортируются в зависимости от типа скоринга: - **For Time:** От меньшего к большему (быстрее = лучше) - **Reps/Weight/Distance/Tonnage:** От большего к меньшему (больше = лучше) 3. **Присвоение баллов:** Баллы начисляются по формуле: - **1-е место:** 100 баллов - **2-е место:** 98 баллов - **3-е место:** 96 баллов - **4-е место:** 94 балла - **N-е место:** `max(100 - (N - 1) × 2, 1)` - **Минимум:** 1 балл ### Таблица распределения баллов | Место | Баллы | Место | Баллы | Место | Баллы | |-------|-------|-------|-------|-------|-------| | 1 | 100 | 11 | 80 | 21 | 60 | | 2 | 98 | 12 | 78 | 22 | 58 | | 3 | 96 | 13 | 76 | 23 | 56 | | 4 | 94 | 14 | 74 | 24 | 54 | | 5 | 92 | 15 | 72 | 25 | 52 | | 6 | 90 | 16 | 70 | 26 | 50 | | 7 | 88 | 17 | 68 | 27 | 48 | | 8 | 86 | 18 | 66 | 28 | 46 | | 9 | 84 | 19 | 64 | 29 | 44 | | 10 | 82 | 20 | 62 | 30 | 42 | ```{note} Баллы рассчитываются **автоматически** сразу после сохранения результата. Организатору не нужно вручную их вводить. ``` ### Пример расчета **Задание:** "Фрэн" (For Time) - 21-15-9 Выбросов штанги + Подтягиваний | Участник | Результат | Место | Баллы | |----------|-----------|-------|-------| | Иван Петров | 02:35 | 1 | 100 | | Мария Смирнова | 03:12 | 2 | 98 | | Петр Сидоров | 03:45 | 3 | 96 | | Анна Кузнецова | 04:20 | 4 | 94 | | Сергей Волков | 05:10 | 5 | 92 | --- ## 🖨️ Работа со стартовыми листками (Scoresheets) Перед началом соревнования организаторы и судьи могут распечатать стартовые листки для записи результатов участников на бумаге. ### Типы стартовых листков #### 1. Листок для одного участника **Формат:** A4 или A5 **Содержание:** - ФИО участника - Категория и заход (Heat) - Описание задания (WOD) - Поля для записи результата - Поле для подписи судьи ```{figure} https://s3.mitok.ru/ikong-dev/docs/images/organizers/results-entry-scoresheet.png :alt: Пример стартового листка для одного участника :width: 600px :align: center Стартовый листок для одного участника (формат A4) ``` **Как распечатать:** 1. Перейдите в раздел управления заходами (Heats) 2. Выберите заход и участника 3. Нажмите кнопку "Печать листка" → выберите формат (A4/A5) --- #### 2. Листки для всего захода (Heat) **Формат:** A4 (массовая печать) **Содержание:** - Все участники одного захода - Один PDF-файл со всеми листками подряд - Удобно для печати перед заходом **Как распечатать:** 1. Перейдите в раздел управления заходами 2. Выберите нужный заход 3. Нажмите "Печать всех листков захода" --- #### 3. Листки для всего соревнования **Формат:** A4 (массовая печать) **Содержание:** - Все участники всех заходов - Сортировка по заходам - Один большой PDF для печати всего соревнования **Как распечатать:** 1. Перейдите в Dashboard организатора 2. Выберите соревнование 3. Нажмите "Печать всех стартовых листков" ```{tip} Рекомендуется печатать листки в формате **A5** для экономии бумаги и удобства судей. Формат A5 содержит всю необходимую информацию в компактном виде. ``` --- ## 💻 Ввод результатов через Dashboard организатора Основной способ ввода результатов - через личный кабинет организатора на платформе ИКОН. ### Доступ к Dashboard 1. **Авторизуйтесь** на сайте ikong.ru 2. Убедитесь, что у вас есть права **организатора** для соревнования 3. Перейдите в **Dashboard организатора**: `/competitions/organizer/dashboard/`
Видео: Демонстрация навигации по Dashboard организатора
--- ### Пошаговая инструкция ввода результатов #### Шаг 1: Выбор соревнования На главной странице Dashboard вы увидите список всех ваших соревнований. Выберите нужное соревнование, нажав на его название или кнопку "Управление". ```{figure} /_static/screenshots/competition-list-placeholder.png :alt: Список соревнований в Dashboard :width: 800px Список соревнований с кнопками управления ``` --- #### Шаг 2: Переход в раздел "Результаты" В меню соревнования найдите раздел **"Результаты"** или **"Ввод результатов"**. ```{figure} /_static/screenshots/results-navigation-placeholder.png :alt: Навигация к разделу результатов :width: 800px Меню управления соревнованием ``` --- #### Шаг 3: Выбор задания (WOD) 1. Вы увидите список всех заданий (WOD) для соревнования 2. Выберите задание, для которого нужно внести результаты 3. Нажмите на название задания ```{figure} /_static/screenshots/wod-list-placeholder.png :alt: Список заданий (WOD) соревнования :width: 800px Список всех WOD с типами скоринга ``` ```{note} Обратите внимание на **тип скоринга** рядом с названием задания (For Time, AMRAP, Max Weight и т.д.). Это подскажет, в каком формате вводить результаты. ``` --- #### Шаг 4: Просмотр списка участников После выбора задания откроется таблица со списком всех **оплативших** участников данной категории. **Структура таблицы:** - **ФИО участника** - имя и фамилия - **Категория** - категория участия - **Заход (Heat)** - номер захода, если назначен - **Результат** - поле для ввода результата (score) - **Баллы** - автоматически рассчитанные баллы (read-only) ```{figure} /_static/screenshots/participants-table-placeholder.png :alt: Таблица участников с полями для ввода результатов :width: 900px Таблица участников для ввода результатов ``` --- #### Шаг 5: Ввод результата 1. **Найдите участника** в списке (можно использовать поиск по имени) 2. **Кликните** на поле "Результат" напротив имени участника 3. **Введите результат** в соответствующем формате (см. раздел "Форматы ввода результатов") 4. **Нажмите Enter** или кликните вне поля для сохранения **Примеры:** - Для "For Time": вводим `02:35` - Для "AMRAP": вводим `150` или `8+12` - Для "Max Weight": вводим `120` или `120kg` ```{figure} /_static/screenshots/result-input-placeholder.png :alt: Процесс ввода результата :width: 700px Inline редактирование результата участника ``` ```{tip} Система использует **HTMX** для автоматического сохранения результатов без перезагрузки страницы. Вы увидите индикатор загрузки во время сохранения. ``` --- #### Шаг 6: Автоматический расчет баллов После сохранения результата система **автоматически**: 1. Сохраняет введенный результат 2. Рассчитывает баллы на основе типа скоринга и позиции участника 3. Обновляет столбец "Баллы" в таблице 4. Пересчитывает позиции всех участников в лидерборде ```{figure} /_static/screenshots/points-calculated-placeholder.png :alt: Автоматически рассчитанные баллы :width: 700px Таблица с автоматически рассчитанными баллами ``` ```{note} **Баллы пересчитываются автоматически** для всех участников задания при добавлении или изменении любого результата. Это гарантирует актуальность рейтинга. ``` --- #### Шаг 7: Редактирование результата Если нужно исправить ошибку: 1. Кликните на поле с результатом 2. Измените значение 3. Нажмите Enter для сохранения 4. Баллы пересчитаются автоматически ```{figure} /_static/screenshots/result-edit-placeholder.png :alt: Редактирование результата :width: 700px Процесс редактирования ранее введенного результата ``` --- #### Шаг 8: Проверка лидерборда После ввода всех результатов проверьте актуальность лидерборда: 1. Перейдите на страницу соревнования (публичная страница) 2. Откройте вкладку **"Leaderboard"** или **"Результаты"** 3. Убедитесь, что все результаты корректно отображаются 4. Проверьте правильность сортировки и начисленных баллов ```{figure} /_static/screenshots/leaderboard-placeholder.png :alt: Публичный лидерборд соревнования :width: 900px Публичный лидерборд с результатами участников ``` --- ## 🔄 Пересчет баллов В некоторых случаях может потребоваться **ручной пересчет баллов** для всех участников. ### Когда нужен пересчет? - После массового импорта результатов - После изменения типа скоринга задания - При обнаружении ошибок в автоматическом расчете - После восстановления из резервной копии ### Способ 1: Автоматический пересчет (рекомендуется) Баллы пересчитываются **автоматически** при каждом сохранении результата. Дополнительных действий не требуется. ### Способ 2: Management команда (для администраторов сервера) Если у вас есть доступ к серверу, можно выполнить пересчет через Django management команду: ```bash # Пересчет баллов для всех результатов python manage.py recalculate_points # Пересчет только для конкретного задания (Task) python manage.py recalculate_points --task-id=21 # Пересчет для всего соревнования python manage.py recalculate_points --competition-id=10 ``` ```{warning} Management команды доступны только **администраторам сервера** с SSH доступом. Обычным организаторам эта возможность недоступна. ``` --- ## ⚠️ Частые ошибки и решения ### Ошибка 1: "Нет прав доступа для ввода результатов" **Причина:** Ваш аккаунт не имеет роли "Организатор" или "Судья" для данного соревнования. **Решение:** 1. Свяжитесь с администратором платформы 2. Попросите добавить вас в группу "Организаторы" 3. Либо попросите главного организатора соревнования назначить вас судьей --- ### Ошибка 2: "Результат не сохраняется" **Причина:** Неправильный формат ввода результата. **Решение:** - Проверьте формат ввода (см. таблицу форматов выше) - Для времени используйте формат `ММ:СС`, а не `ММ.СС` - Убедитесь, что не используете запрещенные символы - Попробуйте ввести результат без единиц измерения (только число) **Примеры правильного ввода:** ``` ✅ 02:35 (время) ✅ 150 (повторения) ✅ 120 (вес в кг) ❌ 02.35 (неправильно - точка вместо двоеточия) ❌ 2:35 (неправильно - одна цифра для минут, нужно 02:35) ❌ abc (неправильно - буквы вместо цифр) ``` --- ### Ошибка 3: "Баллы рассчитались неправильно" **Причина:** Возможно, был изменен тип скоринга задания после ввода результатов. **Решение:** 1. Проверьте тип скоринга задания (For Time, AMRAP и т.д.) 2. Убедитесь, что результаты введены в правильном формате для данного типа 3. Попробуйте пересохранить результат (отредактировать и нажать Enter) 4. Если проблема сохраняется - свяжитесь с администратором --- ### Ошибка 4: "Не вижу некоторых участников в списке" **Причина:** Отображаются только участники с **оплаченной регистрацией**. **Решение:** 1. Проверьте статус оплаты участника в разделе "Регистрации" 2. Убедитесь, что участник зарегистрирован на правильную категорию 3. Если оплата прошла, но участник не отображается - обновите страницу (Ctrl+F5) --- ### Ошибка 5: "Лидерборд не обновляется в реальном времени" **Причина:** Проблемы с кешированием браузера или HTMX polling. **Решение:** 1. Обновите страницу лидерборда (F5) 2. Очистите кеш браузера (Ctrl+Shift+Delete) 3. Попробуйте открыть страницу в режиме инкогнито 4. Проверьте, что в системе включен HTMX Short Polling --- ## 💡 Лучшие практики ### 1. Подготовка к соревнованию ```{tip} **За день до соревнования:** - Распечатайте стартовые листки для всех участников - Проверьте права доступа для всех судей - Убедитесь, что все категории и задания (WOD) созданы - Проверьте типы скоринга для каждого задания ``` --- ### 2. Во время соревнования **Рекомендуемый workflow:** ```mermaid graph LR A[Участник завершает WOD] --> B[Судья записывает на бумаге] B --> C[Судья вносит в систему] C --> D[Система рассчитывает баллы] D --> E[Лидерборд обновляется] E --> F[Участники видят результаты] ``` **Советы:** - Вносите результаты **сразу после завершения захода**, пока они свежи в памяти - Используйте **несколько устройств** для параллельного ввода (разные судьи вводят разные заходы) - **Проверяйте результаты** перед переходом к следующему заходу - Назначьте **ответственного судью** за каждый заход --- ### 3. Проверка результатов перед публикацией **Чеклист перед финальной публикацией:** - [ ] Все результаты введены - [ ] Нет пустых полей для участников, которые завершили WOD - [ ] Баллы рассчитаны для всех участников - [ ] Лидерборд корректно отображается на публичной странице - [ ] Проверена сортировка участников (топ-3) - [ ] Нет очевидных ошибок (например, время 00:01 вместо 10:01) --- ### 4. Резервное копирование ```{warning} Перед массовым изменением результатов (например, пересчетом баллов) рекомендуется создать **резервную копию** данных соревнования. ``` **Как создать бэкап:** 1. Свяжитесь с администратором платформы 2. Попросите создать snapshot базы данных перед изменениями 3. Сохраните экспорт результатов в Excel/CSV (если доступен функционал) --- ### 5. Коммуникация с участниками **При корректировке результатов:** - Уведомляйте участников о изменениях через Telegram/Email - Объясняйте причину корректировки (ошибка ввода, пересмотр судьями и т.д.) - Давайте время на подачу апелляций (обычно 30 минут после публикации) **Шаблон сообщения:** ``` Внимание! Результаты WOD 2 были скорректированы. Причина: ошибка в записи времени участника #123. Лидерборд обновлен. Проверьте свои позиции. Апелляции принимаются до 15:00. ``` --- ### 6. Работа с DNF и DNS **DNF (Did Not Finish)** - участник не завершил WOD **DNS (Did Not Start)** - участник не вышел на старт **Как обрабатывать:** - **DNF:** Введите результат в формате, который показывает, на каком этапе остановился участник. Например, для AMRAP введите фактическое количество повторений на момент остановки. - **DNS:** Оставьте поле пустым. Пустые результаты не учитываются в расчете баллов. ```{note} Участники с пустыми результатами (DNS) не отображаются в лидерборде, но остаются в системе как зарегистрированные. ``` --- ## 🔗 Связанные разделы документации Для полного понимания процесса проведения соревнований рекомендуем ознакомиться с: - [Создание соревнования](create-competition) - как создать и настроить соревнование - [Управление участниками](manage-participants) - работа с регистрациями - [Создание заданий (WOD)](#) - как добавлять задания для категорий *(в разработке)* - [Управление заходами (Heats)](#) - распределение участников по заходам *(в разработке)* - [Публикация лидерборда](#) - настройка отображения результатов *(в разработке)* --- ## 📞 Нужна помощь? Если у вас возникли вопросы по вводу результатов: **Email:** info@ikong.ru **Telegram:** @shomabig **Время ответа:** до 2 часов в рабочее время (10:00-20:00 МСК) --- ```{admonition} Обратная связь Эта документация постоянно обновляется. Если вы нашли ошибку или у вас есть предложения по улучшению - напишите нам! ```