Документация/Руководство администратора/Пользовательские курсы

Пользовательские курсы

Пользовательский курс — это именованная упорядоченная последовательность тем практики и сценариев обучения, которую Вы собираете из каталога контента SecureCodingHub. После сборки курс можно назначать через страницу Задания так же, как Вы назначаете встроенную категорию, и учащиеся потребляют его встроенно по адресу /learn/custom/<courseId>, как будто это один из стандартных курсов.

Когда собирать пользовательский курс

Встроенные семейства OWASP намеренно широкие. Они имеют смысл как отправная точка для развёртываний на уровне всей организации и для паков доказательств соответствия. Но как только Ваша команда прошла один полный проход, следующее задание почти всегда более целевое — онбординг для бэкенд-найма, целенаправленный рефрешер по классу уязвимостей, которые Ваши находки CodeQL продолжают помечать, быстрый разгон по привычкам безопасного программирования для языкового стека, на который команда собирается мигрировать. Вот где пользовательские курсы оправдывают себя: они позволяют вытащить точно те темы и сценарии, которые Вы хотите, в порядке, который Вы хотите, в один именованный набор.

Где это находится

Нажмите Пользовательские курсы в боковой панели в разделе Обучение, чтобы попасть на страницу списка по адресу /organization/custom-courses. Список показывает каждый курс, который собрала Ваша организация, число элементов в каждом, число заданий, на которые он сейчас ссылается, кто его создал и когда он был последний раз обновлён. Нажмите на строку курса, чтобы открыть конструктор для этого курса; нажмите + Новый пользовательский курс вверху справа, чтобы создать новый.

Сборка курса

Конструктор — это двухпанельная раскладка. Левая панель показывает Ваш текущий список элементов с переупорядочиванием через drag-handle и контролем удаления для каждой строки. Правая панель — это пикер: дерево категорий, модулей, тем и сценариев, нарисованное из живого каталога контента. Кнопки Add позволяют добавлять элементы на любой гранулярности:

Добавить на уровнеЭффект
ТемаДобавляет одну тему практики. Учащиеся видят все задания внутри неё, на их собственном предпочитаемом языке согласно Настройки стека.
СценарийДобавляет один сценарий обучения. Учащиеся проходят пошаговое прохождение как в Режим обучения.
МодульРазворачивает модуль до составляющих его тем и добавляет каждую как отдельный элемент (поэтому Вы можете переупорядочить их или удалить конкретные впоследствии).
КатегорияТо же, что Модуль, но на уровне семейства OWASP. Полезно как отправная точка, которую Вы затем подрезаете.

Сохраняйте курс в любой момент; частичные сохранения разрешены. Name — единственное обязательное поле. Опциональные поля Description, Icon и Color позволяют брендировать курс внутри интерфейса учащегося.

Назначение пользовательского курса

Из Задания → Новое задание выберите Custom как область контента и выберите Ваш курс из выпадающего списка. Остальная часть формы задания ведёт себя так же, как для встроенного контента — выберите назначенного (пользователь, команда или вся организация), выберите срок, выберите обязательное или опциональное и создайте. Прогресс назначенного отслеживается элемент за элементом против контента курса, а страница Деталей задания суммирует их в тот же процент завершения, который используют OWASP-отслеживаемые задания.

Редактирование и удаление

Откройте курс, чтобы изменить его имя, описание, иконку, цвет или список элементов. Изменения элементов применяются немедленно к активным заданиям — добавление элемента поднимает знаменатель для учащихся в полёте, удаление — опускает. Переупорядочивание не влияет на математику завершения; оно только меняет порядок отрисовки элементов в интерфейсе учащегося.

Действие Удалить устанавливает курс неактивным. Он перестаёт появляться в списке, в пикере создания задания и в поверхности потребления учащегося. Исторические задания, ссылающиеся на курс, продолжают сообщать о своём существующем прогрессе; они просто не будут принимать новых назначенных, как только курс исчезнет.

Программный доступ

Всё в админ-интерфейсе также достижимо из публичного API — см. API → Пользовательские курсы для форм JSON-запросов и ответов. Распространённые автоматизации включают синхронизацию списка кураторских курсов из версионированного репозитория контроля исходного кода и программную сборку онбординг-курсов на команду из метаданных команды.