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

v.5.185.0#

Изменения

  • В состав LUNA PLATFORM добавлен новый локальный сервис Docs для раздачи статической документации.

    Новый сервис содержит всю техническую документацию по продукту и позволяет пользователю работать с ней без доступа к сети Интернет.

    Адрес сервиса по умолчанию — http://127.0.0.1:5320.

    В руководство по установке LUNA PLATFORM добавлен соответствующий раздел по запуску сервиса Docs.

    Подробную информацию см. в разделе Описание сервисов руководства администратора.

  • Добавлена возможность массового обновления разрешений для нескольких токенов за один запрос.

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

    Теперь с помощью нового запроса update tokens permissions можно передать массив идентификаторов токенов (до 10 000) и единый набор разрешений, который будет установлен для всех указанных токенов. Разрешения полностью заменяются на переданные (не дополняются).

    Для каждого токена возвращается результат: успешно обновлённые получают новый JWT-токен, ненайденные — статус failed с ошибкой 41003 "Object not found". Отсутствие одного или нескольких токенов не блокирует обновление остальных.

  • Добавлен новый запрос get restreams list, позволяющий получить постраничный список всех активных ретрансляций с необязательной фильтрацией по account_id, stream_id, type, quality, shared и persistent.

    Ретрансляции, созданные до этого обновления, выводятся в списке без поля account_id, поэтому фильтрация по этому полю к ним не применяется.

  • Теперь в перечисленных ниже запросах фильтрация по полям с пользовательскими данными выполняется без учёта регистра символов:

  • В запросы "attach/detach faces to the list" добавлен новый query-параметр ignore.

    Если передано ignore=1, не найденные лица из face_ids больше не блокируют выполнение всего запроса: возвращается ответ с кодом состояния 200 и JSON-сообщением {"not_found_faces": ["..."]}, перечисляющим идентификаторы ненайденных лиц, а остальные запрошенные лица корректно прикрепляются/открепляются.

    Поведение по умолчанию (ignore=0) не изменилось: при отсутствии любого из переданных лиц весь запрос завершается ошибкой с кодом 400.

  • Добавлена новая группа настроек LAMBDA_BASE_IMAGE, позволяющая указать базовые Docker-образы, которые будут использоваться по умолчанию при создании lambda (если в запросе не передан явный параметр base_image).

    Для каждого образа можно задать имя (name) и тег (tag). Если образы не заданы, используются встроенные образы LUNA PLATFORM.

    Параметр base_image, переданный в запросе создания lambda, всегда имеет приоритет над настройкой.

    См. Base image руководства разработчика.

  • Обновлены базовые Docker-образы для создания lambda.

    Теперь они используют AlmaLinux 10, CUDA 12.4, обновлённую версию SDK (v.5.39.0), а также обновлённые библиотеки pynvcodec/pyfsdkinterop (≥ 3.1.6).

    Важно! Lambda со старыми зависимостями могут перестать работать на новых базовых образах из-за перехода на новые CUDA и FSDK. Чтобы сохранить работоспособность такой lambda, зафиксируйте предыдущий базовый образ с помощью настройки LAMBDA_BASE_IMAGE (см. изменение выше): тогда lambda будет продолжать работать на старом образе, если обновить её зависимости невозможно.

  • Добавлена возможность отложить запуск lambda до завершения её инициализации.

    Теперь при разработке lambda можно объявить функцию checkWarmup. Она позволяет отложить начало приёма запросов до тех пор, пока lambda не будет полностью готова к работе (например, пока не загрузятся модели или не установятся соединения с БД). Таймаут на инициализацию задаётся в настройке LAMBDA_WARMUP_TIMEOUT. Если lambda не успеет подготовиться за это время, она будет автоматически перезапущена.

    Подробнее см. раздел Warmup check руководства разработчика.

