Есть задача создать справочник для внутреннего использования в компании. Данные в него будут импортироваться из двух CSV файлов, полученных с госуслуг. Использовать предполагаю DJANGO и PostgreSQL.
Структура исходных файлов, получаемых с госуслуг :{
"type": "array",
"items": {
"type": "object",
"properties": {
"Name": {
"description": "Наименование",
"type": "string",
"maxLength": 500
},
"Idx": {
"description": "Индекс",
"type": "string",
"maxLength": 10
},
"Razdel": {
"description": "Код раздела",
"type": "string",
"maxLength": 1
},
"Kod": {
"description": "Код",
"type": "string",
"maxLength": 12
},
"Nomdescr": {
"description": "Описание",
"type": "string",
"maxLength": 8000
},
"global_id": {
"description": "global_id",
"type": "number"
}
},
}
}
Данные в исходных файлах неоднородны- в вышеописанной структуре будут и непосредственно элементы справочников(когда все поля заполнены), и элементы-группы (когда поле "Код" и "Раздел" будут пусты).
Данные полученные из двух файлов необходимо связать по части поля "Код", причем связь будет присутствовать не всегда. Пример: на скрине ниже поле Kod двух справочников имеет связь
Однако если на позициях 8-9-10 поля Kod справочника2 стоят 000, то к этому полу отсутствует соответствующее значение справочника1. Пример:
Импорт файлов с госуслуг необходимо проводить 1 раз в неделю, каждый раз получая полный перечень актуальных данных. Необходимо хранить историю всех изменений данных (видеть какие новые данные появились при загрузке, а какие утратили актуальность и в исходном файле отсутствовали).
Вопросы:
1. Как организовать модели данных и связь полей Kod справочников(предполагаю, для организации связей между справочниками и выделения групп справочников необходимо использовать промежуточные модели)?
2. Как осуществить хранение истории изменений при импорте? Вижу вариант такой- добавить в модель каждого справочника поля статус и дата изменения, при импорте в имеющихся актуальных записях справочника обновлять дату, новые записи в справочник добавлять и ставить дату добавления, после импорта в записях, в которых дата не изменилась - изменить статус и актуализировать дату. Хотя при таком варианте база быстро "распухнет", подскажите, кто знает другие решения.
P.S.: не пинайте ногами это мой первый вопрос