Перейти к основному содержимому
Версия: 1.34.0

Версия 1.34.0

В этой версии мы расширили возможности взаимодействия с платформой: теперь пользователи могут оставлять форматированные комментарии в Ленте активности, а также подписываться на пуш-уведомления в браузере. Для администрирования системы мы добавили новую роль Аудитор, которая позволяет предоставлять контролируемый доступ на чтение записей без риска их изменения. Кроме того, теперь текстовые колонки можно преобразовать в форматируемый тип WYSIWYG с сохранением данных.

Для технологических партнеров добавлена возможность упаковывать приложения для Маркетплейса с защитой чувствительных компонентов. Также мы внедрили автоматическое применение фильтров при открытии списков и реализовали ряд системных улучшений.

Новая функциональность


Пуш-уведомления

В этой версии появился новый канал доставки уведомлений — Web Push-уведомления в браузере, в дополнение к электронной почте.

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

Для отправки уведомлений реализован серверный класс SimplePushNotification. Разработчик может отправить уведомление, создав объект класса, указав получателя и параметры сообщения и вызвав один метод — без знания деталей протокола Web Push. Класс самостоятельно обрабатывает ошибки на стороне инфраструктуры, выполняет логирование и возвращает унифицированный результат.

Читайте подробнее в статье Пуш-уведомления.

WYSIWYG-контент в Ленте активности

В Ленте активности теперь используется WYSIWYG-редактор вместо текстового поля. Это позволяет создавать сообщения с форматированием: полужирным и курсивным начертанием, текстовыми эффектами подчеркивания и зачеркивания, маркированными и нумерованными списками, цитатами, гиперссылками и изображениями.

При этом система сохраняет обратную совместимость: ранее созданные сообщения в простом текстовом формате отображаются корректно.

Читайте подробнее в статье Формы.

Преобразование колонок между типами Текст и WYSIWYG

Для более наглядного представления текстовой информации на формах добавили возможность преобразовать существующие колонки типа Text в тип WYSIWYG с сохранением данных. Это потребуется, когда в уже используемом текстовом поле, например, в описании задачи или в пользовательском поле накопились данные и теперь их требуется оформить: выделить текст, добавить списки, ссылки и изображения. Тип колонки обновляется, оставляя ее свойства неизменными, что исключает необходимость создания нового поля и ручного переноса значений.

Для преобразования колонок реализован новый класс SimpleColumn, методы которого позволяют осуществлять преобразование средствами серверного API. Также доступна обратная конвертация.

Колонку с измененным типом данных, преобразованную таким образом, можно экспортировать в SOP-файл и в дальнейшем импортировать на другой экземпляр, что позволяет изменить тип данных соответствующей колонки на WYSIWYG (или Text) и преобразовать все значения существующих записей измененной колонки.

Подробнее читайте в статье Преобразование данных.

предупреждение

Для миграции колонок на новый тип, необходимо выполнить дополнительные действия:

  1. Конвертировать колонки
  2. Внести необходимые изменения в бизнес-логику (бизнес-правила, скрипты) экземпляра системы.
  3. Очистить на экземпляре свойство wysiwyg.columns.scripts_text_mode. Пока в свойстве перечислены ID колонок, серверные и клиентские методы API возвращают их значения как простой текст, а не как WYSIWYG-структуру. Свойство служит вспомогательным средством на время адаптации пользовательской логики. Затем свойство необходимо очистить, чтобы работать с полноценным WYSIWYG.

Роль Аудитор

В систему добавлена роль Аудитор (auditor), которая предоставляет доступ на чтение ко всем таблицам системы, аналогичный доступу для роли admin, но в режиме "только для чтения". Для использования роли Аудитор необходимо повысить свои полномочия.

Для роли запрещены операции создания, изменения и удаления (CUD). Соответствующие элементы интерфейса (например, кнопка Сохранить) скрыты для пользователей с активной ролью Аудитор, а любой CUD-запрос через REST API от имени такого пользователя возвращает код ошибки.

