DEV Community

Глеб Лужбин S-WEBS
Глеб Лужбин S-WEBS

Posted on • Originally published at s-webs24.ru

Синхронизация задач в межпортальных чатах 2.0

Синхронизация задач в межпортальных чатах 2.0

Введение

Первая версия межпортальных чатов решила задачу общения: партнёр и клиент на разных порталах Битрикс24 переписываются напрямую. Но вот что происходит дальше: в чате клиент пишет «настройте робота», «поправьте отчёт», «добавьте поле в сделку». Партнёр читает, открывает свой портал и вручную заводит задачу. Копирует заголовок, вставляет описание, выбирает группу и ответственного. На каждую задачу — несколько минут рутины. Десять задач в день — полчаса потерянного времени.

Синхронизация задач в межпортальных чатах 2.0 убирает этот ручной перенос полностью. Группы на порталах связываются, и задачи между ними синхронизируются автоматически. Раз в несколько минут. Без единого нажатия кнопки.

Как это работает

В основе лежит механизм автоматической синхронизации, работающий независимо от чатов. Он состоит из трёх частей: привязка порталов, сопоставление групп и периодический опрос задач.

Связывание порталов. Партнёр и клиент связывают свои порталы через пригласительный код. Код генерируется на стороне партнёра, клиент вводит его в своём приложении. После этого порталы считаются связанными — появляется техническая возможность для обмена данными.

Сопоставление групп. Партнёр в интерфейсе приложения выбирает, какая группа (проект) на его портале соответствует группе на портале клиента. Например: «Проект Внедрение CRM» на портале партнёра ↔ «Рабочая группа» на портале клиента. Для каждой пары групп можно указать ответственного с обеих сторон и направление синхронизации.

Периодический опрос. Раз в несколько минут планировщик на сервере приложения опрашивает обе группы через REST API Битрикс24. Он запрашивает задачи, созданные или изменённые с момента последней проверки. Если в группе клиента появилась новая задача, планировщик создаёт её копию в связанной группе партнёра. Если задача была изменена — обновляет копию.

Синхронизация двусторонняя: задачи ходят в обе стороны. Партнёр видит задачи клиента у себя в проекте, клиент видит задачи партнёра у себя. Каждая пара «оригинал — копия» отслеживается в базе — приложение знает, какая задача на каком портале кому соответствует.

Что именно синхронизируется

Синхронизация охватывает не только заголовок и описание, но и связанные данные:

  • Заголовок и описание. Основные поля задачи переносятся как есть.

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

  • Файлы. Документы и изображения, прикреплённые к задаче на одном портале, автоматически загружаются на Диск другого портала и прикрепляются к копии задачи. Синхронизация файлов работает через отдельный воркер и не замедляет создание задачи.

  • Изменения. Если задачу обновили на одном портале, изменения переносятся на другой. Используется стратегия Last-Writer-Wins: правка, сделанная позже, побеждает.

Настройка синхронизации

Настройка занимает несколько минут и делается один раз для каждой пары порталов:

  1. Партнёр генерирует пригласительный код в интерфейсе приложения

  2. Клиент вводит код на своей стороне — порталы связаны

  3. Партнёр в разделе «Синхронизация задач» выбирает пары групп для сопоставления

  4. Для каждой пары указывает: синхронизировать ли задачи от партнёра к клиенту, ответственного на стороне клиента, ответственного на стороне партнёра

После этого синхронизация работает автоматически. Приложение само отслеживает новые и изменённые задачи, создаёт и обновляет копии, синхронизирует файлы.

Сценарии использования

Проектное внедрение. Интегратор ведёт проект настройки CRM. Рабочая группа «Внедрение» на портале интегратора связана с группой «Проект CRM» на портале клиента. Клиент создаёт задачу «Настроить воронку продаж» — через пару минут она появляется в группе интегратора. Интегратор назначает ответственного, ставит дедлайн. Клиент видит обновления у себя. Оба работают в своих порталах, задачи синхронизируются автоматически.

Техническая поддержка. Компания обслуживает несколько клиентов по модели IT-аутсорса. Для каждого клиента настроена своя пара групп. Клиент создаёт задачу с описанием проблемы — через несколько минут она у инженера поддержки. Инженер прикрепляет скриншот с решением, меняет статус. Клиент видит изменения на своей стороне.

Бухгалтерский аутсорс. Бухгалтерская компания ведёт четырёх клиентов. У каждого своя группа на портале бухгалтера, связанная с группой клиента. Задачи по счетам, актам и отчётности создаются клиентом и автоматически попадают в нужную группу с назначенным ответственным бухгалтером. Дедлайны контролируются на стороне бухгалтера, клиент видит статус выполнения.

Что под капотом

Вторая версия приложения полностью переписана. Бэкенд — на Python (FastAPI), фронтенд — на Nuxt 4 с Bitrix24 UI. Синхронизация задач работает через периодический планировщик, который запускает цикл опроса для всех сопоставленных групп.

Опрос групп сделан инкрементальным: приложение запрашивает только задачи, изменённые с момента последней проверки, а не весь список. Это позволяет синхронизировать большие проекты с сотнями задач без лишней нагрузки на REST API Битрикс24.

Читать полностью на S-WEBS24

Top comments (0)