04-student

04. Руководство student

Аудитория. Ученик, проходящий курс. Минимально знать что такое браузер.


Вход

  1. Открой http://127.0.0.1:3500/login (в проде — адрес вашей школы).
  2. Введи email и пароль, выданные школой.
  3. Демо-учётка в dev: student@local / change_me_locally.

После входа попадёшь на /dashboard.


Что видит student

Нет доступа к:


Как проходить курс

  1. /courses → выбрать курс → открывается /courses/[id] (текущая опубликованная версия).
  2. Страница структурирована: Модуль → Лекция → Блок.
  3. Каждый блок — один из 11 типов. Читай / отвечай / интерактивь.

Типы блоков и что с ними делать

Тип Что делать
text Просто читай. Подсвеченные слова со {{term:...}} — ховер показывает определение из глоссария
quiz_single Выбери один вариант и нажми «Проверить»
quiz_multi Выбери все подходящие варианты и нажми «Проверить»
flashcard_deck Переворачивай карточку (front→back), листай next/prev
ordering Перетащи элементы в правильный порядок
matching Соедини пары линиями (drag-and-drop)
fill_in_the_blank Впиши пропущенные слова в поля
code_runner Напиши код в Monaco-редакторе, нажми «Run» — Judge0 исполнит и покажет вывод
image Просто смотришь картинку
audio Нажми play
embed Видео — play

События, которые система пишет автоматически

Когда ты открываешь блок — отправляется view.
Когда отвечаешь — attempt + pass или fail.
Когда заканчиваешь модуль/курс — complete.
Пропускаешь блок — skip.

Эти события идут в learner_events (через POST /learner/events). Они нужны для двух вещей:


«Нужна подсказка?» (адаптивное обучение)

Если ты ошибся в интерактивном блоке (quiz_*, flashcard_deck, fill_in_the_blank, ordering, matching), под блоком появится кнопка «Нужна подсказка?».

Нажми — и AI-агент AdaptiveSupplementer сгенерирует для тебя дополнительный блок:

Ограничения:

Смысл: не рассказать правильный ответ, а помочь понять тему на другом материале.


Оплата (если у школы платная подписка)

  1. Если доступ к курсу закрыт — школа направит на /billing.
  2. Выбирай провайдера (stripe / vipps / paypal / mock).
  3. Хочешь проверить без реальной оплаты в dev — mock → «Pay» → всё работает.
  4. После успешной оплаты — /billing/success, доступ к курсу открывается автоматически (webhook приходит на сервер идемпотентно).

Мобильная версия

Frontend — Next.js на Tailwind + мобайл-first дизайн-система .lms-*. Открывай тот же URL с телефона — работает.
Отдельное приложение Capacitor — в Phase 6+.


Частые вопросы

Почему меня разлогинило? Access-токен живёт 15 минут, но refresh-токен — 2 месяца, он обновляется автоматически. Если всё равно выбросило — возможно ты вышел через /auth/logout.

Я открываю курс с телефона и ноутбука — получу две сессии? Нет. Логин с нового устройства присоединяется к существующей сессии и продлевает её (rolling window).

Почему «Нужна подсказка?» не работает? Либо ты уже исчерпал лимит 5/день, либо сетевая ошибка — попробуй через минуту. Если регулярно — напиши teacher'у / school_admin'у.

Код в code_runner не компилируется? Судя по всему — ошибка у тебя. Judge0 показывает stderr — прочти внимательно.


Ссылки