Files
TestingWebApp/docs/шаги/07-test-taking.md
T
Константин Лебединский a68331c86b docs: статус проекта, инструкция dev, обновление всех .md
- PROJECT_STATUS: что сделано (черновики, версии, разбор, каталог) и планы
- DEV_CONTOUR_USER_GUIDE: сценарии для проверяющих на dev-стенде
- README, ТЗ, card1, журнал, бэклоги, шаги 01–11+README, спринты, TEST_TABLES: ссылки и примечания
- backend/PROGRESS: ссылка на PROJECT_STATUS

Made-with: Cursor
2026-04-24 22:12:06 +05:00

78 lines
2.8 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`
---
## Результат
- Прохождение теста со случайным порядком вопросов
- Таймер с автозавершением
- Сохранение прогресса
- Навигация по вопросам
---
*Актуальная привязка к коду: [../PROJECT_STATUS.md](../PROJECT_STATUS.md) · индекс шагов: [README.md](README.md).*