> ## Documentation Index
> Fetch the complete documentation index at: https://faq.exode.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Использование заданий

> Подключение заданий из базы к урокам и практикам, повторное использование и банк вопросов

## Зачем нужна база заданий

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

Каждое подключение работает через механизм **шаблонов**: задание из базы выступает шаблоном
(`isTemplate`), а в уроке создаётся его экземпляр, ссылающийся на исходное задание
(`sourceTaskId`). Поле `updatedBySourceAt` фиксирует, когда экземпляр был обновлён из
исходного задания.

## Подключение задания к практике урока

При наполнении практики урока заданиями открывается конструктор со списком заданий. Внизу
списка расположена сетка добавления, где первым пунктом идёт кнопка **Из базы заданий**
(рядом с кнопками создания нового задания по каждому типу).

<img src="https://mintlify.s3.us-west-1.amazonaws.com/exode-faq/images/online-schools/task-bank/selector-add-grid.png" alt="Сетка добавления: «Из базы заданий» и создание нового задания" />

<Steps>
  <Step title="Откройте базу заданий">
    Нажмите **Из базы заданий** — под списком развернётся панель выбора (`TaskBaseSelector`)
    с заголовком «База заданий».
  </Step>

  <Step title="Отфильтруйте нужные задания">
    В панели доступны фильтры: **тип ответа**, **сложность**, **теги** и строка **поиска по
    вопросам**. Комбинируйте их, чтобы быстро найти подходящие задания.
  </Step>

  <Step title="Отметьте задания">
    Отметьте одно или несколько заданий в списке. Внизу появится кнопка **Добавить (N)**,
    где N — количество выбранных заданий.
  </Step>

  <Step title="Добавьте в практику">
    Нажмите **Добавить (N)** — выбранные задания подключатся к практике как экземпляры шаблонов.
    Список сразу прокрутится к добавленным заданиям.
  </Step>
</Steps>

Технически подключение выполняется мутациями, создающими практические задания из шаблонов:

```graphql theme={null}
mutation CourseLessonPracticeTaskManageCreateManyFromTemplate(
    $lessonPracticeId: Int!,
    $variantId: Int!,
    $taskUuids: [String!]!,
) {
    courseLessonPracticeTaskManageCreateManyFromTemplate(
        lessonPracticeId: $lessonPracticeId,
        variantId: $variantId,
        taskUuids: $taskUuids,
    ) {
        id
        order
        variantId
        task {
            id
            uuid
        }
    }
}
```

Для добавления одного задания используется аналогичная мутация
`courseLessonPracticeTaskManageCreateFromTemplate`.

<Note>
  Тот же выбор из базы доступен не только в практике урока. Селектор заданий используется
  в нескольких местах платформы — при редактировании контентного блока с вопросом
  (`TaskQuestionContentElement`) и в форме ИИ-генерации практики урока.
</Note>

## Создать новое или взять из базы

В момент наполнения практики у вас всегда есть выбор:

| Способ                | Действие                                              | Когда использовать                                  |
| --------------------- | ----------------------------------------------------- | --------------------------------------------------- |
| Создать новое задание | Кнопка типа задания в сетке «Добавить новое задание»  | Задания ещё нет в базе, его нужно набрать с нуля    |
| Взять из базы         | Кнопка **Из базы заданий** → выбор и **Добавить (N)** | Задание уже существует и его нужно переиспользовать |

## Повторное использование и связь с исходным заданием

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

* В списке базы колонка **Уроки** (`lessonsCount`) показывает, в скольких уроках задействовано
  задание. По наведению подгружается список конкретных уроков и курсов, где оно используется
  (`TaskFindOneLessons`).
* Список базы можно отфильтровать по **курсу** и **уроку**, чтобы увидеть, какие задания
  уже подключены к конкретному материалу.
* Шаблон задания создаётся мутацией `taskManageCreateTemplate`, а отвязать шаблон от уроков
  можно через `taskManageDeleteTemplate` (с опциональным удалением самого шаблона).

<Tip>
  Одно задание из базы можно подключить сразу к нескольким урокам и вариантам. Благодаря связи
  через `sourceTaskId` изменения исходного задания могут распространяться на его экземпляры.
</Tip>

## Банк вопросов «Мои вопросы»

В навигации школьной платформы предусмотрен отдельный раздел **Мои вопросы**
(`/my-questions`) — личный банк вопросов пользователя.

<Warning>
  На текущий момент страница «Мои вопросы» (`QuestionListMinePage`) — это заготовка: маршрут
  и заголовок раздела существуют, но содержимое ещё не реализовано. Для управления заданиями
  школы используйте раздел **База заданий** (`/manage/tasks`), описанный выше.
</Warning>
