Перейти к содержанию

Чек-лист запуска

Настройки CARGO.RUN

  • [ ] Создан активный интеграционный клиент.
  • [ ] Назначена правильная платформа.
  • [ ] Выданы clientId и clientSecret отдельно для теста и production.
  • [ ] Разрешено упрощённое создание заявок, если партнёр их создаёт.
  • [ ] Настроен HTTPS callbackTarget.
  • [ ] Настроен уникальный callbackSecret.
  • [ ] Включена подписка Bid/Summary.
  • [ ] Выдан доступ к необходимым организациям.

Авторизация

  • [ ] Токен получается через client_credentials.
  • [ ] Токен кешируется до истечения expiresIn.
  • [ ] Реализовано однократное обновление после 401.
  • [ ] Секреты и токены не попадают в логи.
  • [ ] Метод токена не вызывается чаще двух раз за 30 секунд.

Заявки

  • [ ] Проверено создание заявки с двумя точками.
  • [ ] Проверено обновление по externalId.
  • [ ] Проверено повторение запроса после сетевой ошибки.
  • [ ] Корректно обрабатываются локальные даты точек.
  • [ ] У каждой точки передан непустой адрес.
  • [ ] Проверено создание точки без координат и её геокодирование по адресу.
  • [ ] Если координаты передаются, используется порядок [долгота, широта].
  • [ ] При обновлении передаются стабильные externalId точек и сохраняются их статусы.
  • [ ] Проверены counterparty, vehicleType и temperatureRegime, если они используются.
  • [ ] Сохраняется ID заявки CARGO.RUN.

Очередь

  • [ ] Обрабатывается результат каждой команды постановки.
  • [ ] Сохраняются taskId.
  • [ ] Учитываются Retry-After и readyInMsec.
  • [ ] Проверяются статус задачи и статусы всех объектов.
  • [ ] Для повторов используется уникальный Idempotency-Key.
  • [ ] Один ключ не переиспользуется с другим телом.

Webhook

  • [ ] Tasks/Ping доставляется успешно.
  • [ ] HMAC проверяется по raw body.
  • [ ] Проверяется timestamp.
  • [ ] События дедуплицируются по eventId.
  • [ ] Callback быстро сохраняет событие и отвечает 2xx.
  • [ ] Обработчик допускает нарушение порядка доставки.
  • [ ] Более старые updatedAt не перезаписывают новые данные.

Восстановление

  • [ ] Выполнена первоначальная загрузка через ReadQuery или объединённый GetList.
  • [ ] Обрабатываются оба значения isCreatedByPlatform.
  • [ ] Учтено, что GetList без X-Organization-Id возвращает все доступные организации.
  • [ ] Хранится курсор (updatedAt,id).
  • [ ] Используется перекрытие интервалов.
  • [ ] Реализована периодическая контрольная сверка.
  • [ ] Проверено восстановление после временного отключения callback.

Данные исполнения

  • [ ] События заявки обрабатываются как строковые enum.
  • [ ] Фактический маршрут запрашивается синхронно.
  • [ ] Настроено разумное прореживание координат.
  • [ ] Файлы скачиваются до истечения временной ссылки.
  • [ ] Неизвестные поля и enum не останавливают синхронизацию.
  • [ ] Учтено, что изменение ETA не обязательно меняет updatedAt.