Цель доработки

Разработать и реализовать полноценную двустороннюю интеграцию между приложением и API работного сайта для синхронизации списка вакансий, откликов и их статусов.

Исходная архитектура

Backend приложения написан на Node.js и развернут на платформе для кодинга. Базовая интеграция с API уже существует (настроен OAuth), позволяет загружать резюме из холодной базы.

Что необходимо реализовать

1. Работа с вакансиями

  • Получение списка вакансий работодателя через API (с поддержкой пагинации).
  • Сохранение полученных данных в базу данных.
  • Регулярное (через cron) или ручное обновление информации о вакансиях.
  • Отслеживание и синхронизация статусов вакансий (например, открытие/закрытие).

2. Работа с откликами

  • Получение списка откликов для каждой конкретной вакансии.
  • Сохранение откликов в базе данных.
  • Периодическая синхронизация (опрос API каждые 5-10 минут).
  • Обновление статуса отклика для отражения изменений, произошедших на стороне сервиса.

3. Двусторонняя синхронизация действий

  • Прямая синхронизация: Изменение статуса отклика в приложении (разобрать, отказ, приглашение, переход по этапам) должно приводить к отправке соответствующего запроса в API.
  • Обратная синхронизация: При изменении статуса на стороне внешнего сервиса, приложение должно автоматически получать и обновлять его в своей базе данных.

Требования к реализации API

  • Использовать только официальное API сервиса.
  • Обязательная обработка: лимитов запросов, ошибки авторизации 401 (с автоматическим обновлением токена), а также логирование всех ошибок.

Желательные улучшения (но не строго обязательны)

  • Кнопка ручного запуска синхронизации 'Синхронизировать' в интерфейсе.
  • Автоматическое обновление по расписанию (cron).
  • Детальное логирование всего процесса синхронизации.
  • Механизмы защиты от дублирования записей.

Итоговый результат

В приложении отображается актуальный список всех вакансий и откликов из профиля на внешнем сайте. Пользователь может управлять статусами откликов непосредственно из приложения, а все изменения автоматически и двунаправленно синхронизируются и поддерживаются в актуальном состоянии.