All checks were successful
platform/bro-js/challenge-pl/pipeline/head This commit looks good
Challenge Service - Frontend Documentation
Документация для фронтенд-разработчиков и преподавателей.
📚 Документы
Для всех фронтенд-разработчиков
-
- Основное руководство по интеграции
- Сценарии использования
- Структуры данных (TypeScript)
- API взаимодействие
- Готовые компоненты React
- Best practices
-
- Полный пример React + TypeScript приложения
- Готовый код компонентов
- Custom hooks
- State management
- Стили
-
CHALLENGE_ANALYTICS_SUMMARY.md
- Метрики для отслеживания
- Дашборды (Personal, Admin)
- Визуализация данных
- Real-time уведомления
- A/B тестирование
Для преподавателей 🔒
- TEACHER_GUIDE.md
- Работа со скрытыми инструкциями для LLM
- Настройка Keycloak
- Создание и редактирование заданий
- UI компоненты для преподавателей
- Best practices
- Примеры реальных сценариев
🚀 Быстрый старт
Для студентов (обычные пользователи)
- Прочитайте CHALLENGE_FRONTEND_GUIDE.md
- Посмотрите примеры в CHALLENGE_REACT_EXAMPLE.md
- Используйте готовые компоненты как основу
Для преподавателей
- Прочитайте TEACHER_GUIDE.md 🔒
- Настройте Keycloak (роль
teacher) - Используйте скрытые инструкции для улучшения проверки
🎯 Ключевые особенности
Для студентов
- ✅ Простая аутентификация (nickname)
- ✅ Просмотр цепочек с прогрессом
- ✅ Отправка решений
- ✅ Real-time отслеживание проверки
- ✅ Персональная статистика
- ✅ Feedback от AI
Для преподавателей 🔒
- ✅ Создание заданий через Keycloak
- ✅ Скрытые инструкции для LLM
- ✅ Управление цепочками
- ✅ Просмотр статистики
- ✅ Контроль качества проверок
📊 Структура данных
Task (с учетом ролей)
// Для студента
interface ChallengeTask {
_id: string
title: string
description: string // Markdown
createdAt: string
}
// Для преподавателя (teacher)
interface ChallengeTask {
_id: string
title: string
description: string // Markdown
hiddenInstructions: string // 🔒 Только для преподавателей
creator: object // 🔒 Только для преподавателей
createdAt: string
}
🔐 Авторизация
Студенты
// Простая регистрация по nickname
POST /api/challenge/auth
{ "nickname": "student123" }
Преподаватели
// Запросы с токеном Keycloak
headers: {
'Authorization': 'Bearer <keycloak_token>'
}
// Требуется роль 'teacher' в клиенте 'journal'
🎨 UI Components
Для студентов
AuthForm- вход по nicknameChainList- список цепочекTaskView- просмотр и решениеCheckStatus- отслеживание проверкиResultView- результатUserStats- статистика
Для преподавателей 🔒
TeacherTaskForm- создание с hiddenInstructionsTaskCard- с индикацией скрытых инструкцийAdminDashboard- полная статистика
📖 Примеры использования
Создание задания (преподаватель)
const task = await createTask({
title: "Реализовать сортировку",
description: "# Задание\n\nНапишите функцию...",
hiddenInstructions: "Проверь сложность алгоритма O(n log n)" // 🔒
})
Отправка решения (студент)
const { queueId } = await submitSolution(userId, taskId, result)
// Polling
const submission = await pollCheckStatus(queueId, (status) => {
console.log('Status:', status.status)
})
🛠️ Технологии
- React + TypeScript
- Keycloak для авторизации преподавателей
- Context API / Redux для state
- React Markdown
- Fetch API
📚 Дополнительные ресурсы
Версия: 1.0.0
Дата: 29 октября 2025
Статус: ✅ Production Ready