#957: Обновление v5.2.x

Инструкция

ВАЖНО! Перед обновлением на v5.2.x необходимо иметь версию Swarmica не ниже v5.1.x

Подготовка

1. Для обновления проверьте, что в конфигурационном файле .env поставлена версия:

~# grep VERSION .env
SW_FRONTEND_VERSION=v5.2.0
SW_BACKEND_VERSION=v5.2.0
SW_HELPCENTER_VERSION=v5.2.0

2. Отредактируйте файл docker-compose.yml, чтобы отразить необходимые изменения:

  • Для сервиса frontend замените параметр depends_on на django и убедитесь, что роутинг (правило .rule в лейблах) указывает только на Host, если есть дополнительные параметры - удалите их.
  frontend:
    image: reg.gl.swd.im/swarmica/frontend:${SW_FRONTEND_VERSION}
    depends_on:
      - django
    restart: always
    volumes:
      - ./robots.txt:/usr/share/nginx/html/robots.txt:ro
      - swarmica_static:/admin_static:ro
      - swarmica_ugc:/attachments:ro
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.frontend-router.entrypoints=web-secure"
      - "traefik.http.routers.frontend-router.rule=Host(`${SW_HOSTNAME}`)"
      - "traefik.http.routers.frontend-router.tls.certresolver=letsencrypt"
      - "traefik.http.routers.frontend-router.priority=10"
      - "traefik.http.routers.frontend-router.middlewares=secure-headers,compression"
  • После секции celeryworker добавьте еще один сервис celerybeat:
  celerybeat:
    <<: *django
    restart: always
    depends_on:
      - postgres
      - redis
    command: /start-celerybeat
    labels:
      - "traefik.enable=false"
  • В секции traefik замените параметр depends_on на frontend:
...
  traefik:
    image: traefik:latest
    depends_on:
      - frontend
    restart: always
...
  • Если вы планируете использовать SEO-оптимизированный публичный портал базы знаний, то добавьте сервис helpcenter:
  helpcenter:
    image: reg.gl.swd.im/swarmica/helpcenter:${SW_HELPCENTER_VERSION}
    restart: always
    depends_on:
      - django
    env_file:
      - .env
    volumes:
      - .env:/app/.env
    labels:
      - "traefik.enable=true"
      - "traefik.http.services.helpcenter.loadbalancer.server.port=4000"
      - "traefik.http.routers.helpcenter-router.rule=Host(`${SW_HOSTNAME}`) && (PathPrefix(`/category`)||PathRegexp(`^/article/.*$`)||PathPrefix(`/_next`)||PathPrefix(`/help`)||Path(`/robots/sitemap.xml`))"
      - "traefik.http.routers.helpcenter-router.priority=11"
      - "traefik.http.routers.helpcenter-router.entrypoints=web-secure"
      - "traefik.http.routers.helpcenter-router.middlewares=secure-headers,compression"
      - "traefik.http.routers.helpcenter-router.service=helpcenter"
      - "traefik.http.routers.helpcenter-router.tls.certresolver=letsencrypt"

Если вы включили helpcenter, то необходимо добавить переменную SW_HELPCENTER_VERSION=v5.2.0 (см. выше) и в переменную FEATURES добавить __helpcenter

Обновление

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

Выполните обновление с перезагрузкой системы:

docker compose pull
docker compose down
docker compose up -d

После обновления

После того, как все контейнеры запустятся и сервис станет доступен через веб-интерфейс, выполните пост-апгрейдные шаги:

1. Запустите команду пост-старт, чтобы обновить файлы статики, индексы поиска и выполнить другие необходимые процедуры:

docker exec --env-file .env -it swarmica-django-1 python manage.py post_start

Эта команда может занять долгое время, в зависимости от количества данных в системе.

2. Запустите команды восстановления шаблонов бота:

docker exec --env-file .env -it swarmica-django-1 python manage.py restore_bot_messages
docker exec --env-file .env -it swarmica-django-1 python manage.py restore_bot_messages -k greeting,ticket_closed

3. Запустите команду, которая перенесет для всех опубликованных статей текущие значения автора в редактора:

docker exec --env-file .env -it swarmica-django-1 python manage.py migrate_article_publisher

4. Запустите команду, которая исправит неверно сохраненные метрики:

docker exec --env-file .env -it swarmica-django-1 python manage.py aggregated_metric_ticket_status_duration 500
docker exec --env-file .env -it swarmica-django-1 python manage.py aggregated_metric_timelog 500

5. Запустите команду создания индекса поиска по значением кастомных полей тикета (это оптимизирует время поиска по списку тикетов):

docker exec --env-file .env -it swarmica-django-1 python manage.py update_aggregated_custom_fields

6. Если вы пользуетесь Нейропоиском для агентов, то запустите следующую команду, чтобы добавить черновики и непроверенные статьи в индекс ИИ-ассистента:

docker exec --env-file .env -it swarmica-django-1 python manage.py update_ai_assistant_search_index

7. Запустите очистку неиспользуемых данных:

docker system prune -a

ВАЖНО! Убедитесь, что все контейнеры успешно запустились, перед запуском этой команды

✨ Основные улучшения

  • 🤝 Интеграции и автоматизация
    • Поддержка сценариев для ботов мессенджеров и управление шаблонами сообщений
    • Исходящие вебхуки и почтовые сообщения
    • Механизм автоматических действий по событию и расписанию
    • Автоматизация скриптов с запуском по расписанию или триггерам (runtime scripts).
  • 🤖 AI-агент
    • Виртуальный AI-агент в тикетах и чатах.
    • Настройка виртуального агента на конкретный канал и/или тикет/чат.
  • 📚 Статьи и база знаний
    • Возможность связывать статьи с задачами в issue-трекерах и добавлять комментарии.
    • Отделение роли публикующего Редактора и Автора для статей.
  • 🎨 UI и UX
    • Вставка и поиск шаблонов быстрого ответа по горячей клавише (#-вставка).
    • Экспорт тикета в PDF и HTML
    • Быстрая проверка дубликатов тикетов
    • Объединение нескольких тикетов в один
    • Возможность копировать вложения при форке тикета или комментария.
    • Возможность скачивать все вложения из комментариев одним кликом.
    • Денормализация кастомных полей тикетов для ускорения поиска.

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

  • 🗄 Тикеты
    • Исправлены ошибки при очистке состояния выбранных тикетов.
    • Исправлены ошибки обновления названия организации и отображения статуса тикета.
    • Исправлена логика работы WhatsApp-бота
    • Исправлено отображение иконок, кнопок и скроллов в чатах (в т.ч. Firefox).
    • Исправлено поведение при создании комментариев из внешних трекеров.
  • 📧 Email
    • Исправлена валидация email-адресов (нельзя использовать ; и ,).
    • Исправлена проверка отправителя с доменом разрешенных в CC
  • 📚 Статьи и QA
    • Исправлена привязка ответственного при отвязке статьи от тикета.
    • Исправлена установка издателя при миграции статей.
    • Исправлен расчёт QA score (учёт правил и карт).
  • 🛡 Права и роли
    • Роль Сотрудник может писать комментарии без учета обязательных кастомных полей
    • Исправлена логика возврата identity в OTP.
  • 📊 Фильтры и поиск
    • Разделение uids и names в экспорте фильтров (Excel).