Чек-лист запуска
Настройки 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.