Функционал моделей событий для видео аналитики: различия между версиями
Нет описания правки |
|||
| Строка 1: | Строка 1: | ||
== '''Описание ситуации''' == | == '''Описание ситуации''' == | ||
В рамках реализации проекта видеоаналитики для велотрека была переработана логика работы событий на платформе SmartPlyer. Ранее логика работы событий привязывалась к одной конкретной трансляции. То есть, для каждой трансляции нужно создавать своё, отдельное событие и переиспользовать его в других трансляциях возможности не было. После переработки появился полноценная категория в разделе «Трансляции» («События трансляций»), в которой можно создавать события и впоследствии привязывать их к нужным трансляциям. Таким образом появлялся логируемый список событий, который можно создавать, настраивать, хранить и привязывать к нужным трансляциям. | В рамках реализации проекта видеоаналитики для велотрека была переработана логика работы событий на платформе SmartPlyer. Ранее логика работы событий привязывалась к одной конкретной трансляции. То есть, для каждой трансляции нужно создавать своё, отдельное событие и переиспользовать его в других трансляциях возможности не было. После переработки появился полноценная категория в разделе «Трансляции» («События трансляций»), в которой можно создавать события и впоследствии привязывать их к нужным трансляциям. Таким образом появлялся логируемый список событий, который можно создавать, настраивать, хранить и привязывать к нужным трансляциям. | ||
=== ''' | === '''Сценарий использования''' === | ||
Для правильной работы с событиями рекомендуется придерживаться следующего сценария использования функциональности: | |||
# Подготовить все необходимые данные (идентификатор события, API-ключ, json-файл, событие, трансляцию). | |||
# Создать событие в категории «События трансляции» (добавить json-файл в качестве ключа и взять из события идентификатор). | |||
# Подготовить API-ключ из личного кабинета SmartPlayer. | |||
# Подготовить POST-запрос по API с идентификатором события. | |||
# Создать трансляции с привязкой к событиям. | |||
# Привязать созданные трансляции к нужным устройствам. | |||
== '''Необходимая информация''' == | |||
{{Note|Новая логика работы событий реализована параллельно со старой. Со старой логикой работы событий можно ознакомиться [https://wiki.smartplayer.org/index.php/%D0%A2%D1%80%D0%B8%D0%B3%D0%B3%D0%B5%D1%80%D0%BD%D1%8B%D0%B5_%D1%81%D0%BE%D0%B1%D1%8B%D1%82%D0%B8%D1%8F_%D0%B2_%D1%82%D1%80%D0%B0%D0%BD%D1%81%D0%BB%D1%8F%D1%86%D0%B8%D0%B8 здесь]. В старой логике нельзя использовать в качестве ключа события «Внешний источник». Данный ключ доступен только в новой реализации при условии что событие создается в категории «События трансляции».|warn}} | {{Note|Новая логика работы событий реализована параллельно со старой. Со старой логикой работы событий можно ознакомиться [https://wiki.smartplayer.org/index.php/%D0%A2%D1%80%D0%B8%D0%B3%D0%B3%D0%B5%D1%80%D0%BD%D1%8B%D0%B5_%D1%81%D0%BE%D0%B1%D1%8B%D1%82%D0%B8%D1%8F_%D0%B2_%D1%82%D1%80%D0%B0%D0%BD%D1%81%D0%BB%D1%8F%D1%86%D0%B8%D0%B8 здесь]. В старой логике нельзя использовать в качестве ключа события «Внешний источник». Данный ключ доступен только в новой реализации при условии что событие создается в категории «События трансляции».|warn}} | ||
=== '''Приоритеты событий''' === | |||
В личном кабинете SmartPlayer реализована три вида приоритетов: | |||
# низкий; | |||
# средний; | |||
# высокий. | |||
[[File:Приоритеты_событий.png|thumb|center| Пример списка приоритетов|800px]] | |||
'''Логика работы приоритетов следующая:''' | |||
* если текущее событие ниже по приоритету, чем то, которое произошло, то произойдет переключение на событие с более высоким приоритетом. | |||
* если текущее событие имеет приоритет выше, чем то, которое произошло, то переключения события не произойдет. | |||
* если текущее событие и следующее событие то они проиграются по очереди. | |||
== '''Изменения личного кабинета''' == | == '''Доработка платформы SmartPlayer''' == | ||
Для реализации данного проекта разработчикам команды SmartPlayer понадобилось изменить реализацию на стороне: | |||
* личного кабинета; | |||
* серверного приложения. | |||
=== '''Изменения личного кабинета''' === | |||
В личном кабинете SmartPlayer при текущей реализации прошли следующие изменения: | В личном кабинете SmartPlayer при текущей реализации прошли следующие изменения: | ||
# Появилась новая категория «События трансляций» в разделе «Трансляция». | # Появилась новая категория «События трансляций» в разделе «Трансляция». | ||
| Строка 33: | Строка 55: | ||
{{Note|Для более удобного поиска событий пользователь может обратится в систему поиска. | {{Note|Для более удобного поиска событий пользователь может обратится в систему поиска. | ||
[[File:Система_поиск_события.png|thumb|center| Пример отображения системы поиска|800px]]|warn}} | [[File:Система_поиск_события.png|thumb|center| Пример отображения системы поиска|800px]]|warn}} | ||
==== ''' | ==== '''Кнопка «Создать»''' ==== | ||
Кнопка «Создать» открывает модальное окно в котором пользователю необходимо заполнить поля для создания события. Доступны следующие основные поля: | Кнопка «Создать» открывает модальное окно в котором пользователю необходимо заполнить поля для создания события. Доступны следующие основные поля: | ||
* название — прописать текстовое название события; | * название — прописать текстовое название события; | ||
| Строка 42: | Строка 64: | ||
{{Note|В старой логике работы событий такого ключа для события типа «Серверное приложение» нет и его невозможно выбрать.|warn}} | {{Note|В старой логике работы событий такого ключа для события типа «Серверное приложение» нет и его невозможно выбрать.|warn}} | ||
[[File:Выбор_ключа.png|thumb|center| Пример отображения ключа «Внешний источник»|800px]] | [[File:Выбор_ключа.png|thumb|center| Пример отображения ключа «Внешний источник»|800px]] | ||
Выбрав «Внешний источник» в качестве ключа пользователь увидит что модальное окно увеличилось еще больше и появились | Выбрав «Внешний источник» в качестве ключа пользователь увидит что модальное окно увеличилось еще больше и появились новые параметры. | ||
[[File: | [[File:Добавленные_параметры.png|thumb|center| Пример отображения дополнительных прааметров|800px]] | ||
Это параметры: | Это параметры: | ||
* модель выходящих данных — позволяет перенести с помощью drag-n-drop (перетаскивания файла) json-файл, который будет расшифрован и выбрать (с помощью клика по значению) в этом файле нужное поле. Это поле будет ориентиром для сервера и с него он будет получать данные. Клик по значению автоматически заполнит поле «Значение». | * модель выходящих данных — позволяет перенести с помощью drag-n-drop (перетаскивания файла) json-файл, который будет расшифрован и выбрать (с помощью клика по значению) в этом файле нужное поле. Это поле будет ориентиром для сервера и с него он будет получать данные. Клик по значению автоматически заполнит поле «Значение». | ||
* целевой путь к значению в json — отображает «путь» до значения в добавленном json-файле. Выставляется автоматически по клику на любом значении из подгруженного json-файла. Это поле нельзя изменить. | |||
* значение — поле в котором необходимо указать значении вручную или с помощью клика по значению в json-файле | * значение — поле в котором необходимо указать значении вручную или с помощью клика по значению в json-файле. | ||
[[File: | [[File:Заполненные_поля.png|thumb|center| Пример отображения заполненного поля «Значение»|800px]] | ||
{{Note|Поля «Целевой путь» и «Значение» после выделения кликом в json-файле определяются автоматически, но также «Значение» можно ввести вручную.|warn}} | |||
==== '''Выбор события''' ==== | |||
Выбор события осуществляется по клику. При клике на событие оно подсвечивается серым цветом, а в правой части экрана появляется панель с настройками события. | |||
[[File:Выделенное_событие.png|thumb|center| Пример отображения панели настроек для события|800px]]|warn}} | |||
Панель включает в себя следующие настройки: | |||
* информация — по клику открывает модальное окно с данными о: названии, типе, целевом пути, ключе и значении события. | |||
[[File:Данные_с_инфомрацией.png|thumb|center| Пример отображения данных настройки «Информация»|800px]]|warn}} | |||
* параметры запроса — по клику открывает модальное окно с данными о: имени сервера, методе для запроса, идентификаторе события. | |||
[[File:Данные_с_запросами.png|thumb|center| Пример отображения данных настройки «Параметры запроса»|800px]]|warn}} | |||
* редактировать — по клику открывает модальное окно с параметрами, которые настраивались при создании события | |||
[[File:Данные_с_параметрами_.png|thumb|center| Пример отображения системы поиска|800px]]|warn}} | |||
* удалить — удаляет выбранное событие. | |||
=== '''Журнал событий''' === | === '''Журнал событий''' === | ||
Блок «Журнал событий» включает в себя все созданные и передает о них следующую информацию: | Блок «Журнал событий» включает в себя все созданные и передает о них следующую информацию: | ||
* | * название — | ||
* | * тип события — | ||
* | * ключ — | ||
* | * значение — | ||
* | * приоритет — | ||
* дата и время — | |||
* статус — | |||
{{Note|Для более удобного поиска событий пользователь может обратится в систему поиска. | {{Note|Для более удобного поиска событий пользователь может обратится в систему поиска. | ||
[[File: | [[File:Система_поиска_журнала.png|thumb|center| Пример отображения системы поиска|800px]]|warn}} | ||
=== ''' | В правой части экрана есть оповещение для пользователей, которое передаёт информацию о длительности хранения записей в журнале - 30 дней. | ||
[[File:Информация_к_сведению.png|thumb|center| Пример отображения оповещения с информацией|800px]] | |||
=== '''Создание трансляции''' === | |||
Пользователь в личном кабинете переходит в раздел «Трансляция» и выбирает категорию «Создать». | |||
[[File:Создание_трансляциилк.png|thumb|center| Пример отображения раздела «Трансляция» и категории «Создать» в личном кабинете SmartPlayer|800px]] | |||
[[File: | Дальше необходимо создать нужное количество страниц и на каждой выбрать зону с помощью функционала «Добавить зону». | ||
[[File:Страницы_и_зоны.png|thumb|center| Пример отображения добавленных страниц и зон в трансляцию|800px]] | |||
Настроив количество страниц и зон пользователь должен открыть «Настройки страницы» кликом по иконке. | |||
[[File:Открыть_настройки_страницы.png|thumb|center| Пример отображения иконки «Настройки страницы»|800px]] | |||
В правой части экрана откроется список настроек, в котором необходимо обратить внимание на два параметра: | |||
* события — позволяет добавить события к трансляции (в данном случае событие уже было подготовлено ранее в шагах выше); | |||
* следующая страница — позволяет выбрать на какую страницу будет происходить переключение или зациклить страницу саму в себе при наличии события. | |||
[[File:Нужные_параметрыстраницы.png|thumb|center| Пример отображения параметров на странице настроек|800px]] | |||
==== '''Добавление события в трансляцию''' ==== | |||
Чтобы добавить готовое событие пользователю необходимо кликнуть на иконку «+». | |||
[[File:Иконка плюс.png|thumb|center| Пример отображения иконки для добавления события|800px]] | |||
После клика по иконке откроется новое модальное окно в котором необходимо перейти в блок «Выбор события из списка» и кликнуть на нужное событие. | |||
[[File:Выбор_события_из_списка.png|thumb|center| Пример отображения блока «Выбор события из списка»|800px]] | |||
После выбора нужного события пользователя вернет на страницу с настройками, а ниже добавит отобразится выбранное событие. | |||
{{Note|Добавленное событие можно удалить по отдельной иконке в виде мусорной корзины.|warn}} | |||
[[File:Событие_и_удалить.png|thumb|center| Пример отображения добавленного события к странице|800px]] | |||
Для применения настроек необходимо нажать на кнопку «Сохранить» в нижней части экрана. Если выбранные настройки применять не нужно кликнуть на кнопку «Отменить» слева. | |||
[[File:Отменить_и_сохранить.png|thumb|center| Пример отображения кнопки «Сохранить»|800px]] | |||
=== '''Изменение настроек личного кабинета SmartPlayer''' === | === '''Изменение настроек личного кабинета SmartPlayer''' === | ||
Для корректной работы событий пользователям необходимо будет зайти в раздел «Настройки» личного кабинета в двух | Для корректной работы событий пользователям необходимо будет зайти в раздел «Настройки» личного кабинета в двух случаях: | ||
# Создания API-ключа для | # Создания и получения API-ключа для POST-запроса к серверу SmartPlayer. | ||
# | # Настроить количество отображаемых событий в категории «События трансляции». | ||
== '''Изменения серверной логики''' == | == '''Изменения серверной логики''' == | ||
На данный момент серверное приложение | На данный момент серверное приложение принимает вебхуки (webhook), которая позволяет серверу клиента обращаться к серверу SmartPlayer. Для формирования POST-запроса с вебхуками (webhook) | ||
В качестве ключа пользователь теперь может готовый json-файл, в котором после загрузки можно выбрать поле на которое будет смотреть сервер используя целевой путь. | В качестве ключа пользователь теперь может готовый json-файл, в котором после загрузки можно выбрать поле на которое будет смотреть сервер используя целевой путь. По вебхукам пользователь должен передать eventID и value для корректной работы. <br> | ||
Также необходимо добавить API-ключ, который генерируется в личном кабинете SmartPlayer. Токен API-ключа добавляется в post-запрос. | |||
{{Note|Сейчас на сервере работа ведется только с подобъектами.|warn}} | {{Note|Сейчас на сервере работа ведется только с подобъектами.|warn}} | ||
Клиенту также необходимо найти ID | |||
далее заходим в трансляцию и добавляем событие через икону «+». В трансляции главная страница и она на себя зациклена. появился новый тип события по webhoock (вебхук) со своего сервера можно было обратится к серверу SmartPlayer. Сейчас на сервере работа ведется только с подобъектами. | далее заходим в трансляцию и добавляем событие через икону «+». В трансляции главная страница и она на себя зациклена. появился новый тип события по webhoock (вебхук) со своего сервера можно было обратится к серверу SmartPlayer. Сейчас на сервере работа ведется только с подобъектами. | ||
== '''Дополнительная информация''' == | == '''Дополнительная информация''' == | ||
Если данная статья не помогает использовать функционал по назначению или после ее прочтения остаются вопросы, их можно озвучить в разделе "Обсуждения" вверху страницы. | Если данная статья не помогает использовать функционал по назначению или после ее прочтения остаются вопросы, их можно озвучить в разделе "Обсуждения" вверху страницы. | ||
[[File:Обсуждение_управления_устройством.png|thumb|center| Пример отображения вкладки «Обсуждения» на wiki-странице |800px]] | [[File:Обсуждение_управления_устройством.png|thumb|center| Пример отображения вкладки «Обсуждения» на wiki-странице |800px]] | ||
Также дополнительную информацию можно узнать на странице [[Как взаимодействовать пользователю с разделом "Обсуждения"]] | Также дополнительную информацию можно узнать на странице [[Как взаимодействовать пользователю с разделом "Обсуждения"]] | ||
Версия от 13:59, 15 октября 2025
Описание ситуации
В рамках реализации проекта видеоаналитики для велотрека была переработана логика работы событий на платформе SmartPlyer. Ранее логика работы событий привязывалась к одной конкретной трансляции. То есть, для каждой трансляции нужно создавать своё, отдельное событие и переиспользовать его в других трансляциях возможности не было. После переработки появился полноценная категория в разделе «Трансляции» («События трансляций»), в которой можно создавать события и впоследствии привязывать их к нужным трансляциям. Таким образом появлялся логируемый список событий, который можно создавать, настраивать, хранить и привязывать к нужным трансляциям.
Сценарий использования
Для правильной работы с событиями рекомендуется придерживаться следующего сценария использования функциональности:
- Подготовить все необходимые данные (идентификатор события, API-ключ, json-файл, событие, трансляцию).
- Создать событие в категории «События трансляции» (добавить json-файл в качестве ключа и взять из события идентификатор).
- Подготовить API-ключ из личного кабинета SmartPlayer.
- Подготовить POST-запрос по API с идентификатором события.
- Создать трансляции с привязкой к событиям.
- Привязать созданные трансляции к нужным устройствам.
Необходимая информация
Приоритеты событий
В личном кабинете SmartPlayer реализована три вида приоритетов:
- низкий;
- средний;
- высокий.

Логика работы приоритетов следующая:
- если текущее событие ниже по приоритету, чем то, которое произошло, то произойдет переключение на событие с более высоким приоритетом.
- если текущее событие имеет приоритет выше, чем то, которое произошло, то переключения события не произойдет.
- если текущее событие и следующее событие то они проиграются по очереди.
Доработка платформы SmartPlayer
Для реализации данного проекта разработчикам команды SmartPlayer понадобилось изменить реализацию на стороне:
- личного кабинета;
- серверного приложения.
Изменения личного кабинета
В личном кабинете SmartPlayer при текущей реализации прошли следующие изменения:
- Появилась новая категория «События трансляций» в разделе «Трансляция».
- Добавились параметры в разделе «Настройки» влияющие на работу событий.
Категория «События трансляций»
Категория «События трансляций» располагается в личном кабинете в разделе «Трансляция».

Перейдя категорию «События трансляции» пользователю откроется главная страница раздела, которая разделена на два блока:
- События трансляции — включает в себя все созданные события.
- Журнал событий трансляций — список с подробным описанием использования событий.


Для выделенных событий доступна два действия:
- Отменить выбор — снимает чекбокс (галочку) выделения со всех устройств.
- Удалить — удаляет сущность выделенных события из списка событий, а также записи о событиях с сервера.

События трансляции
Блок «События трансляции» включает в себя следующую информацию и возможности:
- кнопка «Создать» — позволяет создать событие и в последствии прикрепить его к трансляции;
- чекбокс для выделения — выделяет нужное событие;
- название — отображается текстовое название события;
- тип события — отображается тип имеющегося события;
- ключ — отображается ключ используемый для события;
- значение — численное значение для события;
- приоритет — отображается текстом приоритет события;
- кнопка «Отправить» — кнопка которая позволяет протестировать привязанное к трансляции и устройству событие (эмулирует это событие виртуально) и отобразит контент события на экране. При корректной настройки трансляции и события кнопка «Отправить» переключит событие, если его приоритет выше чем у текущего события.

Кнопка «Создать»
Кнопка «Создать» открывает модальное окно в котором пользователю необходимо заполнить поля для создания события. Доступны следующие основные поля:
- название — прописать текстовое название события;
- приоритет — выставить приоритет события. Доступно три вида: низкий, средний, высокий;
- тип события — выбрать из раскрывающегося списка нужный тип события (в данном случае «Серверное приложение»)

После выбора в качестве типа события значения «Серверное приложение» появится еще один параметр — «Ключ». Это параметр отвечает за то, на какое будет смотреть сервер для поиска события. В текущей реализации необходимо выбрать в качестве ключа «Внешний источник».

Выбрав «Внешний источник» в качестве ключа пользователь увидит что модальное окно увеличилось еще больше и появились новые параметры.

Это параметры:
- модель выходящих данных — позволяет перенести с помощью drag-n-drop (перетаскивания файла) json-файл, который будет расшифрован и выбрать (с помощью клика по значению) в этом файле нужное поле. Это поле будет ориентиром для сервера и с него он будет получать данные. Клик по значению автоматически заполнит поле «Значение».
- целевой путь к значению в json — отображает «путь» до значения в добавленном json-файле. Выставляется автоматически по клику на любом значении из подгруженного json-файла. Это поле нельзя изменить.
- значение — поле в котором необходимо указать значении вручную или с помощью клика по значению в json-файле.

Выбор события
Выбор события осуществляется по клику. При клике на событие оно подсвечивается серым цветом, а в правой части экрана появляется панель с настройками события.

|warn}}
Панель включает в себя следующие настройки:
- информация — по клику открывает модальное окно с данными о: названии, типе, целевом пути, ключе и значении события.

|warn}}
- параметры запроса — по клику открывает модальное окно с данными о: имени сервера, методе для запроса, идентификаторе события.

|warn}}
- редактировать — по клику открывает модальное окно с параметрами, которые настраивались при создании события

|warn}}
- удалить — удаляет выбранное событие.
Журнал событий
Блок «Журнал событий» включает в себя все созданные и передает о них следующую информацию:
- название —
- тип события —
- ключ —
- значение —
- приоритет —
- дата и время —
- статус —

В правой части экрана есть оповещение для пользователей, которое передаёт информацию о длительности хранения записей в журнале - 30 дней.

Создание трансляции
Пользователь в личном кабинете переходит в раздел «Трансляция» и выбирает категорию «Создать».

Дальше необходимо создать нужное количество страниц и на каждой выбрать зону с помощью функционала «Добавить зону».

Настроив количество страниц и зон пользователь должен открыть «Настройки страницы» кликом по иконке.

В правой части экрана откроется список настроек, в котором необходимо обратить внимание на два параметра:
- события — позволяет добавить события к трансляции (в данном случае событие уже было подготовлено ранее в шагах выше);
- следующая страница — позволяет выбрать на какую страницу будет происходить переключение или зациклить страницу саму в себе при наличии события.

Добавление события в трансляцию
Чтобы добавить готовое событие пользователю необходимо кликнуть на иконку «+».

После клика по иконке откроется новое модальное окно в котором необходимо перейти в блок «Выбор события из списка» и кликнуть на нужное событие.

После выбора нужного события пользователя вернет на страницу с настройками, а ниже добавит отобразится выбранное событие.

Для применения настроек необходимо нажать на кнопку «Сохранить» в нижней части экрана. Если выбранные настройки применять не нужно кликнуть на кнопку «Отменить» слева.

Изменение настроек личного кабинета SmartPlayer
Для корректной работы событий пользователям необходимо будет зайти в раздел «Настройки» личного кабинета в двух случаях:
- Создания и получения API-ключа для POST-запроса к серверу SmartPlayer.
- Настроить количество отображаемых событий в категории «События трансляции».
Изменения серверной логики
На данный момент серверное приложение принимает вебхуки (webhook), которая позволяет серверу клиента обращаться к серверу SmartPlayer. Для формирования POST-запроса с вебхуками (webhook)
В качестве ключа пользователь теперь может готовый json-файл, в котором после загрузки можно выбрать поле на которое будет смотреть сервер используя целевой путь. По вебхукам пользователь должен передать eventID и value для корректной работы.
Также необходимо добавить API-ключ, который генерируется в личном кабинете SmartPlayer. Токен API-ключа добавляется в post-запрос.
Клиенту также необходимо найти ID
далее заходим в трансляцию и добавляем событие через икону «+». В трансляции главная страница и она на себя зациклена. появился новый тип события по webhoock (вебхук) со своего сервера можно было обратится к серверу SmartPlayer. Сейчас на сервере работа ведется только с подобъектами.
Дополнительная информация
Если данная статья не помогает использовать функционал по назначению или после ее прочтения остаются вопросы, их можно озвучить в разделе "Обсуждения" вверху страницы.

Также дополнительную информацию можно узнать на странице Как взаимодействовать пользователю с разделом "Обсуждения"