Автоматическое обновление каталога должно сопоставлять товары по стабильному внешнему идентификатору и не удалять данные из-за одного пустого файла.

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

Как проявляется проблема

Цены и остатки устаревают, ручной импорт занимает часы, а очередная выгрузка создает дубли или обнуляет товары.

Что проверить сразу

  • Зафиксируйте точное время, идентификатор пользователя, заказа, события или фоновой задачи.
  • Сравните один успешный и один проблемный сценарий при одинаковых исходных условиях.
  • Проверьте последние изменения в коде, конфигурации, правах, данных и внешних интеграциях.
  • Сохраните логи до повторного запуска, очистки кеша или ручного изменения рабочих записей.

Основные причины

  • Сопоставление идет по названию вместо артикула или external_id.
  • Файл иногда загружается неполным, но воспринимается как полный каталог.
  • Разные источники перезаписывают одни и те же поля.
  • Импорт выполняется целиком в одном запросе и падает по timeout.

Пошаговая диагностика

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

Как исправить

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

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

Как проверить результат

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

Чего не стоит делать

  • Не отключайте авторизацию, валидацию и ограничения доступа только ради исчезновения ошибки.
  • Не запускайте повторно финансовые, почтовые и массовые операции без проверки идемпотентности.
  • Не меняйте рабочую базу массовым запросом без выборки, бэкапа и понятного отката.
  • Не оставляйте токены, пароли, персональные данные и полные тела запросов в открытых логах.

Как не допустить повторения

  • Сохраняйте тестовый набор поставщика и проверяйте формат до запуска.
  • Установите пороги допустимого изменения цены и количества удалений.

Что подготовить для технического разбора

  • Ссылку на страницу, название интеграции, метод API или идентификатор фоновой задачи.
  • Описание ожидаемого и фактического результата без передачи паролей и действующих токенов.
  • Фрагмент лога за нужный период и пример данных, на которых ошибка воспроизводится.
  • Список последних обновлений и сведения о рабочем окружении.

Частые вопросы

Можно ли обойтись без полной переделки?

Обычно да. Когда точка расхождения найдена, проблема решается локальной правкой обработчика, запроса, настройки, индекса или проверки доступа.

Почему ошибка возникает только иногда?

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

Итог

Надежная автоматизация каталога сначала проверяет входные данные и только затем меняет рабочие товары.

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