Генерация PNG-изображений дашбордов по запросу#

Основной сценарий#

  • Пользователь отправляет HTTP-запрос на сервер с указанием идентификатора дашборда и, при необходимости, параметров фильтрации (например, дата, подразделение).

  • Сервер проверяет права доступа пользователя к запрашиваемому дашборду.

  • При наличии прав сервер формирует URL целевого дашборда во внешней системе визуализации.

  • Сервер запускает headless-браузер для открытия страницы дашборда.

  • Дожидается полной загрузки данных и отрисовки графиков.

  • Выполняет скриншот области дашборда или всей страницы.

  • Сохраняет изображение во временной папке в формате PNG.

  • Возвращает пользователю HTTP-ответ с изображением в теле или по ссылке.

  • Временные файлы удаляются по истечении заданного времени (например, через 10 минут).

Альтернативный сценарий#

  • Если дашборд содержит динамические элементы (например, анимации), сервер ожидает их стабилизации перед скриншотом.

  • Если запрашивается часть дашборда, скриншот делается только для указанной области.

  • При использовании кэширования: если для данного набора параметров недавно был сгенерирован PNG, сервер возвращает закэшированную версию без повторного рендеринга.

Исключительный сценарий#

  • Если пользователь не имеет прав доступа, возвращается ошибка 403 Forbidden.

  • Если дашборд не существует или указан неверный идентификатор — возвращается 404 Not Found.

  • При тайм-ауте загрузки страницы (например, более 30 секунд) — возвращается 504 Gateway Timeout.

  • При сбое headless-браузера или невозможности сделать скриншот — возвращается 500 Internal Server Error с записью в лог.

  • Если размер изображения превышает допустимый лимит, оно сжимается с сохранением читаемости или возвращается предупреждение.