Исправленные ошибки

  • В спецификацию OpenAPI запроса create handler добавлены отсутствующие значения по умолчанию для параметров policies.detect_policy.face_quality.checks.

    Ранее эти значения не отображались, хотя фактически применялись. Теперь для параметров estimate и threshold каждой проверки качества лица или изображения явно указано значение по умолчанию.

  • Исправлена ошибка некорректного объединения настроек потоков из нескольких групп.

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

    Теперь настройки из всех групп объединяются корректно (в соответствии с правилами группировки потоков): параметры, не переопределённые группой с более высоким приоритетом, сохраняются из групп с более низким приоритетом.

  • Исправлена ошибка при выполнении запросов get stream(s) и count streams с фильтром agent_id.

    Ранее поток с несколькими аналитиками, обрабатываемыми одним агентом, возвращался и подсчитывался несколько раз. Теперь такой поток возвращается и учитывается однократно.

  • Унифицирован формат параметра autorestart.restart для потоков и групп.

    Теперь в запросах create stream, put stream, create group и update group параметр принимает только целочисленные 0 или 1; передача логических значений (true/false) отклоняется с кодом состояния 400.

    Также в ответах запросов get streams и get groups параметр всегда возвращается в виде целого числа 0 или 1. Ранее сохранённые в базе данных логические значения автоматически преобразуются однократной миграцией.

  • Исправлено некорректное описание параметра data.rotation в запросах create stream и put stream для потоков с параметром orientation_strategy, установленным в значение video_info.

    Ранее для стратегии video_info был указан параметр rotation, что создавало ложное впечатление о возможности его ручной настройки. Однако при выборе video_info заданное пользователем вращение не применяется: угол поворота всегда автоматически считывается из метаданных самого видеопотока.

    Теперь параметр rotation больше не отображается в спецификации указанных запросов для video_info. Поведение для значения static не изменилось.

  • Исправлено сообщение об ошибке при указании недопустимого значения orientation_strategy в запросах create stream и put stream для потоков, связанных с группой (через group_id/group_name).

    В сообщении об ошибке теперь перечисляются оба допустимых значения: static и video_info (ранее указывалось только static).

  • Исправлена ошибка, из-за которой значение runtime_settings.optimal_batch_size в группах настроек LUNA_VIDEO_AGENT_HUMAN_TRACKER_SETTINGS и LUNA_VIDEO_AGENT_FACE_LANDMARKS5_ESTIMATOR_SETTINGS игнорировалось агентом.

    Теперь заданные значения учитываются на соответствующих этапах обработки, что обеспечивает стабильность и воспроизводимость результатов анализа видео.

  • Исправлена проблема, из-за которой фактическая частота кадров при декодировании RTSP-потоков была ниже заданной.

  • Исправлена ошибка, которая приводила к досрочному завершению ретрансляции потока.

    Ранее непостоянная ретрансляция (с флагом persistent=0) могла завершаться до истечения времени, заданного в LUNA_STREAMS_RETRANSLATOR_IGNORED_RESTREAM_TTL, даже при условии востребованности потока (наличия активных зрителей).

    Теперь непостоянная ретрансляция остаётся активной до тех пор, пока к ней подключены зрители. Остановка происходит только после того, как последний зритель отключится, — и только по истечении LUNA_STREAMS_RETRANSLATOR_IGNORED_RESTREAM_TTL секунд (по умолчанию 60) с этого момента. Если зрителей никогда не было, отсчёт TTL начинается с момента создания ретрансляции.

  • Исправлена ошибка, при которой истекало время действия токена доступа к ретрансляции RTSP-потока, хотя сама ретрансляция ещё оставалась активной.

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

    Теперь срок действия токена автоматически обновляется на протяжении всего времени, пока ретрансляция активна.

  • Исправлена ошибка сборки Docker-образов lambda при использовании kaniko для S3-хранилищ с привязкой к региону.

    Ранее при сборке образа использовался путь к архиву с кодом вида s3://..., что приводило к ошибке 400 "InvalidArgument: Malformed signature credentials".

    Теперь архив передаётся в kaniko по временной HTTPS-ссылке.

  • Исправлено поведение при истечении времени создания образа lambda (IMAGE_CREATION_TIMEOUT): теперь задача сборки образа останавливается, а не продолжает выполняться после того, как lambda получила статус failed.