Задача

Разработать скрипт для постоянного переноса и синхронизации информации между двумя независимыми CRM-системами (назовем их CRM_A и CRM_B). Исполнитель работает с обеими системами только по API. Цель - добиться полной автоматизации без ручного вмешательства: по расписанию из CRM_A выгружаются списки объектов, затем они фильтруются «на лету», и нужная часть отправляется в CRM_B.

Формат обмена и протоколы

  • Документация на API обеих CRM предоставляется только на английском языке (переводы не предоставляются).
  • Основные методы: HTTP GET (получение) и HTTP POST (отправка) + одна из систем использует GraphQL для запросов выборки данных. Поток обязан работать и с GraphQL, и с REST корректно.
  • При отсутствии ответа должна быть автоматическая обработка ошибок сети (timeout, retries, логирование).

Процесс и автоматизация

  • Скрипт должен запускаться автономно, запланировано (например, по заданию в cron) - минимум 1 раз в сутки.
  • Для промежуточного хранения / лимитов допускается использовать локальное кеширование последних успешных ответов.
  • data‑сегмент, который не нужен для второй системы, отсеивается с помощью регулярной проверки полей.
  • Исключить дубли при повторном выполнении данных за одно и то же число: проверка уникальности осуществляется по уникальному внешнему ID (предположить, что есть в обеих системах).

Требования к коду

  • Основная среда выполнения - любая (не описана заказчиком, обычно Python или Node.js по согласованию), должен быть файл конфигурации с endpoint и токенами/password (не в коде!).
  • После выполнения финальной POST операции должно быть done‑сообщение: контрольная запись в лог (file/system out) с разметкой успешных и ошибочных миграций.
  • Все контакты исполнителя строго запрещены (скрыть).

Результаты

  • Два внедренных, умеющих друг друга слушать процесса.
  • Итог: вторая система получит ежедневный фильтрованный дамп без лишнего „мусорного“ трафика в API‑балансе.