Раз пошёл разговор про предохранители, разложу, как это выглядит у меня после нескольких лет ежедневных прогонов.
Сырьё и разбор разнесены жёстко, ровно как у вас. Смысл разноса в том, что при любой поломке разбора вы перезапускаете только разбор, по уже лежащему сырью, без единого обращения к поставщику. У меня разбор менялся десятки раз, и ни разу это не стоило лишнего обхода.
Каждый прогон пишет строчку в журнал: дата, длительность, страниц забрано, страниц с ошибкой, позиций разобрано, доля заполнения по каждому важному полю. Эта таблица важнее любых уведомлений. Поломки редко приходят обвалом, чаще поле начинает пустеть: было девяносто восемь процентов заполнения, стало восемьдесят, через неделю сорок. По одному дню такое не видно совсем.
Дальше сравнение с предыдущим днём по каждой позиции, по ключу поставщика. Получаете три списка: появилось, пропало, изменилось. Пропало больше обычного, значит смотреть надо на обход. Изменилось больше обычного, значит поставщик перетряхнул каталог либо у вас разъехался разбор.
Отдельно храню последнюю удачную выгрузку под именем latest. Если сегодняшний прогон не прошёл проверки, магазин работает на вчерашней, и никто ничего не замечает. Полностью пустая витрина стоит дороже суточной задержки данных.
| Проверка перед заливкой | Что смотрю | Что делаю при отказе |
|---|
| число позиций | расхождение с прошлым разом | стоп при разбеге выше десятой части |
| заполнение цены | доля непустых | стоп ниже девяноста пяти процентов |
| заполнение наличия | доля непустых | предупреждение и заливка |
| страницы с ошибкой | сколько за прогон | стоп выше двух процентов |