Перейти к содержанию

Подсистема «Аналитика и отчётность»

Модуль локального сбора и консолидированной аналитики. Автоматизированное получение, проверка, нормализация, хранение, агрегирование и визуальный анализ обезличенной статистики от всех ПАК и подсистем платформы.


Назначение

  • Консолидация статистики от всех источников (собственное ПО и внешние ПАК) в едином хранилище
  • Построение дашбордов и отчётов для анализа посещаемости, вовлечённости и профессиональных интересов
  • Автоматическая генерация текстовых выводов и рекомендаций на основе данных
  • Поддержка публичного аналитического режима на LED-экране

Источники событий

Источник Описание Тип
led_platform Собственное ПО LED-платформы (сценарии, викторины, командная игра) Собственный
profstart Модуль «ПрофСтарт» (профориентационный тест) Собственный
profession_avatar ПАК «Аватар профессий» (генерация фото в образах профессий) Внешний
tree_of_professions ПАК «Древо профессий» Внешний
regional_map ПАК «Интерактивная карта региона» Внешний
profbattle ПАК «Профбаттл» Внешний
feedback Модуль обратной связи Собственный

Принципы интеграции внешних ПАК

  • Отдельный адаптер для каждого внешнего ПАК
  • Приоритет: локальный REST API, HTTP API, WebSocket
  • При отсутствии API: агент-коллектор, экспортные файлы JSON/CSV, TCP/UDP
  • Неблокирующая интеграция (отказ внешнего ПАК не влияет на работу системы)
  • Минимально необходимые права учётных данных

Модель события

Единая модель статистического события для всех источников:

Поле Тип Описание
id UUID Уникальный идентификатор (идемпотентность)
device_type string Тип оборудования — см. Источники событий
software_id string Программный комплекс — см. Источники событий
session_id UUID, nullable Локальная сессия на терминале
user_id UUID ID пользователя (гостя или авторизованного) — всегда заполнен
payload json Дополнительные параметры (action_type, entity_type, entity_id, result, duration, content_version)
created_at timestamp Дата и время события

Типы событий (примеры)

Событие Источник Описание
session_started Все Начало сессии на терминале
session_completed Все Завершение сессии
question_answered LED, ПрофСтарт Ответ на вопрос
profession_selected Все Пользователь выбрал профессию
profession_recommended Древо профессий, ПрофСтарт Система рекомендовала профессию
employer_viewed Карта региона Просмотр информации о работодателе
educational_institution_viewed Карта региона Просмотр учебного заведения
survey_submitted Обратная связь Отправка анкеты
test_completed ПрофСтарт Завершение теста с результатом
avatar_generated Аватар профессий Генерация фото в образе профессии
avatar_viewed Аватар профессий Просмотр аватара
avatar_shared Аватар профессий Поделиться аватаром (по QR)

Различение действий

В payload.action_type различаем: - user_action — действие пользователя (выбор профессии, ответ на вопрос) - system_action — действие системы (рекомендация профессии, предложение учебного заведения)


Нормализация и справочники

Все данные от внешних ПАК нормализуются к единой иерархии на основе наших сущностей:

Industry (Отрасль)
  └── Direction (Направление)
        └── Profession (Профессия)
              └── Competence (Компетенция)

Внешние идентификаторы

  • Мы предоставляем внешним ПАК наши справочники (профессии, отрасли, направления), чтобы они использовали наши идентификаторы
  • Если ПАК использует свои идентификаторы, они хранятся как внешние идентификаторы (может быть несколько для одной сущности из разных ПАК)
  • Сопоставление внешних идентификаторов с нашими сущностями хранится в отдельной сущности ExternalIdentifier

→ Подробнее о сущностях нормализации


Дашборды и отчёты

→ Дашборды аналитики

Отчёты

Автоматическая генерация

  • Формирование за произвольный период (день, неделя, месяц, произвольный диапазон)
  • Отдельные отчёты по каждому ПАК и консолидированный
  • Автоматическая генерация текстовых выводов на основе данных:
  • "Самая популярная профессия — X (Y выборов)"
  • "Среднее время прохождения сценария — Z минут"
  • "Доля завершённых сессий — N%"
  • "Наибольший интерес проявлен к отрасли X"
  • Рекомендации по улучшению контента

Форматы выгрузки

  • CSV
  • XLSX
  • PDF (с графиками и текстовыми выводами)

Библиотеки визуализации

Экспорт и визуализация реализуются через библиотеки: - Графики и диаграммы: Chart.js / D3.js / Recharts (выбирается при реализации) - Тепловые карты: D3.js / Plotly - Воронки: D3.js / кастомная реализация - Экспорт в PDF: jsPDF / Puppeteer (для серверной генерации) - Экспорт в CSV/XLSX: PapaParse / SheetJS

Все дашборды и отчёты поддерживают выгрузку в указанные форматы через эти библиотеки.

Шаблоны отчётов

  • Сохранение шаблонов отчётов
  • Плановое формирование (по расписанию) без внешних сервисов

Хранение и производительность

Требования

Параметр Значение
Событий в сутки не менее 100 000
Событий в хранилище не менее 10 000 000
Отображение в дашборде не позднее 60 секунд
Дашборд за 12 месяцев не более 5 секунд
Срок хранения настраиваемый, по умолчанию 36 месяцев

Слои хранения

  • Сырые события — исходные данные от всех источников
  • Нормализованные данные — после нормализации и сопоставления
  • Агрегаты — предварительно агрегированные данные для дашбордов
  • Справочники — профессии, отрасли, направления, компетенции
  • Журналы — логи операций, аудит

Взаимодействие с другими подсистемами

  • Получает события от: LED-медиаплатформа, ПрофСтарт, Обратная связь, внешние ПАК
  • Предоставляет данные для: Цифровой профиль (агрегированная статистика для рекомендательной модели)
  • Использует Идентификацию для аутентификации пользователей аналитики
  • Использует справочники профессий, отраслей, направлений из CMS