Тесты
Тесты курса (модуль learning): управление тестами, прохождение попыток и результаты.
Методы
| Метод | HTTP | Назначение |
|---|---|---|
ipr.test.list |
GET |
Список тестов |
ipr.test.get |
GET |
Тест по ID |
ipr.test.add |
POST |
Создать тест в курсе |
ipr.test.update |
POST |
Изменить тест |
ipr.test.delete |
POST |
Удалить тест |
ipr.test.attempt.start |
POST |
Начать попытку прохождения теста |
ipr.test.attempt.answer |
POST |
Сохранить ответ на вопрос в рамках попытки |
ipr.test.attempt.finish |
POST |
Завершить попытку |
ipr.test.attempt.list |
GET |
Список попыток прохождения |
ipr.test.result.get |
GET |
Результат попытки с ответами |
Модель доступа
Чтение списка (list) — по ACL обучения; get не требует дополнительной проверки владения курсом сверх обычной авторизации. Изменение теста (add/update/delete) требует canManageCourse(courseId) или привилегированного статуса.
Прохождение (attempt.start/answer/finish) доступно самому пользователю (userId == актор) либо тому, кто им управляет (canManageEmployee). attempt.list для непривилегированных по умолчанию ограничен собственными попытками (если явно не указан доступный filter.userId). result.get доступен самому пользователю, тому, кто им управляет, либо привилегированному.
Требует подключённого модуля learning.
Жизненный цикл попытки
attempt.start → attempt.answer (0..N раз) → attempt.finish
Вопросы попытки формируются при attempt.start — если у теста нет ни одного вопроса, метод вернёт VALIDATION_ERROR.