Files
Константин Лебединский b42a3c3d55 docs folder with steps
2026-03-21 16:06:24 +05:00

73 lines
2.6 KiB
Markdown

# Шаг 7: Интерфейс прохождения теста
## Цель
Реализовать интерфейс для сотрудника, позволяющий проходить назначенные тесты.
---
## Задачи
### 7.1. Начало прохождения
| Эндпоинт | Метод | Описание |
|----------|-------|----------|
| `/api/attempts/start` | POST | Начать попытку |
| `/api/attempts/:id` | GET | Получить вопросы |
**Логика:**
- Проверить лимит попыток
- Создать запись попытки со статусом `in_progress`
- Перемешать вопросы в случайном порядке
- Запустить таймер (если задан)
### 7.2. Ответ на вопрос
| Эндпоинт | Метод | Описание |
|----------|-------|----------|
| `/api/attempts/:id/answers` | POST | Отправить ответ |
| `/api/attempts/:id/answers` | GET | Получить текущий прогресс |
**Параметры:**
- `question_id` — ID вопроса
- `selected_options` — массив ID выбранных вариантов
### 7.3. Навигация
- Переход к следующему вопросу
- Возврат к предыдущему (если `allow_back = true`)
- Переход к конкретному вопросу по номеру
### 7.4. Завершение теста
| Эндпоинт | Метод | Описание |
|----------|-------|----------|
| `/api/attempts/:id/complete` | POST | Завершить тест |
**Логика:**
- Проверить ответы на все вопросы
- Подсчитать правильные ответы
- Вычислить процент
- Сравнить с порогом зачёта
- Обновить статус попытки на `completed`
### 7.5. Таймер
- Обратный отсчёт на фронтенде
- При истечении — автоматическое завершение
- Проверка на бэкенде при отправке ответа
### 7.6. Обработка просрочки
- При запросе списка назначений проверить дедлайн
- Если дедлайн прошёл и попытка не завершена — пометить как `expired`
---
## Результат
- Прохождение теста со случайным порядком вопросов
- Таймер с автозавершением
- Сохранение прогресса
- Навигация по вопросам