Files
LMS/deploy/IMPORT.md
Vladislav Kopnin d04207302a Phase 7: deployment, data import, UI hardening and security fixes
Docker/prod deployment:
- multi-stage Dockerfile (JDK21 build, JRE21 run), docker-compose.prod.yml,
  nginx config for lms.our-place.ru, deploy.sh; DEPLOY/IMPORT guides (UI flow)
- Fix Docker 401: LMS_JWT_JWK_SET_URI for academic/progress; forward-headers

Variant distribution (lab page only):
- round-robin by student level, shared random queue across selected groups,
  least-used variants, manual pins always preserved; occupied/dup labels
- setup page: single form + one «Сохранить всё», batch level/variant for
  selected students (checkboxes)

Grades, defense, materials:
- publication gate + comment lists; defense CSV import (2/3 cols, quotes)
- additional task after defense ("начать заново"); enroll/unenroll students
  from group page; temporary-password lock (no navigation until changed) and
  persistent "Смена пароля"; forced change once
- chapter page /learn/{c}; header: LMS home, Войти, user -> dashboard,
  compact theme toggle; responsive mobile header
- markdown: single newlines are soft breaks; highlight.js with light/dark themes
- lab/content imports ZIP-only (lab.yaml+README+variants/assets,
  chapters tree+assets); duplicate lab numbers rejected; variant ordering
  and date defaults honored

Fixes:
- 500 on student create (@MapsId set before persist); broken dialogs/JS refs in group page
2026-09-15 00:09:28 +03:00

79 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Порядок наполнения LMS данными (через интерфейс)
Всё делается в админке, порядок: администратор → группы и студенты → лабораторная →
раздача вариантов → защита → материалы.
## Шаг 1. Деплой
См. [`DEPLOY.md`](DEPLOY.md): Docker + nginx + HTTPS. После старта сервисов
откройте домен — попадёте на `/setup`, создайте администратора (логин и пароль
храните в секрете, в репозиторий их не писать).
## Шаг 2. Группы и студенты
**Группы → Импорт** — загрузите `.xls`/`.xlsx`/`.csv` со списком группы
(столбцы: «Студенческий номер», «Фамилия Имя Отчество», «Основа обучения»).
Название группы берётся из файла или указывается при импорте. Логином студента
становится студенческий номер, пароль генерируется (временный, с обязательной
сменой при первом входе).
Дальше по каждому студенту при необходимости:
* **«Сбросить пароль»** — выдать новый временный пароль;
* **«Добавить существующего»** — перевести студента из другой группы;
* **«Отчислить из группы»** — убрать из группы (аккаунт и данные сохраняются).
Выгрузить логины: **«Логины XLSX» / «CSV»**.
## Шаг 3. Лабораторная
**Лабораторные → Импорт** — ZIP со структурой:
```text
lab.yaml # номер, название, points_max, уровни (code/title), сроки, статус
README.md # общее условие (markdown)
variants/01.md # вариант: front-matter (level, number, title) + текст задания
```
Примеры — в личном рабочем каталоге (не в репозитории). После импорта на
странице лабораторной:
* «Настроить» — срок сдачи, дата защиты, максимум баллов, статус;
* уровни/варианты можно править и добавлять прямо там же.
## Шаг 4. Раздача вариантов
На странице лабораторной — **«Распределить»**: выбрать группы, при необходимости
«пересоздать заново». Логика: случайная очередь по всем вариантам выбранного
уровня; без повторов, пока в уровне есть невыданные варианты; закрепленные
вручную не трогаются. Частично/точно — в списке назначений (уровень и вариант по
каждому студенту) или массово чекбоксами.
## Шаг 5. Оценки и защита
На странице группы (матрица):
* **«опубликовать оценки»** — показать/скрыть оценки и комментарии студентам;
* **«поставить оценку»** — балл + комментарии (позитивный/негативный/нейтральный);
* раздел «Индивидуальные задания (защита)»: «Назначить задание» или импорт CSV
(`студент;ЛР;задание` или `студент;задание` при выбранной ЛР), «выдать код»,
«изменить», «текст», после готовности — «доп. задание: начать заново».
## Шаг 6. Учебные материалы
**Лабораторные → материалы (`/learn`)** доступны гостям. Для наполнения:
создание глав/разделов/статей в админке или **импорт ZIP** со структурой:
```text
chapters/01-глава/01-раздел/01-статья.md # front-matter: title, slug
assets/ # картинки для md
```
Материалы видны всем; для редактирования — «Материалы» с правами администратора.
## Замечания
* Данные в `*.xls`/PDF/PDF-пароли содержат персональные сведения — храните их во
временном каталоге и не коммитьте в репозиторий.
* Пароли студентов выдаются автоматически; временный пароль нужно менять при
первом входе (до смены другие страницы недоступны).