You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.6 KiB
2.6 KiB
Шаг 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
Результат
- Прохождение теста со случайным порядком вопросов
- Таймер с автозавершением
- Сохранение прогресса
- Навигация по вопросам