8.9 KiB
Порядок наполнения LMS данными (через интерфейс)
Всё делается в админке, порядок: администратор → курс (bootstrap) → группы и студенты → лабораторная → раздача вариантов → защита → материалы.
Шаг 1. Деплой
См. DEPLOY.md: Docker + nginx + HTTPS. После старта сервисов
откройте домен — попадёте на /setup, создайте администратора (логин и пароль
храните в секрете, в репозиторий их не писать).
Шаг 2. Курс
Откройте Курсы (/admin/courses). Все лабораторные принадлежат курсу,
поэтому курс должен существовать до импорта лабораторных.
- Существующая база: если курсов ещё нет, нажмите «Создать курс и перенести данные». Bootstrap создаст курс «Промышленное программирование на языке C», привяжет к нему все активные группы и перенесёт существующие лабораторные и главы. Повторный запуск безопасен и не создаёт дублей.
- Новая база: создайте курс кнопкой «+ Новый курс» (номер присвоится автоматически) либо тем же bootstrap.
- После импорта групп (шаг 3) привяжите их к курсу на странице курса, если их не было в момент bootstrap: блок «Привязать группу». Там же назначаются преподаватели — по UUID аккаунта со страницы «Пользователи».
Архивированный курс нельзя выбрать для новой лабораторной или копирования. Без курса создание и импорт лабораторной недоступны: в форме нужно выбрать курс.
Шаг 3. Группы и студенты
Группы → Импорт — загрузите .xls/.xlsx/.csv со списком группы.
Обязательные столбцы:
поток | курс | номер | степень | год набора | ФИО | № | база
Все строки файла должны относиться к одной группе. Группа создаётся по полям
(имя собирается автоматически, например ПИ-11БО). Логином студента становится
номер (№), пароль генерируется (временный, с обязательной сменой при первом
входе). Ключ слияния — student_no: повторный импорт обновляет студента, а не
дублирует.
Импорт атомарный: при ошибке в любой строке данные не меняются, а в интерфейсе показывается отчёт с номерами строк.
Дальше по каждому студенту при необходимости:
- «Сбросить пароль» — выдать новый временный пароль;
- «Добавить существующего» — перевести студента из другой группы;
- «Отчислить из группы» — убрать из группы, студент получает статус «отчислен»; аккаунт, сдачи и оценки сохраняются.
Выгрузить логины: «Логины XLSX» / «CSV».
Шаг 4. Лабораторная
Лабораторные → Импорт — сначала выберите курс (обязательно), затем загрузите ZIP со структурой:
lab.yaml # номер, название, points_max, уровни (code/title), сроки, статус
README.md # общее условие (markdown)
variants/01.md # вариант: front-matter (level, number, title) + текст задания
Примеры — в личном рабочем каталоге (не в репозитории). После импорта на странице лабораторной:
- «Настроить» — срок сдачи, дата защиты, максимум баллов, статус;
- уровни/варианты можно править и добавлять прямо там же;
- «Копировать в курс» — создать копию лабораторной (с уровнями и вариантами) в другом курсе; номер и название можно изменить. Прогресс студентов не копируется, копия создаётся черновиком.
Шаг 5. Раздача вариантов
На странице лабораторной — «Распределить»: выбрать группы, при необходимости «пересоздать заново». Логика: случайная очередь по всем вариантам выбранного уровня; без повторов, пока в уровне есть невыданные варианты; закрепленные вручную не трогаются. Частично/точно — в списке назначений (уровень и вариант по каждому студенту) или массово чекбоксами.
Шаг 6. Оценки и защита
На странице группы (матрица):
- «опубликовать оценки» — показать/скрыть оценки и комментарии студентам;
- «поставить оценку» — балл + комментарии (позитивный/негативный/нейтральный);
- раздел «Индивидуальные задания (защита)»: «Назначить задание» или импорт CSV
(
студент;ЛР;заданиеилистудент;заданиепри выбранной ЛР), «выдать код», «изменить», «текст», после готовности — «доп. задание: начать заново».
Шаг 7. Учебные материалы
Лабораторные → материалы (/learn) доступны гостям. Для наполнения:
создание глав/разделов/статей в админке или импорт ZIP со структурой:
chapters/01-глава/01-раздел/01-статья.md # front-matter: title, slug
assets/ # картинки для md
Материалы видны всем; глобальные материалы редактирует только администратор
(«Материалы»). Преподаватель редактирует материалы своего курса на
/teacher/courses/{id}/content.
Импорт бывает в двух режимах: с галочкой «Удалять разделы и статьи, которых нет в архиве» (синхронизация — архив считается источником истины) и без неё (merge — только добавить и обновить, правки в приложении сохраняются). Для догрузки отдельных статей используйте merge.
Медиа в материалах: картинки и видео кладутся в assets/ архива и вставляются директивами
:::figure assets/имя.png | Подпись и :::video assets/имя.mp4 | Подпись. Лимиты: картинки —
до 10 МБ (png/jpg/jpeg/gif/svg/webp), видео — до 100 МБ (mp4/webm/ogg). Nginx и сервисы
настроены на загрузку до 200 МБ; подробности — в docs/06-authoring.md.
Замечания
- Данные в
*.xls/PDF/PDF-пароли содержат персональные сведения — храните их во временном каталоге и не коммитьте в репозиторий. - Пароли студентов выдаются автоматически; временный пароль нужно менять при первом входе (до смены другие страницы недоступны).