AdminCurator

Аналитика

Детальная аналитика по отдельному тесту: количество попыток, доля завершения, средний/максимальный/минимальный балл, доля сдавших, разбивка по вопросам и гистограмма распределения баллов. Требует право `view_analytics`.

GET/api/v1/t/quizzes/:id/analytics

Аналитика по тесту

AdminCurator JWT право: view_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
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"

Пример ответа

200 OK · application/json
{
  "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Когда
400invalid_id_formatИдентификатор теста не является валидным UUID.
400invalid_include_admin_attemptsЗначение include_admin_attempts не является булевым.
401unauthorizedТокен отсутствует, истёк или недействителен.
403forbiddenУ пользователя нет права view_analytics (например, студент или куратор без флага).
404quiz_not_foundТест не найден в текущей школе.