2.6 KiB
2.6 KiB
Онбординг-туры для платформы
Контекстные подсказки при первом посещении страниц для менторов, студентов и родителей. Используется библиотека Driver.js.
Архитектура
Backend
- Поле User.onboarding_tours_seen (JSONField):
{"mentor-dashboard": true, "mentor-schedule": false, ...}— какие туры уже просмотрены. - API:
GET /profile/settings/— возвращаетonboarding_tours_seenв ответе.PATCH /profile/update_settings/— принимаетonboarding_tours_seenи сливает с текущим состоянием.
Frontend
- OnboardingProvider (
contexts/OnboardingContext.tsx): при смене страницы проверяет, нужен ли тур для текущей роли. Если тур ещё не просмотрен — запускает Driver.js. - Шаги (
lib/onboarding-steps.ts): определения шагов по страницам и ролям (MENTOR_ONBOARDING, CLIENT_ONBOARDING, PARENT_ONBOARDING). - data-tour атрибуты: элементы с
data-tour="..."используются как цели для подсветки (например,mentor-income,schedule-calendar,client-lessons).
Страницы и шаги
Ментор
- dashboard — Динамика доходов, Ближайшие занятия, Недавние сдачи, Навигация
- schedule — Календарь, форма создания занятия
- students, materials, homework, feedback, analytics, payment, profile
Студент (client)
- dashboard — Ближайшие занятия, Навигация
- schedule, materials, homework, my-progress, request-mentor, profile
Родитель
- dashboard — Выбор ребёнка, Занятия ребёнка, Навигация
- homework, my-progress, profile
Добавление новых шагов
- Добавить шаги в
lib/onboarding-steps.tsв нужный объект (MENTOR_ONBOARDING, CLIENT_ONBOARDING, PARENT_ONBOARDING). - Добавить
data-tour="уникальный-id"на целевой элемент в компоненте. - Шаги без
elementили с несуществующим селектором отображаются как overlay по центру.
Ручной запуск тура
const { runTourManually } = useOnboarding();
runTourManually('dashboard'); // для текущей роли