> For the complete documentation index, see [llms.txt](https://help.codenrock.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.codenrock.com/docs/settings-contests/tasks-page.md).

# Страница "Задания"

## Создание задания

После создания анкеты перейдите на страницу “**Задания**”. Здесь вы можете создать новые задания, наполнить их задачами и отредактировать уже созданные задания. У нас выбран шаблон “**Хакатон**”, поэтому первое задание было автоматически создано и настроено. Давайте нажмем на кнопку “**Редактировать**” в карточке задачи и настроим задание под свои нужды.

{% hint style="info" %}
Пожалуйста, внимательно изучите этот раздел! Задачи - одни из самых важных деталей мероприятия.
{% endhint %}

{% hint style="info" %}
Все решения участников можно посмотреть на странице "**Статистики**" во вкладке "**Дашбоард**".
{% endhint %}

## Редактор задания

Страница редактора задания имеет множество гибких настроек. Создание задания начинается со вкладки "**Основные**". Не будем терять времени и начнем!

### Вкладка "Основные"

В этой вкладке вы можете задать название задачи/номинации, придумать описание к задаче, настроить доступы и видимость задачи.

![Вкладка "Основные"](/files/qafBpScHkfsGXbFFM5tX)

{% hint style="info" %}
Обратите внимание на индикатор заполненности задачи в правой части страницы. Постарайтесь сделать все пункты зелеными, т.к. это существенно упрощает взаимодействие с участниками. Не все пункты являются обязательными!
{% endhint %}

* **Название задачи** - в этом поле вы можете задать название задачи. Название задачи будет отображаться в карточке задачи в списке всех задач.&#x20;
* **Публичное описание задачи** - тут можно задать описание задачи, которое будет видеть участник в карточке задачи.&#x20;

![Название и публичное описание задачи](/files/-MhxzCDOY4-m3hZ57Rli)

* **Дата открытия задачи для участников**/**Дата закрытия задачи для участников** - в этом поле задается время появления/закрытия задачи в списке всех задач.

{% hint style="info" %}
Эту настройку можно использовать, чтобы показывать и скрывать задачи участникам по времени, которое вы указали.
{% endhint %}

* **Показывать результат** - включает отображение результата после прохождения задания.&#x20;

![Таблица с результатами после выполнения теста](/files/-MhsUCzID23PcIOUWyX_)

{% hint style="info" %}
Настройка "**Показывать результат**" работает только для заданий с типами "**Тест**" и "**Live Coding**".
{% endhint %}

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

![Создание и прикрепление тегов к задаче](/files/-Mhsbj8uL1t4g1_XNy_Q)

![Теги в карточке задания](/files/-MhsdH6-_K49uCHBAwlY)

* **Сортировка рейтинга** - задайте сортировку рейтинга для вашей задачи. Если оценка решения задачи подходит под условие "чем меньше, тем лучше", то выберите "По увеличению результата", если наоборот, то "По уменьшению результата".
* **Сложность задачи** - организатор может выставить задаче сложность. Участник или команда может отсортировать задачи по сложности, если она указана в настройках.

![Фильтр задач на странице "Задания"](/files/-MhsfmdM1g4ED_XczSM3)

* **Опубликовать задачу** - если настройка активна, то задача видна в списке задач.

{% hint style="warning" %}
**Внимание!** Сохраните настройки задачи перед переходом во вкладку "**Вопросы**", нажав на кнопку "**Сохранить**" во вкладке "**Главное**".&#x20;
{% endhint %}

Перейдите на вкладку "**Вопросы**", чтобы начать создавать вопросы для вашей задачи.

### Вкладка "Вопросы"

Во вкладке "**Вопросы**" вы можете создать вопросы для задачи. Мы не ограничиваем вас в количестве вопросов внутри задачи, поэтому можете отыграться на участниках по полной (например, создать 100500 тестовых вопросов)!&#x20;

![Вкладка "Вопросы"](/files/przuW2rA1axm5wrAvbK9)

Нажмите на кнопку "**Добавить свой вопрос**", чтобы добавить новый вопрос.&#x20;

![Создание вопроса](/files/YekrIMEPGjESyMY0mIr5)

{% hint style="success" %}
Описание типов вопросов и настроек к ним представлено ниже, а чтобы вам было удобно, мы подготовили ссылку на раздел - [**Типы вопросов**](#tipy-voprosov)
{% endhint %}

### Вкладка "Эксперты"

Во вкладке "**Эксперты**" вы можете добавить кураторов для задачи. Они помогут участникам, если у тех появятся вопросы.

![Вкладка "Эксперты"](/files/Cz4ZXREugGNrdEmze3ab)

Нажмите на кнопку "**Добавить эксперта**", чтобы выбрать эксперта из списка совместного доступа.&#x20;

**Кнопка** ![](/files/GzrLThmJyHJmx7D3zExJ) отвечает за открепление эксперта от задачи.

{% content-ref url="/pages/Inq4AHKWCyC1bS2SHEVd" %}
[Совместный доступ](/docs/settings-contests/sovmestnyi-dostup.md)
{% endcontent-ref %}

![Описание эксперта в карточке задачи](/files/-MhxXmsKnFgcYNPW16iY)

После прикрепления экспертов к задачам, нажмите на кнопку "**Сохранить**" и перейдите во вкладку "**Расписание встреч**".

### Расписание встреч

Бронирование времени нужно для того, чтобы участникам было проще согласовывать время встречи с экспертами, прикрепленными к задаче. Давайте посмотрим как это работает! Нажмите на кнопку "**Добавить интервал**".

* **Название интервала** - поле для названия интервала.
* **Описание** - *обязательное поле* для описания интервала.
* **Дата старта** - дата начала интервала.
* **Длительность встречи** - в этом списке вы можете выбрать длительность встречи в минутах. Максимальная длительность встречи составляет 60 минут.
* **Кол-во встреч** - здесь можно задать количество встреч. Максимальное количество встреч - 40.

Если к заданию прикреплен интервал, то участник или команда может нажать на кнопку "**Записаться на чекпоинт**" и выбрать любой свободный интервал для встречи. После выбора интервала, участнику придет письмо с оповещением о том, что интервал закреплен за ним.&#x20;

![Кнопки записи на чекпоинт](/files/-Mhwa-ZwQnneBBuESdme)

![Команда записалась на чекпоинт](/files/-MhwaU0p8cT2mM3Fo4VE)

Участник с правами "**Организатор**" и выше может подтвердить или отменить запись команды. В любом из случаев на почту участнику придет оповещение о результате записи.

![Подтверждение слота организатором](/files/-Mhxv7-D-nKiaX-FBXvR)

{% hint style="info" %}
Участник с правами "**Организатор**" и выше может очистить слот, нажав на кнопку "**Очистить слот**".
{% endhint %}

{% hint style="warning" %}
Если уменьшить количество слотов, то командам, которые были записаны на последние интервалы, придет оповещение об удалении интервала.
{% endhint %}

Самостоятельно заполните все настройки в блоке создания интервала и нажмите на кнопку "**Сохранить**".&#x20;

{% hint style="warning" %}
Вкладка "**Удаление**" отвечает за удаление задачи. Пользуйтесь ей с осторожностью, т.к. восстановить удаленную задачу и решения невозможно!
{% endhint %}

### Типы вопросов

Итак, настала самая важная часть мероприятия - задания. Как упоминалось ранее, в каждом типе шаблона события есть автоматически созданная задача с заданием и наше мероприятие не стало исключением. Нажмите на задание в блоке "**Список вопросов**".&#x20;

{% hint style="info" %}
Поля, описанные в разделе "**Текст**", одинаковы для всех типов вопросов, поэтому в дальнейшем описания этих полей будет пропускаться.
{% endhint %}

#### Содержание:

* [Текст](/docs/settings-contests/tasks-page.md#tekst)
* [Live Coding](/docs/settings-contests/tasks-page.md#live-coding)
* [Тест](/docs/settings-contests/tasks-page.md#test)
* [Файл](/docs/settings-contests/tasks-page.md#fail)
* [Видео](/docs/settings-contests/tasks-page.md#video-pitching)
* [Gitlab](#gitlab)

#### Текст

В нашем случае автоматически создалось задание с типом "**Текст**", поэтому начнем с него. Давайте посмотрим какие поля есть в этом типе вопроса.

В поле "**Выберете тип задачи**" вы можете выбрать один из представленных типов задач, подходящих вам. Каждый тип вопроса мы разберем чуть позже.

В полях "**Название вопроса**" и "**Напишите вопрос**" задаются название и описание для вопроса, которые будут отображаться внутри задачи на странице с вопросом.&#x20;

![Интерфейс страницы вопроса](/files/-Mhy-BoZBMz6yFpXj5yE)

Блок "**Лимит ответов**" имеет два поля: первое - числовое, где задается количество ответов, которые может дать участник за период времени, а второе - список с выбором периода времени. &#x20;

{% hint style="info" %}
Период "**За все время**" означает, что у участника есть определенное количество попыток до наступления даты закрытия задачи. У периода "**В сутки**" количество попыток восстанавливается каждый день до закрытия задачи.
{% endhint %}

Заполните поля произвольными данными, нажмите на кнопку "**Добавить свой вопрос**" и выберите тип нового вопроса - **Live coding**.

#### Live coding

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

* Поле "**Комментарий**" предназначено для того, чтобы организатор оставил объяснение к решению или любое другое послание участникам.

{% hint style="warning" %}
Включите [настройку "**Показывать результат**"](/docs/settings-contests/tasks-page.md#redaktor-zadaniya), чтобы участник увидел комментарий после выполнения задания.
{% endhint %}

* В списке "**Язык по умолчанию**" можно выбрать язык, который будет установлен по умолчанию в редакторе кода.

{% hint style="info" %}
Участник всегда может изменить язык программирования внутри редактора кода.
{% endhint %}

![Переключение языка программирования](/files/-Mi0w0iB_NxcwVG3aSa8)

* Кнопка "**Добавить тестовую пару**" позволяет добавить тестовую пару для проверки решения.

![](/files/-Mi0zF4vGm-92QNSFtlo)

{% hint style="info" %}
Для проверки решения участника система запускает его решение с разными комбинациями входных и выходных данных. Например: если задача — написать функцию сложения двух чисел, то система будет передавать ей разные комбинации чисел и сверять ответ вашей функции с реальными суммами. Если во всех случаях ответы совпадут, то решение считается верным. Напишите минимум 2 пары входных и выходных данных для того чтобы гарантировать качество проверки.
{% endhint %}

{% hint style="warning" %}
Если у вас включена [настройка "Учитывать время решения при формировании рейтинга"](/docs/settings-contests/other-page.md#nastroika-uchityvat-vremya-resheniya-pri-formirovanii-reitinga), то после перехода участника в задачу начнется фиксация времени выполнения задачи.
{% endhint %}

![Первое предупреждение об отсчете времени](/files/-Mi13-LA8lEPGcq-DAgB)

![Второе предупреждение об отсчете времени](/files/-Mi137ijP9BZDlaozHcI)

Заполните блок с Live coding задачей своими данными и создайте новую задачу с типом "**Тест**".

#### Тест

Вопрос с вариантами ответов на выбор.&#x20;

![](/files/-Mi1Oo3l6MJNRXmurNVh)

Давайте теперь добавим свой вопрос! Для этого нажмите на кнопку "**Добавить свой вопрос**" и произвольно заполните поля "**Название вопроса**" и "**Напишите вопрос**". После заполнения полей нажмите на кнопку "**Добавить вариант ответа**" и добавьте несколько вариантов ответа. Выберите правильный ответ, нажав на галочку рядом с вариантом ответа.

![Пример создания собственного вопроса](/files/-Mi1yPedX9DyRQCUhcKn)

#### Файл

Вопрос с типом "**Файл**" подразумевает, что пользователь загрузит свое решение на платформу. Создайте вопрос с типом "**Файл**" и произвольными данными.

{% hint style="info" %}
Участник может загрузить файл размером **до 200 Mb**.
{% endhint %}

#### Видео

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

{% hint style="info" %}
Размер загружаемого видеофайла не должен **превышать** **200 Mb**.
{% endhint %}

![](/files/-Mi5cCejFfYaQQDOgDav)

Настройка "**Ограничение по времени**" позволяет ограничить длительность видеопрезентации, которую участник проводит через платформу. Вы можете выбрать ограничение по времени в размере **3, 5, 7 или 10 минут**.

{% hint style="info" %}
Все видеозаписи организатор может посмотреть на странице "**Статистики**".
{% endhint %}

Создайте вопрос с типом "**Видео питчинг**" и заполните произвольными данными.

## Gitlab

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

{% hint style="warning" %}
Задание с типом "**Gitlab**" настроить самостоятельно достаточно сложно, поэтому сразу обращайтесь к нам за помощью на [**support@codenrock.com**](mailto:support@codenrock.com)!
{% endhint %}

### Действия организатора

Организатор должен обратиться к нам, чтобы мы смогли создать и подготовить шаблон репозитория для задачи.&#x20;

### Путь участника

Пройдем полный путь участника по решению такой задачи, чтобы понять как этот функционал работает.

* Участник переходит в задачу, где ему выдаются доступы для репозитория. На странице с задачей будут отображаться описание задачи, правила, небольшая помощь по gitlab и, соответственно, доступы.

![Участнику выдаются доступы к репозиторию](/files/ba9W4G69oZnWl6T9rfwn)

{% hint style="info" %}
Доступы в репозиторий для организаторов выдаются по схожей схеме. Организатору нужно просто перейти в задачу так же, как и участнику. Доступы выдадутся автоматически и распространяются на все учетные записи в совместном доступе.
{% endhint %}

* После получения доступа, участник переходит по ссылке в репозиторий и авторизуется  там.

![Интерфейс gitlab](/files/F3ncztaDnoBVLiHAWJF4)

* Участник решает задачу и загружает решение в репозиторий.
* После загрузки решения в репозиторий происходит его сборка. По окончании сборки участник получит письмо с оповещением о статусе проекта. &#x20;

![Письмо с уведомлением об успешной сборке проекта](/files/6rlCMASJXvJULtoVMfyN)

* Если сборка проекта прошла успешно, то участник переходит в задачу, где его ждет кнопка "**Проверить решение**". Нажатие этой кнопки запускает процесс проверки решения и подсчета рейтинга.
* Когда проверка будет заверешена, то участнику на почту придет письмо с информацией о статусе проекта и количество баллов, которое он заработал.

![Письмо с результатами решения](/files/iccDKuYlc3fmVAVlaY5t)

* Участник может перейти в задачу, нажать на кнопку "**Предыдущие решения**" и выбрать несколько решений, которые он считает лучшими, для оценки.

{% hint style="info" %}
Обратите внимание, что для управления доступами к репозиторию и просмотра их статусов, используется настройка ["**Заблокировать gitlab**](/docs/statistiki/komandy.md#zablokirovat-gitlab)" и [фильтр "**Gitlab**"](/docs/statistiki/komandy.md#gitlab) во [вкладке "**Команды**"](/docs/statistiki/komandy.md).
{% endhint %}

## Завершение создания задачи

Итак, теперь у вас есть все навыки для того, чтобы создать свои собственные задания. Вы можете создавать задачи с одиночными заданиями или, как в нашем случае, создать несколько заданий внутри задачи.

Если вы создавали задания вместе с нами, то у вас должен был получиться такой список заданий:

* Одно "**Live coding"** задание;
* Одно задание с типом "**Тест**";
* Одно задание с типом "**Текст**";
* Одно задание с типом "**Файл**";
* Одно задание с типом "**Видео**";

Теперь у вас нас есть практически все типы вопросов для нашей тестовой задачи. Пройдитесь по вкладкам в редакторе задачи и проверьте все ли на месте. Если все хорошо - поздравляю с первой созданной и настроенной задачей!:tada: Пришла пора настроить голосование.&#x20;

Переходим на страницу создания голосования!
