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

Версия 1.6

Дата: 17.09.2026


Изменения

API — новые группы эндпоинтов

  • Профессии — CRUD для профессий, отраслей и направлений; фильтры по direction_id, industry_id, поиск по названию
  • Компетенции — CRUD (/competences)
  • Организации — CRUD (/organizations)
  • Профессии в действии — полная группа эндпоинтов:
  • CMS: видеосценарии (CRUD), ветки (создание, обновление, удаление)
  • Показ: создание сессии, получение активной, остановка, состояние, голосование
  • Мобильный клиент: join, vote

API — WebSocket

  • Добавлена страница «WebSocket API» (api/websocket.md) — описание эндпоинтов для обновлений в реальном времени
  • Викторина — ws://host/api/v1/quiz/sessions/{id}/ws: события session_state, question_started, votes_update, question_revealed, round_finished, session_finished
  • Профессии в действии — ws://host/api/v1/interactive-video/sessions/{id}/ws: события phase_changed, votes_updated, scenario_finished, session_finished
  • Описание WebSocket добавлено в quiz.yaml (комментарий с примерами событий)

API — синхронизация таймера

  • QuizTimerState — заменён remaining на ends_at (абсолютный UNIX timestamp в мс) + remaining_at_pause (для паузы)
  • Клиент вычисляет: remaining = ends_at - now. Решает проблему рассинхронизации при задержках сети
  • Аналогичная модель таймера в InteractiveVideoState.voting_point.timer

Сущности — интерактивное видео

  • Переименование: VideoScenario → InteractiveVideoScenario, VideoScenarioBranch → InteractiveVideoScenarioBranch
  • Новое поле prompt в InteractiveVideoScenarioBranch — текст вопроса в точке выбора (для веток с дочерними вариантами)
  • Обновлены связи в File (VideoScenario → InteractiveVideoScenario)

Интерфейсы — LED-экран

  • Профессии в действии (led-screen/professions-active.md):
  • WebSocket-подключение для уведомлений
  • Фазы показа: playing, waiting, result
  • Синхронизация таймера через ends_at
  • Формат QR-кода для подключения зрителей
  • Привязка элементов интерфейса к полям API (prompt, text, winner_branch_id, votes)
  • Викторина (led-screen/quiz.md):
  • WebSocket-подключение для обновлений в реальном времени
  • Описание событий при подключении

Интерфейсы — мобильный клиент

  • Ответ (mobile-client/answer.md):
  • API голосования для «Профессии в действии» (POST /interactive-video/sessions/{sessionId}/vote)
  • Подключение по QR-коду (извлечение session_id, device_id)
  • Восстановление сессии для интерактивного видео
  • WebSocket-обновления для викторины и интерактивного видео

Интерфейсы — планшет оператора

  • Профессии в действии (operator-tablet/professions.md):
  • Восстановление сессии (GET /interactive-video/sessions/active)
  • Выбор конкретных видеосценариев (опционально)
  • API-привязки для запуска/остановки
  • Управление раундом (operator-tablet/round-control.md):
  • WebSocket-подключение для обновлений

Интерфейсы — административный портал

  • Разделение страницы «Видеосценарии и аватары» → две отдельные страницы:
  • «Видеосценарии» (admin-portal/video-scenarios.md) — только интерактивные видео
  • «Аватары профессий» (admin-portal/profession-avatars.md) — новая страница

CMS — видеосценарии

  • Добавлен раздел «API» с эндпоинтами для видеосценариев и веток
  • Новое поле «Текст вопроса» в карточке ветки — вопрос, показываемый после видео (для веток с дочерними вариантами)
  • Обновлены правила валидации и элементы карточки

LED-платформа — заставка

  • Добавлен API запуска показа видеосценариев из заставки (POST /interactive-video/sessions, stop, state)
  • Оператор может выбрать конкретные видеосценарии

Концепция

  • Обновлена блок-схема: VideoScenario → InteractiveVideoScenario

Уточнения

  • Теги API — переименованы: «Интерактивное видео» → «Профессии в действии» (CMS, Оператор, LED, Зритель)
  • Сущность «Организации» — объединены EducationalInstitution и Employer в единую сущность Organization с типом education (учебное заведение) или employer (работодатель)