#2194: Обновление v6.2.x
Отредактирована: сегодняИнструкция
ВАЖНО! Перед обновлением на v6.2.x необходимо иметь версию Swarmica не ниже v6.0.x.
Если у вас установлена версия ниже v6.0.x, сначала обновитесь до v6.0.x вручную, последовательно выполняя инструкции для каждой промежуточной версии: например, если у вас v5.10.x, то сначала нужно обновиться до v5.11.x, затем до v5.12.x и до v6.0.x.
Обновление
Начиная с v6.0.x обновление выполняется с помощью механизма автообновления.
Если вы ещё не перешли на автообновление, выполните шаги из раздела «Переход на автообновление» в инструкции по установке обновлений.
ВНИМАНИЕ! Это обновление требует ручных действий на сервере и может требовать отката действий.
Рекомендуется планировать около 1 часа прерывания сервиса для выполнения обновления.
Порядок выполнения обновления:
- Непосредственно перед началом работ сделайте снапшот виртуальной машины, где установлена Swarmica или полную резервную копию для быстрого отката в случае любых проблем с обновлением
- Обязательный шаг: обновите Postgres до версии 18 по инструкции
- Рекомендуется так же отключить JIT-оптимизацию Postgres по инструкции - этот шаг можно пропустить или сделать позднее. Выполнение шага дает прирост производительности БД и более оптимизированное потребление ресурсов.
- Рекомендуется настроить логирование сервисов Swarmica в journald по инструкции - этот шаг можно пропустить или сделать позднее. Выполнение шага дает возможность более гибкого управления логами контейнеров Swarmica, сохранение их после перезагрузки и ротацию, согласно вашим потребностям.
- После успешного выполнения предыдущих шагов убедитесь, что Swarmica полностью запустилась и работает.
- Запустите автообновление и следуйте инструкциям:
cd /root/swarmica
make upgrade
После успешной установки обновления запустите очистку неиспользуемых данных:
docker system prune -a
✨ Основные улучшения
✉️ Почта
Переработана работа с автоматическими письмами: Swarmica лучше распознаёт отбивки и автоответы, сама помечает свои уведомления как автоматические и не теряет входящие письма при ошибках обработки. Это защищает от «войны роботов» между почтовыми системами и при этом не скрывает от агентов важные уведомления о недоставке.
- 📬 Обработка отбивок о недоставке (bounce): если в почтовом канале выключен новый переключатель «Пропускать отбивки» (по умолчанию включён), отбивка определяется по исходному письму и добавляется в нужную заявку внутренним комментарием с исходным сообщением во вложении. Если отбивка пришла на уведомление о создании заявки или о новом комментарии, заявка в статусах «Ожидает ответа», «Отложена» или «Решена» переоткрывается; отбивки на служебные уведомления (например, рассылки администраторам) заявку не переоткрывают. Адрес почтового сервера не добавляется в копию заявки, учётная запись для него не создаётся, автоответ не отправляется
- 🧩 Почтовые заголовки в уведомлениях: в шаблонах почтовых уведомлений можно задавать собственные заголовки (служебные заголовки вроде
From,Subject,Message-IDилиReturn-Pathизменить нельзя, при ошибке показывается понятное сообщение). Стандартные уведомления получили заголовкиAuto-Submitted, чтобы почтовые системы клиентов не отвечали на них автоответами; при восстановлении настроек уведомления по умолчанию восстанавливаются и заголовки - 🆔 Исходящие уведомления по заявкам получают уникальный
Message-ID, привязанный к заявке и получателю, а уведомление об отклонённом письме содержит ссылку на исходное сообщение (In-Reply-To) — так ответы и отбивки надёжнее связываются с заявкой - 🤖 Точнее определяются автоответы по заголовку
Auto-Submitted - 🛟 Входящее письмо не помечается прочитанным в ящике, пока не будет успешно обработано, — при сбое разбора оно не теряется
- 🎛️ Обновлена форма настроек почтового канала и настройки SMTP
- 🔕 Уведомления о собственных комментариях агента (публичных и внутренних) теперь по умолчанию выключены
- 🧹 Письма, сохранённые из-за ошибок обработки, автоматически удаляются через 30 дней (срок настраивается, см. «Новые переменные окружения»)
📚 База знаний и хелпцентр
- 📊 Диаграммы Mermaid в статьях: в редакторе появилась кнопка вставки диаграммы с переключением «Код / Превью», а при просмотре статьи в интерфейсе и в публичном хелпцентре диаграммы отображаются графически, в том числе в полноэкранном режиме для больших схем. Диаграммы хранятся как обычный блок кода
mermaid, поэтому там, где Markdown не отображается (например, в письмах), они показываются как текст - 🔎 В списке статей можно искать статьи по номеру привязанной задачи из баг-трекера — так же, как в списке заявок
- 🌐 Страницы хелпцентра получили корректные канонические ссылки (
link rel="canonical"), что улучшает индексацию поисковыми системами
💬 Чаты и чат-виджет
- ⏱️ Счётчики SLA и OLA теперь отображаются и в заголовке чата — агенты видят сроки, не переходя в заявку
- #️⃣ Номер заявки в чат-виджете: клиент видит номер чата в списке чатов и в открытом чате. Включается настройкой виджет-канала
show_ticket_idили параметром инициализации виджета (параметр имеет приоритет), по умолчанию выключено - ✈️ Тема заявки из Telegram формируется из имени клиента (или названия группы для групповых чатов) и имени бота вместо обрезанного первого сообщения — заявки проще различать в списке
- 🔐 Чат-виджет поддерживает вход с двухфакторной аутентификацией
⚙️ Автоназначение
- 👥 Новый переключатель в правиле автоназначения «Искать внутри текущей группы заявки»: ребалансер подбирает агента только из группы заявки и не меняет её группу. Теперь не нужно заводить отдельное правило на каждую группу
- ⚖️ При равной загрузке заявка достаётся агенту, который дольше всех не получал назначений, — нагрузка распределяется равномернее
- 🔒 Защита от параллельных запусков ребалансера
🔍 RCA
- 🏷️ У заявки появился признак «Есть RCA», который можно использовать в фильтрах, триггерах, отчётах и условиях автоназначения. Для существующих заявок признак заполняется автоматически при обновлении
🖥️ Улучшения UI/UX
- 🧽 Кнопка «Очистить черновик» в форме создания заявки
- 🎨 Ответы из внешних и внутренних дочерних заявок получили разные CSS-классы, так что их можно оформить по-разному через тему бренда
- 👤 При поиске пользователей для полей «Заявка от», «Копия» и «Скрытая копия» показываются их идентити, а совпадения подсвечиваются
- 📅 В аналитике по умолчанию выбран прошлый месяц с группировкой по дням
- ↩️ Кнопка сброса выбора в фильтрах скоркарт
- ⌛ Для выгрузок фильтров, отчётов и расхода токенов показывается дата, до которой файл доступен для скачивания
- 🔑 После подтверждения регистрации пользователь входит в систему автоматически, а при выходе сессия завершается и на сервере (в интерфейсе и в виджете)
- 🛡️ Отключение собственной двухфакторной аутентификации требует подтверждения кодом
⚙️ Производительность и обслуживание
- 🐘 Шаблоны установки переведены на PostgreSQL 18, для PostgreSQL отключена JIT-компиляция, которая замедляла типичные запросы Swarmica
- 📜 В новых установках логи контейнеров пишутся в systemd-journald с ротацией (до 2 ГБ, не дольше двух недель)
- 🚀 Ускорена загрузка списка заявок: меньше повторяющихся запросов и быстрее подсчёт для постраничного вывода
- 🗑️ Экспорты заявок (HTML/PDF) теперь автоматически удаляются через 30 дней (срок настраивается)
🐞 Исправления
- 🔁 Исправлено объединение заявок: корректно пересчитываются поля целевой заявки (включая дату последнего ответа) и счётчики связей статей, объединение заявок с общей задачей больше не падает, при смене целевой заявки в массовом объединении можно вернуться назад
- 📨 Получатель письма из поля «Кому» сохраняется в копии заявки, если адрес канала был в копии; удалённый почтовый канал по умолчанию больше не используется для новых заявок и исходящих писем; исправлены ошибки разбора отдельных писем и проверки IMAP-подключения
- ✈️ Исправлены потеря первого сообщения нового пользователя в групповом Telegram-боте и дублирование сообщений с картинками
- ⭐ Запрос оценки CSAT снова отправляется в WhatsApp, в том числе для решённых чатов и заявок из любого виджета
- 📈 Первый комментарий агента при создании заявки больше не считается ответом в статусе, SLA и OLA
- 🤖 ИИ-эвалуаторы оставляют комментарии на языке интерфейса и не комментируют критерии с оценкой «Да»
- 🧩 Исправлены ошибки в Jinja-шаблонах при использовании фильтрации внутри блоков и циклов
- ⚙️ Удаление навыка, используемого в правиле автоназначения, больше не приводит к ошибке и не оставляет в правиле пустое условие по навыкам
- 📝 Шаблоном заявки по умолчанию для одного набора ролей теперь может быть только один шаблон
- 🪪 Улучшены проверка и форматирование идентити пользователей (email, Telegram, VK, WhatsApp)
- 🖥️ Исправлены пагинация во вкладке «Клиенты», слишком узкое поле лицензионного ключа в форме создания заявки, выбор канала при создании заявки, увеличение картинок в статьях, оператор «равно» в фильтре чатов, лишняя кнопка «Удалить» при создании WhatsApp-канала, пропадание виджета при обновлении страницы и показ лицензионного соглашения в виджете после отправки кода регистрации
- ✉️ Уменьшены отступы в письмах в брендировании по умолчанию
- 🔐 Исправлены уязвимости и повышена безопасность системы
Новые переменные окружения
В версии 6.2.0 появились новые параметры в файле .env. Задавать их не обязательно: если переменная не указана, используется значение по умолчанию.
| Переменная | По умолчанию | Описание |
|---|---|---|
EMAIL_STORE_FAILED_EMAILS_MAX_AGE_DAYS | 30 | Через сколько дней удаляются письма, сохранённые из-за ошибок обработки. 0 — хранить бессрочно |
TICKET_EXPORTS_MAX_AGE_DAYS | 30 | Срок хранения экспортов заявок (HTML/PDF) в днях |
RUNTIME_SCRIPT_RUN_THROTTLE_RATE | 10/min | Лимит ручных запусков скрипта на пользователя, формат <число>/<s|min|hour|day>. 0 — без ограничений |
EMAIL_AUTH_ADDRESS_THROTTLE_RATE | 3/hour | Лимит писем регистрации и смены пароля на один адрес. 0 — без ограничений |
EMAIL_AUTH_CODE_COOLDOWN | 60 | Секунды после отправки кода, в течение которых повторный запрос не отправляет новое письмо. 0 — без паузы |
EMAIL_AUTH_TOKEN_MAX_FAILED_ATTEMPTS | 3 | Количество неверных вводов кода (регистрация, сброс пароля, подтверждение идентити), после которого код аннулируется. 0 — без ограничений |
EMAIL_AUTH_CONFIRM_THROTTLE_RATE | 5/min | Лимит попыток подтверждения кода регистрации и смены пароля с одного адреса клиента. 0 — без ограничений |
EMAIL_AUTH_CONFIRM_FAILURES_THROTTLE_RATE | 20/hour | Общий лимит неверных кодов при подтверждении регистрации и смены пароля для всех клиентов. 0 — без ограничений |
IDENTITY_VERIFICATION_CONFIRM_THROTTLE_RATE | 5/min | Лимит попыток подтверждения идентити для пользователя. 0 — без ограничений |
AI_ASSISTANT_EXTERNAL_THROTTLE_RATE | 10/min | Лимит запросов к ИИ-подсказке решения на одного клиентского пользователя. Внутренние роли не ограничиваются. 0 — без ограничений |
AI_ASSISTANT_EXTERNAL_TOTAL_THROTTLE_RATE | 100/min | Общий лимит запросов к ИИ-подсказке решения для всех клиентских пользователей. 0 — без ограничений |
REBALANCER_LOCK_TIMEOUT | 1800 | Сколько секунд держится блокировка от параллельных запусков ребалансера. Не устанавливайте 0 |