# Шаг 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` --- ## Результат - Прохождение теста со случайным порядком вопросов - Таймер с автозавершением - Сохранение прогресса - Навигация по вопросам