Аналитика
Детальная аналитика по отдельному тесту: количество попыток, доля завершения, средний/максимальный/минимальный балл, доля сдавших, разбивка по вопросам и гистограмма распределения баллов. Требует право `view_analytics`.
/api/v1/t/analytics/curatorsАналитика работы кураторов
Возвращает долю закреплённых учеников, которые были активны, вовремя отправляли задания, завершали тесты и пробные ЕНТ. Куратор всегда получает только собственную строку, даже если умеет управлять всеми группами; администратор видит сравнение всех кураторов или выбирает одного через curator_id. Доступно всем кураторам без отдельного флага view_analytics.
from и to включительны. Проценты считаются от текущего числа закреплённых активных учеников. Область куратора объединяет личные назначения и его группы без дублей. Своевременность задания учитывает эффективную дату закрытия курса/модуля/урока, включая групповые расписания. При фильтре по учебному контенту exam_applicable=false, поскольку пробный ЕНТ не связан с курсом.
Query-параметры
| Параметр | Тип | Описание |
|---|---|---|
fromопц. | RFC3339 | Начало периода. По умолчанию — начало текущего месяца. |
toопц. | RFC3339 | Конец периода. По умолчанию — текущий момент. |
curator_idопц. | uuid | Один куратор; учитывается только для администратора. |
group_idопц. | uuid | Оставить закреплённых учеников выбранной группы. |
course_idопц. | uuid | Курс для заданий и тестов. |
module_idопц. | uuid | Модуль для заданий и тестов. |
lesson_idопц. | uuid | Урок для заданий и тестов. |
Пример запроса
curl "https://api.edumentor.kz/api/v1/t/analytics/curators?from=2026-08-01T00%3A00%3A00Z&to=2026-08-31T23%3A59%3A59Z" \
-H "Authorization: Bearer <token>" \
-H "X-Tenant-Subdomain: acme"Пример ответа
{
"success": true,
"data": {
"from": "2026-08-01T00:00:00Z",
"to": "2026-08-31T23:59:59Z",
"exam_applicable": true,
"summary": {
"curators": 4,
"students": 82,
"active": { "students": 71, "rate_pct": 86.59 },
"assignments_on_time": { "students": 64, "rate_pct": 78.05 },
"quizzes_completed": { "students": 68, "rate_pct": 82.93 },
"exams_completed": { "students": 51, "rate_pct": 62.2 }
},
"curators": []
}
}Ошибки
| Код | error | Когда |
|---|---|---|
| 400 | invalid_from | Начало периода не соответствует RFC3339. |
| 400 | invalid_to | Конец периода не соответствует RFC3339. |
| 400 | invalid_date_range | Начало периода позже конца. |
| 403 | forbidden | Страница недоступна ученику. |
/api/v1/t/quizzes/:id/analyticsАналитика по тесту
Возвращает агрегаты по одному тесту. Доступ закрыт правом view_analytics: админ и суперадмин проходят неявно, куратору нужен флаг can_view_analytics, студент получает 403. По умолчанию в подсчёт попадают только попытки студентов; флаг include_admin_attempts=true добавляет попытки админов/кураторов (например, для отладки). Кураторы без права manage_groups видят агрегаты только по своим студентам.
Поля avg_score_pct, max_score_pct, min_score_pct и pass_rate могут быть null: первые три — когда нет отправленных попыток, pass_rate — когда у теста не задан проходной балл. Гистограмма score_distribution содержит 10 корзин (0 — диапазон [0%,10%), 9 — диапазон [90%,100%]).
Параметры пути
| Параметр | Тип | Описание |
|---|---|---|
idобяз. | uuid | Идентификатор теста. |
Query-параметры
| Параметр | Тип | Описание |
|---|---|---|
include_admin_attemptsопц. | boolean | Включить ли попытки админов/кураторов в агрегаты. По умолчанию false (только студенты).Пример: false |
Пример запроса
curl "https://api.edumentor.kz/api/v1/t/quizzes/8f3b1c2a-1d2e-4a5b-9c6d-7e8f9a0b1c2d/analytics?include_admin_attempts=false" \
-H "Authorization: Bearer <token>" \
-H "X-Tenant-Subdomain: acme"Пример ответа
{
"success": true,
"data": {
"quiz_id": "8f3b1c2a-1d2e-4a5b-9c6d-7e8f9a0b1c2d",
"attempt_count": 42,
"submitted_count": 38,
"completion_rate": 90.48,
"avg_score_pct": 73.5,
"max_score_pct": 100.0,
"min_score_pct": 20.0,
"pass_rate": 81.58,
"per_question": [
{
"question_id": "1a2b3c4d-...",
"answered": 38,
"correct": 31,
"success_rate": 0.8158
}
],
"score_distribution": [
{ "bucket": 0, "count": 1 },
{ "bucket": 9, "count": 12 }
]
}
}Ошибки
| Код | error | Когда |
|---|---|---|
| 400 | invalid_id_format | Идентификатор теста не является валидным UUID. |
| 400 | invalid_include_admin_attempts | Значение include_admin_attempts не является булевым. |
| 401 | unauthorized | Токен отсутствует, истёк или недействителен. |
| 403 | forbidden | У пользователя нет права view_analytics (например, студент или куратор без флага). |
| 404 | quiz_not_found | Тест не найден в текущей школе. |