init brojs
All checks were successful
platform/bro-js/challenge-pl/pipeline/head This commit looks good
All checks were successful
platform/bro-js/challenge-pl/pipeline/head This commit looks good
This commit is contained in:
178
memory bank/frontend/README.md
Normal file
178
memory bank/frontend/README.md
Normal file
@@ -0,0 +1,178 @@
|
||||
# Challenge Service - Frontend Documentation
|
||||
|
||||
Документация для фронтенд-разработчиков и преподавателей.
|
||||
|
||||
## 📚 Документы
|
||||
|
||||
### Для всех фронтенд-разработчиков
|
||||
|
||||
1. **[CHALLENGE_FRONTEND_GUIDE.md](./CHALLENGE_FRONTEND_GUIDE.md)**
|
||||
- Основное руководство по интеграции
|
||||
- Сценарии использования
|
||||
- Структуры данных (TypeScript)
|
||||
- API взаимодействие
|
||||
- Готовые компоненты React
|
||||
- Best practices
|
||||
|
||||
2. **[CHALLENGE_REACT_EXAMPLE.md](./CHALLENGE_REACT_EXAMPLE.md)**
|
||||
- Полный пример React + TypeScript приложения
|
||||
- Готовый код компонентов
|
||||
- Custom hooks
|
||||
- State management
|
||||
- Стили
|
||||
|
||||
3. **[CHALLENGE_ANALYTICS_SUMMARY.md](./CHALLENGE_ANALYTICS_SUMMARY.md)**
|
||||
- Метрики для отслеживания
|
||||
- Дашборды (Personal, Admin)
|
||||
- Визуализация данных
|
||||
- Real-time уведомления
|
||||
- A/B тестирование
|
||||
|
||||
### Для преподавателей 🔒
|
||||
|
||||
4. **[TEACHER_GUIDE.md](./TEACHER_GUIDE.md)**
|
||||
- Работа со скрытыми инструкциями для LLM
|
||||
- Настройка Keycloak
|
||||
- Создание и редактирование заданий
|
||||
- UI компоненты для преподавателей
|
||||
- Best practices
|
||||
- Примеры реальных сценариев
|
||||
|
||||
## 🚀 Быстрый старт
|
||||
|
||||
### Для студентов (обычные пользователи)
|
||||
|
||||
1. Прочитайте [CHALLENGE_FRONTEND_GUIDE.md](./CHALLENGE_FRONTEND_GUIDE.md)
|
||||
2. Посмотрите примеры в [CHALLENGE_REACT_EXAMPLE.md](./CHALLENGE_REACT_EXAMPLE.md)
|
||||
3. Используйте готовые компоненты как основу
|
||||
|
||||
### Для преподавателей
|
||||
|
||||
1. Прочитайте [TEACHER_GUIDE.md](./TEACHER_GUIDE.md) 🔒
|
||||
2. Настройте Keycloak (роль `teacher`)
|
||||
3. Используйте скрытые инструкции для улучшения проверки
|
||||
|
||||
## 🎯 Ключевые особенности
|
||||
|
||||
### Для студентов
|
||||
|
||||
- ✅ Простая аутентификация (nickname)
|
||||
- ✅ Просмотр цепочек с прогрессом
|
||||
- ✅ Отправка решений
|
||||
- ✅ Real-time отслеживание проверки
|
||||
- ✅ Персональная статистика
|
||||
- ✅ Feedback от AI
|
||||
|
||||
### Для преподавателей 🔒
|
||||
|
||||
- ✅ Создание заданий через Keycloak
|
||||
- ✅ Скрытые инструкции для LLM
|
||||
- ✅ Управление цепочками
|
||||
- ✅ Просмотр статистики
|
||||
- ✅ Контроль качества проверок
|
||||
|
||||
## 📊 Структура данных
|
||||
|
||||
### Task (с учетом ролей)
|
||||
|
||||
```typescript
|
||||
// Для студента
|
||||
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
|
||||
}
|
||||
```
|
||||
|
||||
## 🔐 Авторизация
|
||||
|
||||
### Студенты
|
||||
|
||||
```typescript
|
||||
// Простая регистрация по nickname
|
||||
POST /api/challenge/auth
|
||||
{ "nickname": "student123" }
|
||||
```
|
||||
|
||||
### Преподаватели
|
||||
|
||||
```typescript
|
||||
// Запросы с токеном Keycloak
|
||||
headers: {
|
||||
'Authorization': 'Bearer <keycloak_token>'
|
||||
}
|
||||
|
||||
// Требуется роль 'teacher' в клиенте 'journal'
|
||||
```
|
||||
|
||||
## 🎨 UI Components
|
||||
|
||||
### Для студентов
|
||||
|
||||
- `AuthForm` - вход по nickname
|
||||
- `ChainList` - список цепочек
|
||||
- `TaskView` - просмотр и решение
|
||||
- `CheckStatus` - отслеживание проверки
|
||||
- `ResultView` - результат
|
||||
- `UserStats` - статистика
|
||||
|
||||
### Для преподавателей 🔒
|
||||
|
||||
- `TeacherTaskForm` - создание с hiddenInstructions
|
||||
- `TaskCard` - с индикацией скрытых инструкций
|
||||
- `AdminDashboard` - полная статистика
|
||||
|
||||
## 📖 Примеры использования
|
||||
|
||||
### Создание задания (преподаватель)
|
||||
|
||||
```typescript
|
||||
const task = await createTask({
|
||||
title: "Реализовать сортировку",
|
||||
description: "# Задание\n\nНапишите функцию...",
|
||||
hiddenInstructions: "Проверь сложность алгоритма O(n log n)" // 🔒
|
||||
})
|
||||
```
|
||||
|
||||
### Отправка решения (студент)
|
||||
|
||||
```typescript
|
||||
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
|
||||
|
||||
## 📚 Дополнительные ресурсы
|
||||
|
||||
- [API документация](../CHALLENGE_API_README.md)
|
||||
- [Архитектура системы](../CHALLENGE_ARCHITECTURE.md)
|
||||
- [Быстрый старт](../CHALLENGE_QUICK_START.md)
|
||||
|
||||
---
|
||||
|
||||
**Версия:** 1.0.0
|
||||
**Дата:** 29 октября 2025
|
||||
**Статус:** ✅ Production Ready
|
||||
|
||||
Reference in New Issue
Block a user