# Обновление v5.2.x
# Инструкция

:::danger
ВАЖНО! Перед обновлением на v5.2.x необходимо иметь версию Swarmica не ниже [v5.1.x](https://support.swarmica.com/article/ru/898-obnovlenie-v51x.html "v5.1.x")
:::

### Подготовка

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

```bash
~# 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, если есть дополнительные параметры - удалите их.&#x20;

```txt
  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`:

```txt
  celerybeat:
    <<: *django
    restart: always
    depends_on:
      - postgres
      - redis
    command: /start-celerybeat
    labels:
      - "traefik.enable=false"
```

*   В секции `traefik` замените параметр `depends_on` на `frontend`:

```txt
...
  traefik:
    image: traefik:latest
    depends_on:
      - frontend
    restart: always
...
```

*   Если вы планируете использовать SEO-оптимизированный публичный портал базы знаний, то добавьте сервис helpcenter:

```txt
  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"
```

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

### Обновление

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

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

```bash
docker compose pull
docker compose down
docker compose up -d
```

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

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

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

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

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

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

```bash
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\. Запустите команду, которая перенесет для всех опубликованных статей текущие значения автора  в редактора:

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

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

```bash
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\. Запустите команду создания индекса поиска по значением кастомных полей тикета (это оптимизирует время поиска по списку тикетов):

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

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

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

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

```bash
docker system prune -a
```

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

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

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

***

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

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