Как мы потеряли и восстановили 30 000 строк данных заказчика

В компании АгроКвалифаер мы интегрировали наши алгоритмы контроля качества в Telegram-бота. Сотрудники отправляют фото продукта, а бот определяет его качество — отправлять его в списание или на продажу. Первое время работу бота валидировали агротехнологи: они присутствовали в общем чате и корректировали ответы при необходимости. Мы также настроили парсер, который собирал статистику по правильности ответов в базу данных. К этой базе был подключён дашборд DataLens, позволявший проводить детальную аналитику эффективности системы. 🩼 В июле мы доработали бота и убрали вывод имени продукта в ответе. К сожалению, это «сломало» логику парсера — в базу начали записываться пустые поля по категориям продуктов. Ошибку мы заметили только к концу сентября. В таблице оказалось около 30 тысяч строк без категорий, и встал вопрос: как быстро восстановить данные? 💯 Мы решили пропустить фотографии без категории через нашу модель классификации продукта. Модель показывала высокую точность и в тестах, и в проде, поэтому мы приняли результаты как валидные. Написали простой синхронный скрипт для обращений к API — и через 5–6 часов восстановили все данные. Дальше нужно было аккуратно вставить новые значения в таблицу по ключу. Здесь пригодились регулярные бэкапы базы данных — без них восстановление заняло бы куда больше времени. При первой попытке вставки, из-за особенностей ClickHouse, мы случайно стерли данные за предыдущий год 😅 Но благодаря бэкапам быстро всё восстановили. В итоге на работу по исправлению ошибок ушло около 8–10 часов трудозатрат — не так уж много, учитывая масштаб проблемы. 📌Главный урок — анализировать каждое изменение в системе на влияние на другие компоненты. Иногда одно поле в ответе бота может стоить дня восстановления данных.