Читайте подробнее в статье Структура ролей.

Режим вендора для партнерских приложений

Технологические партнеры SimpleOne теперь могут упаковывать свои приложения для распространения по партнерскому каналу, включая Маркетплейс, с защитой чувствительных компонентов от изменений.

Для этого при развертывании экземпляра можно указать приложения, для которых пользователи с ролью admin получат доступ уровня вендора на локальном экземпляре, после чего смогут создавать таблицы без клиентского префикса и редактировать VCS-записи приложения.

Подробнее читайте в эксплуатационной документации.

Улучшения


Фильтры для макетов листового представления

Теперь при открытии списка записей могут автоматически применяться условия фильтрации, указанные в фильтре (sys_filter), связанном с макетом списка (sys_ui_list). Это работает как для обычных, так и для связанных списков.

На форме записи макета и в настройках списка доступно поле Фильтр. При открытии списка с выбранным фильтром условия автоматически отображаются в конструкторе условий и в адресной строке. Пользователь может изменить или очистить условия — изменения действуют только в рамках текущего сеанса и не затрагивают сохраненный фильтр.

Для общих листовых представлений в поле Фильтр доступны только общие фильтры таблицы. Для персональных — общие и персональные фильтры текущего пользователя. При переходе по ссылке с указанием макета и условия фильтрации, фильтр из макета не будет применен.

Читайте подробнее в статьях Списки и Представление списка.

Системные улучшения


Микросервис WebPushNotifier

Для отправки пуш-уведомлений выделен отдельный микросервис WebPushNotifier. Его сбои не влияют на основную бизнес-логику платформы, а при росте нагрузки сервис можно масштабировать независимо от остальных модулей. Для WebPushNotifier предусмотрен отдельный мониторинг и оповещения. Микросервис разворачивается автоматически при развертывании и обновлении экземпляра – отдельных действий от администратора не требуется.

Для одного бизнес-события создается одна логическая нотификация на пользователя; при повторных попытках дубликаты не появляются. Система пытается доставить уведомление на все устройства пользователя с активными подписками. Временные ошибки обрабатываются с ограниченным числом повторов и экспоненциальной задержкой. Уведомления с истекшим TTL помечаются как устаревшие и не отправляются.

Исправления


DEF0023124: Разграничено использование переменных postgres_internal и postgres_haproxy_enabled для устранения проблем с развертыванием распределенного стенда с внешней БД на этапе миграции сервиса web-push.

DEF0023106: Устранили влияние элементов расписания с нулевым отрезком времени на работу методов серверного API SimpleSchedule.

DEF0022818: Оптимизированы параметры opcache в конфигурации PHP-FPM: увеличены буфер интернированных строк, количество кешируемых файлов и общий объем памяти под opcache, отключена проверка изменений исполняемых файлов в производственных средах. Это устранило падения воркеров PHP-FPM (SIGSEGV) и ошибки 502 Bad Gateway при высоких нагрузках.

DEF0021032: Исправлено некорректное формирование и парсинг условий, при котором в условие с оператором ИЛИ добавлялись избыточные скобки, что приводило к ошибке Condition query is invalid.

DEF0020568: Устранена критическая проблема доступности — некорректное условие, переданное через ссылку или конечную точку API, могло приводить к отказу распределенного стенда и ошибке 502 для всех пользователей. В этой версии добавлена проверка валидности условий на конечных точках API с корректной обработкой ошибок и возвратом правильного кода ответа.

DEF0020252: Уточнено применение ACL в результатах глобального поиска: карточка результата теперь учитывает ограничения на чтение отдельной колонки конкретной записи, заданные условием ACL.

DEF0019366: Добавлено логирование изменений, вносимых через быстрый импорт JSON: сохранение записи теперь происходит через менеджер записей с триггерами событий, что обеспечивает появление записей в sys_history. Также активирован флаг логирования удаления записей для таблиц user, employee и sys_user_has_role.

DEF0016070: Исправлена обработка фильтрации списков по boolean-полям через dot-walking для полей типа List.