При регистрации вы получите 30 дней бесплатного доступа

Генерируются ([[ generatingTasks.filter(t => t.status === 'pending' || t.status === 'processing').length ]])

[[ task.request_text | truncate(50) ]]

[[ task.duration_days ]] дней • [[ getTaskStatusText(task.status) ]]

[[ task.progress_message || '' ]]
[[ task.error_message ]]

[[ dashboardStats.total_courses || 0 ]]

Всего курсов

[[ dashboardStats.total_days_completed || 0 ]]

Дней завершено

[[ dashboardStats.total_time_spent || 0 ]]

Минут изучения

[[ dashboardStats.current_streak || 0 ]]

Дней подряд

Активные курсы

[[ course.title ]]

Активен
[[ Math.round(course.progress?.completion_rate || 0) ]]%
[[ course.progress?.completed_days || 0 ]]/[[ course.progress?.total_days || 0 ]] дней

Нет активных курсов

Достижения

[[ getAchievementName(ach.achievement_type) ]]

[[ formatDate(ach.earned_at) ]]

Пока нет достижений

[[ course.title ]]

[[ truncate(course.description, 100) ]]

[[ getCourseProgress(course) ]]%

У вас пока нет курсов

Рекомендуемый

[[ template.title ]]

[[ truncate(template.description, 120) ]]

[[ template.duration_days ]] дней [[ getDifficultyText(template.difficulty_level) ]]

Курсы не найдены

Создать персональный курс

ИИ создаст индивидуальный план обучения под ваши цели

Требуется подписка

Для создания персональных курсов необходима активная подписка

[[ user.first_name ]] [[ user.last_name ]]

[[ user.email ]]

Имя пользователя: [[ user.username || '—' ]]
Дата рождения: [[ user.birth_date || '—' ]]
Статус: [[ user.status === 'active' ? 'Активен' : 'Не активен' ]]
Email подтвержден: [[ user.email_verified ? '✅ Да' : '❌ Нет' ]]

Подписка

Доступен пробный период

30 дней бесплатного доступа ко всем функциям

Пробный период уже был использован

[[ subscription.plan_name ]] [[ getSubscriptionStatusBadge(subscription.status) ]]
[[ getSubscriptionStatusText(subscription.status) ]]
Активирован: [[ formatDate(subscription.trial_started_at) ]]
Заканчивается: [[ formatDate(subscription.trial_ends_at) ]]
Осталось [[ getDaysLeft(subscription.trial_ends_at) ]] дней
Действует с: [[ formatDate(subscription.started_at) ]]
Заканчивается: [[ formatDate(subscription.ends_at) ]]
Осталось [[ getDaysLeft(subscription.ends_at) ]] дней