> ## 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.

# Пакеты курсов

> Продажа нескольких курсов единым набором: как формируется пакет и как устроено ценообразование

**Пакет** (`Bundle`) — это особый тип курса, который объединяет несколько отдельных курсов и продаётся как единый продукт. Пакет удобен, когда школа хочет предложить ученику готовую программу обучения по выгодной цене вместо покупки курсов по отдельности.

## Что такое пакет

Пакет создаётся как курс типа `Bundle` (флаг `isBundle`). В отличие от обычного курса, пакет **не содержит собственных уроков** — его наполнение это ссылки на другие курсы школы (`bundleCourses`). Ученик, купивший пакет, получает доступ ко всем вложенным курсам.

<Note>
  Поскольку у пакета нет собственного контента, часть настроек обычного курса для него скрыта — например защита текста от копирования (`protectTextCopy`) и настройки уроков. Эти параметры берутся из вложенных курсов.
</Note>

## Создание пакета

<Steps>
  <Step title="Создайте курс типа «Пакет»">
    При создании курса выберите тип `Bundle`. Задайте название и тип доступа, как для обычного курса.
  </Step>

  <Step title="Добавьте курсы в пакет">
    В разделе «Содержание» вместо модулей и уроков добавляются вложенные курсы. Каждый добавленный курс становится частью набора.
  </Step>

  <Step title="Настройте порядок">
    Курсы в пакете упорядочиваются (`order`) — это влияет на последовательность их отображения ученику.
  </Step>
</Steps>

<img src="https://mintlify.s3.us-west-1.amazonaws.com/exode-faq/images/online-schools/courses/bundle-courses.png" alt="Управление курсами внутри пакета" />

## Управление составом

В разделе «Содержание» пакета отображается список вложенных курсов (`BundleCourseListView`). Здесь можно добавлять новые курсы или удалять существующие — интерфейс подсказывает: «Управляйте курсами в пакете — добавляйте новые или удаляйте существующие».

Каждый вложенный курс (`CourseBundleEntity`) может быть связан с родительскими группами (`parentGroups`), что определяет, в какие группы попадёт ученик после покупки пакета.

## Ценообразование

Пакет — это полноценный продукт, поэтому его стоимость настраивается так же, как у обычного курса: через **запуски и тарифы**. Вы задаёте отдельную цену на весь пакет, независимую от цен вложенных курсов.

| Особенность           | Описание                                                            |
| --------------------- | ------------------------------------------------------------------- |
| Единая цена           | Пакет продаётся по своей цене через тарифы запуска                  |
| Доступ ко всем курсам | Покупка пакета открывает все вложенные курсы                        |
| Выгода для ученика    | Цена пакета обычно ниже суммы отдельных курсов                      |
| Прогресс              | Платформа отслеживает прогресс по каждому вложенному курсу отдельно |

Подробнее о настройке тарифов — в разделе [Запуск и тарифы](/online-schools/courses/launches-and-pricing).

<Tip>
  Пакет отлично работает как «полная программа»: соберите в него базовый, продвинутый и практический курсы и предложите ученику пройти путь целиком со скидкой относительно покупки по отдельности.
</Tip>

## Прогресс по пакету

Для ученика прогресс отображается по каждому вложенному курсу (`BundleCourseProgressMap` — карта `courseId → процент прохождения`). Доступ к следующему курсу пакета может быть заблокирован до завершения предыдущего, в зависимости от настроек последовательности.
