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

Шаг 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

Результат

  • Прохождение теста со случайным порядком вопросов
  • Таймер с автозавершением
  • Сохранение прогресса
  • Навигация по вопросам