katlog.orgжурнал разработки Демо-каталогДемо
ИД001
Идеи2 мин чтения

Повторный импорт без страха

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

Первичный импорт — простая задача: пустая база, загружаем всё. Повторный импорт — одна из самых сложных задач всей системы. В базе уже есть исправленные записи, удалённые записи, выданные экземпляры. А в новом файле — смесь старого и нового.

Главный принцип

Исправление библиотекаря всегда побеждаетЕсли библиотекарь исправил поле, повторный импорт его не перезаписывает — даже если в источнике это поле тоже изменилось.

Для этого система хранит у каждой записи две версии: текущую и последнюю загруженную из источника. При новом импорте она сравнивает каждое поле:

  • не менялось нигде — ничего не делать;
  • изменилось только в источнике — можно обновить;
  • исправлено библиотекарем — оставить его версию;
  • изменилось и там и там — показать как конфликт, два значения рядом, решает библиотекарь.

Группы в пробном разборе

  1. Новые записиИх нет в каталоге. По умолчанию — добавить.
  2. Надёжные совпаденияЗапись уже есть. По умолчанию — обновить с сохранением правок и добавить новые экземпляры.
  3. Требуется решениеСовпадение сомнительное — только ручной выбор.
  4. УдалённыеЗаписи, которые библиотекарь удалил. Пропустить.

Экземпляры с заказами и выдачами импорт не трогает никогда. А весь последний импорт можно отменить в течение 24 часов.

Как это было доработано

Сначала при повторной загрузке того же самого файла система отнесла 1 275 записей к «требуется решение», хотя они должны были совпасть уверенно, а позже пробный разбор и вовсе стал падать с ошибкой. После доработки тот же файл даёт понятную картину: 9 новых записей, 6 144 уверенных совпадения и ни одной сомнительной. Повторная загрузка не создаёт дублей, ручные правки сохраняются. Как это делалось — в статье «22 исправления в три этапа».

И это тоже урок: осторожная ошибка лучше смелой. Лишний вопрос библиотекарю раздражает, но молча слитые две разные книги были бы гораздо хуже.