Повтор отдельных заказов из партии импорта
Версия 2.7
Состояние на уровне строки
В обработчике магазина ведите журнал по каждой строке партии. Различайте строку с ошибкой подготовки, подтверждённое создание, отказ и неизвестный итог сетевого вызова. Сохраняйте исходное тело операции, Idempotency-Key и подтверждённый номер RouteDesk. Если журнал показывает только общий статус файла, дежурный не сможет безопасно отделить обработанные строки от ожидающих.
Какие строки повторять
Подтверждённые строки исключите из повтора. Строки с ошибкой подготовки исправьте и проверьте заново до отправки. Для неизвестного итога используйте прежний ключ и неизменное тело, пока запись ключа хранится в течение 24 часов. Если срок вышел, сначала проверьте кабинет и локальные связи. После сверки оператор может решить, нужен ли новый запрос.
Как обработать исправленную строку
Изменение адреса или веса меняет содержание запроса. Повтор с прежним ключом и отличающимся телом может вернуть 409. Сохраните оба снимка в журнале интеграции с версией записи. При неоднозначном итоге первой попытки остановите автоматический запуск новой операции для этого заказа и выведите его на ручную сверку.
Пример частичного сбоя
Допустим, обработчик подтвердил 17 строк из 20, две не прошли локальную проверку, а одна завершилась тайм-аутом. Восстановление охватывает две исправляемые строки и одну неопределённую. Для первых двух проверьте исправления, для последней проверьте исход запроса или повторите его с тем же ключом и телом в пределах окна. Сверьте итоговое число созданных отправлений с поштучными записями.
Признаки завершения партии
У каждой принятой строки должен быть известный итог и, где применимо, номер отправления. Для отклонённых строк сохраните причину и лицо, которому передана задача. Пакетный отчёт показывает количество подтверждённых созданий, подготовительных ошибок и ожидающих сверки. При передаче на поддержку исключите строки, которые никогда не дошли до RouteDesk: их разбор начинается в системе магазина.
Что делать с повторно загруженным файлом
При загрузке того же файла покажите предыдущий результат партии по локальной записи. Сравните идентификаторы строк и уже выданные номера RouteDesk. Если оператор исправил один заказ, сохраните его как новую редакцию строки, а ссылки подтверждённых строк перенесите в новый отчёт. Повторная загрузка файла не должна выдавать новую этикетку каждой строке.
Контроль запуска несколькими исполнителями
Когда партия разбита на группы, согласуйте блокировку по локальному идентификатору строки и операции. Два исполнителя могут увидеть один ожидающий заказ после перезапуска. Проверьте, что оба читают сохранённый ключ, а операция выделяется одному из них. Если обработчик не может подтвердить результат, запишите причину и время для дежурного, чтобы избежать очередного параллельного запуска.