- PVSM.RU - https://www.pvsm.ru -

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

Есть такой сайт — РосЯма [1]. Когда-то давно о нём даже писали на хабре [2]. Я его поддерживаю и хочу поделиться решением одной маленькой проблемки, с которой столкнулся в процессе. Возможно, кому-то это будет интересно.

Ну так вот. На РосЯме есть два справочника [3], которые обновляются из внешних источников. Это справочник подразделений ГИБДД и справочник региональных Прокуратур. Они заполняются данными из официальных сайтов ГИБДД [4] и Генпрокуратуры [5]. Однако данные на этих сайтах иногда оказываются ошибочными (например индекс Нижегородского ГИБДД), а иногда обновляются недостаточно оперативно. И пользователи сообщают нам об этом, поскольку хотят пользоваться актуальными данными.

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

Первое решение, которое приходит в голову — создать ещё один справочник, в который занести все ручные правки, с тем, чтобы они накатывались сразу после ежедневного обновления. Однако этот вариант плох тем, что такая ручная правка когда-нибудь станет ненужной (официальный сайт начнёт присылать верные данные) а чуть погодя и просто ошибочной (командир подразделения поменялся два раза за полтора месяца).

Поэтому было решено сделать умную систему гибкой синхронизации.

Были созданы копии справочников ГИБДД и Прокуратур. В этих справочниках хранится информация, приехавшая при прошлой синхронизации. При текущей синхронизации, полученная информация сравнивается с копией справочника, выявляются изменённые данные, и уже только эти данные и обновляются в боевом справочнике. В результате, получив информацию от пользователя о неверных данных в справочнике, можно сразу же внести корректировки на РосЯме, а так же написать письмо в ГИБДД, с тем, чтобы они у себя подправили. После чего я спокойно отдыхаю, потому что знаю, что когда ГИБДД подправит данные по моему сообщению — РосЯма их подгрузит автоматически и ничего при этом не сломается.

Если кому интересно — код реализации выложен на гитхабе: github.com/RosYama/RosYama.2/blob/master/protected/controllers/SpravController.php [6] функции actionFill_gibdd_reference() и actionFill_prosecutor_reference()

P.S. А ещё у нас вчера появилась такая же ключница, как и на хабре, вот )))

Автор: fezeev


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/kraudsorsing/15493

Ссылки в тексте:

[1] РосЯма: http://rosyama.ru

[2] даже писали на хабре: http://habrahabr.ru/post/120286/

[3] два справочника: http://rosyama.ru/sprav/

[4] ГИБДД: http://www.gibdd.ru/

[5] Генпрокуратуры: http://www.genproc.gov.ru/

[6] github.com/RosYama/RosYama.2/blob/master/protected/controllers/SpravController.php: https://github.com/RosYama/RosYama.2/blob/master/protected/controllers/SpravController.php