a68331c86b
- PROJECT_STATUS: что сделано (черновики, версии, разбор, каталог) и планы - DEV_CONTOUR_USER_GUIDE: сценарии для проверяющих на dev-стенде - README, ТЗ, card1, журнал, бэклоги, шаги 01–11+README, спринты, TEST_TABLES: ссылки и примечания - backend/PROGRESS: ссылка на PROJECT_STATUS Made-with: Cursor
2.8 KiB
2.8 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
Результат
- Прохождение теста со случайным порядком вопросов
- Таймер с автозавершением
- Сохранение прогресса
- Навигация по вопросам
Актуальная привязка к коду: ../PROJECT_STATUS.md · индекс шагов: README.md.