Phase 6: accordion in /learn; README feature notes; tests green

- collapse chapters/sections via styled <details> with chevrons
- identity testcontainers smoke passes on JDK 21
- README: student UX, comments, JDK note (logback ThrowableProxy in
  fat-jars → restart recovery), data dirs
This commit is contained in:
2026-09-12 02:00:45 +03:00
parent 76a9a915c2
commit 5e60cc3819
3 changed files with 51 additions and 13 deletions

View File

@@ -59,10 +59,28 @@ progress `:8083`, web `:8090`. Интерфейс: `http://localhost:8090`.
markdown (код, спойлеры, картинки; санитизация OWASP); импорт ZIP
(`chapters/N-глава/N-раздел/N-статья.md` + `assets/`); создание/переименование/
удаление глав, разделов, статей; перенос статей между разделами.
- **Студент**: видит опубликованные лабы, свой вариант с условием (markdown),
сроки сдачи/защиты и оценки.
- **Студент**: дашборд успеваемости (сдано, средний балл, лучшая/слабая оценка),
карточки опубликованных лаб, страница лабы: условие, свой вариант, сдача
файлов (zip/.c, переотправка до дедлайна, история, скачивание последней),
комментарий преподавателя к оценке, защита по одноразовому коду (30 мин).
- **Комментарии к оценкам**: тональность (pos/neu/neg), хранятся в БД,
автоподсказки при вводе ранжируются по частоте использования; видны студенту чипсами.
- UI: светлая/тёмная тема (сохраняется в localStorage), модальные окна вместо
отдельных страниц, фавиконка, адаптивная вёрстка без inline-стилей.
отдельных страниц, аккордеоны глав/разделов в `/learn`, фавиконка,
адаптивная вёрстка без inline-стилей.
## Примечания
- **JDK 21 обязателен для runtime**. В связке Spring Boot 4.0.x + fat-jar logback
не находит `ThrowableProxy`, и это падает при любом исключении в потоке ответа.
Если после деплоя сервис вдруг «висит» на страницах (а `/actuator/health` даёт 200) —
лечится перезапуском (`./run.sh restart`).
- Даты хранятся в UTC (instant), а в UI конвертируются в Europe/Moscow
(`DateUtils`); формы datetime-local отправляются в московском времени.
- Капча/rate-limit на входе отсутствует — для учебного стендома оставлено;
пароли студентов показываются один раз при выдаче.
- `lms.submissions.dir` (default ./data/submissions) и `lms.content.assets-dir`
держите на постоянном томе при деплое.
## Сборка и тесты