Проект "Интеграция с Региональной витриной данных (РВД)"
Для интеграции с Региональной витриной данных был выделен отдельный пакет для использования его компонентов в различных
продуктах.
На текущий момент интеграция реализуется в рамках проектов Электронная школа (ЭШ) и Электронный колледж (ЭК).
Описание концепции
Со стороны Минцифры предоставляется спецификация (ЕФТТ) с требованиями по формату и механизму выгрузки данных.
Выбрана модель промежуточного хранения данных на стороне продукта, которые подлежат выгрузке. При помощи такого подхода,
можно обеспечить формирование не хранящихся в продукте данных и дальнейшее их обновление и удаление. Упрощается процесс
поиска ошибок в данных, т.к. можно явно определить, в каких записях находятся ошибки и далее анализировать существующие
данные в продуктах или функционал по формированию данных.
Принцип работы
Весь процесс разделен на сбор и выгрузку данных. Выделяются следующие понятия:
Модель продукта
: Django-модель находящаяся в самом продукте. При помощи нее производится накапливание пользовательских данных;
Модель РВД
: Django-модель находящаяся в пакете РВД продукта. Из моделей РВД формируется схема БД, позволяющая хранить данные для
дальнейшей выгрузки в нормализованном виде;
Сущность РВД
: Описание формата выгрузки данных в РВД в виде dataclass-а. Хранит в себе описание первичных, внешних ключей,
обязательность и порядок полей.
На этапе сбора данных производится формирование данных моделей РВД на основе данных моделей продуктов. Существуют так
называемые расчетные модели, для которых данные рассчитываются в процессе сбора.
Стоит обратить внимание, что сущности РВД могут содержать в себе данные из нескольких моделей РВД.
Требования к окружению
Для работы требуется Python >=3.7. Так же в зависимостях есть внутренние пакеты:
- educommon;
- function-tools;
- m3-db-utils;
- uploader-client.
Версии всех пакетов уточнены в файлах с зависимостями.
Разворачивание
Перед внедрением пакета в проект, необходимо убедиться, что:
- В проекте используется логирование из educommon;
- В проект внедрен function-tools;
- В проект внедрен m3-db-utils;
- В проект внедрен uploader-client.
Параметры конфигурационного файла
В разных проектах существуют различные способы добавления настроек, где-то через плагины, где-то напрямую в settings.py.
Будет рассмотрен подход указания настроек в settings.py и указания параметров в конфигурационном файле.
Для возможности конфигурирования необходимо проделать ряд действий:
-
Определение значений по умолчанию настроек в settings.py:
PROJECT_DEFAULT_CONFIG.update({
# Настройки РВД
('rdm_general', 'EXPORT_ENTITY_ID_PREFIX'): '', # Дефолтное значение нужно изменить на специфическое системе
('rdm_general', 'COLLECT_CHUNK_SIZE'): 500,
('rdm_general', 'EXPORT_CHUNK_SIZE'): 500,
('rdm_transfer_task', 'MINUTE'): '0',
('rdm_transfer_task', 'HOUR'): '*/4',
('rdm_transfer_task', 'DAY_OF_WEEK'): '*',
('rdm_transfer_task', 'LOCK_EXPIRE_SECONDS'): 21600,
('rdm_transfer_task', 'TIMEDELTA'): 3600,
('rdm_transfer_task', 'ENTITIES'): '',
('rdm_upload_status_task', 'MINUTE'): '*/30',
('rdm_upload_status_task', 'HOUR'): '*',
('rdm_upload_status_task', 'DAY_OF_WEEK'): '*',
('rdm_upload_status_task', 'LOCK_EXPIRE_SECONDS'): 7200,
('uploader_client', 'URL'): 'http://localhost:8090',
('uploader_client', 'DATAMART_NAME'): '',
('uploader_client', 'REQUEST_RETRIES'): 10,
('uploader_client', 'REQUEST_TIMEOUT'): 10,
('uploader_client', 'ENABLE_REQUEST_EMULATION'): False,
})
-
Получение значений настроек из конфигурационного файла в settings.py:
# Ссылка на каталог с файлами для загрузки
UPLOADS = 'uploads'
# =============================================================================
# Интеграция с Региональной витриной данных (РВД)
# =============================================================================
# Префикс идентификаторов записей сущностей специфический для продукта
RDM_EXPORT_ENTITY_ID_PREFIX = conf.get('rdm_general', 'EXPORT_ENTITY_ID_PREFIX')
# Количество записей моделей ЭШ обрабатываемых за одну итерацию сбора данных
RDM_COLLECT_CHUNK_SIZE = conf.get_int('rdm_general', 'COLLECT_CHUNK_SIZE')
# Количество записей моделей обрабатываемых за одну итерацию экспорта данных
RDM_EXPORT_CHUNK_SIZE = conf.get_int('rdm_general', 'EXPORT_CHUNK_SIZE')
# Количество не экспортированных записей моделей обрабатываемых за одну итерацию обновления поля modified
RDM_UPDATE_NON_EXPORTED_CHUNK_SIZE = conf.get_int('rdm_general', 'UPDATE_NON_EXPORTED_CHUNK_SIZE')
# Настройка запуска периодической задачи выгрузки данных:
RDM_TRANSFER_TASK_MINUTE = conf.get('rdm_transfer_task', 'MINUTE')
RDM_TRANSFER_TASK_HOUR = conf.get('rdm_transfer_task', 'HOUR')
RDM_TRANSFER_TASK_DAY_OF_WEEK = conf.get('rdm_transfer_task', 'DAY_OF_WEEK')
RDM_TRANSFER_TASK_EXPIRE_SECOND = conf.get('rdm_transfer_task', 'LOCK_EXPIRE_SECONDS')
# Настройка запуска периодической задачи статуса загрузки данных в витрину:
RDM_UPLOAD_STATUS_TASK_MINUTE = conf.get('rdm_upload_status_task', 'MINUTE')
RDM_UPLOAD_STATUS_TASK_HOUR = conf.get('rdm_upload_status_task', 'HOUR')
RDM_UPLOAD_STATUS_TASK_DAY_OF_WEEK = conf.get('rdm_upload_status_task', 'DAY_OF_WEEK')
RDM_UPLOAD_STATUS_TASK_EXPIRE_SECOND = conf.get('rdm_upload_status_task', 'LOCK_EXPIRE_SECONDS')
# Настройка запуска периодической задачи поиска зависших этапов экспорта:
RDM_CHECK_SUSPEND_TASK_MINUTE = conf.get('rdm_check_suspend_task', 'MINUTE')
RDM_CHECK_SUSPEND_TASK_HOUR = conf.get('rdm_check_suspend_task', 'HOUR')
RDM_CHECK_SUSPEND_TASK_DAY_OF_WEEK = conf.get('rdm_check_suspend_task', 'DAY_OF_WEEK')
RDM_CHECK_SUSPEND_TASK_EXPIRE_SECOND = conf.get('rdm_check_suspend_task', 'LOCK_EXPIRE_SECONDS')
RDM_CHECK_SUSPEND_TASK_TIMEDELTA = conf.get_int('rdm_check_suspend_task', 'TIMEDELTA')
# Загрузка данных в Региональную витрину данных (РВД)
# Адрес витрины (schema://host:port)
RDM_UPLOADER_CLIENT_URL = conf.get('uploader_client', 'URL')
# Мнемоника Витрины
RDM_UPLOADER_CLIENT_DATAMART_NAME = conf.get('uploader_client', 'DATAMART_NAME')
# Количество повторных попыток запроса
RDM_UPLOADER_CLIENT_REQUEST_RETRIES = conf.get_int('uploader_client', 'REQUEST_RETRIES')
# Таймаут запроса, сек
RDM_UPLOADER_CLIENT_REQUEST_TIMEOUT = conf.get_int('uploader_client', 'REQUEST_TIMEOUT')
# Включить эмуляцию отправки запросов
RDM_UPLOADER_CLIENT_ENABLE_REQUEST_EMULATION = conf.get_bool('uploader_client', 'ENABLE_REQUEST_EMULATION')
Перечень настроек в settings.py указан в таблице ниже.
Название настройки в settings | Описание | Значение по умолчанию |
---|
UPLOADS | Основная директория в MEDIA, в которой будет создана директория edu_rdm_integration для сохранения файлов для дальнейшей выгрузки | 500 |
RDM_COLLECT_CHUNK_SIZE | Количество записей моделей обрабатываемых за одну итерацию сбора данных | 500 |
RDM_EXPORT_CHUNK_SIZE | Количество записей моделей обрабатываемых за одну итерацию экспорта | 500 |
RDM_UPDATE_NON_EXPORTED_CHUNK_SIZE | # Количество не экспортированных записей моделей обрабатываемых за одну итерацию обновления поля modified | 5000 |
RDM_UPLOADER_CLIENT_URL | Адрес витрины (schema://host:port) | 'http://localhost:8090' |
RDM_UPLOADER_CLIENT_DATAMART_NAME | Мнемоника Витрины | 'test' |
RDM_UPLOADER_CLIENT_REQUEST_RETRIES | Количество повторных попыток запроса | 10 |
RDM_UPLOADER_CLIENT_REQUEST_TIMEOUT | Таймаут запроса, сек | 10 |
RDM_UPLOADER_CLIENT_ENABLE_REQUEST_EMULATION | Включить эмуляцию отправки запросов | True |
RDM_TRANSFER_TASK_MINUTE | Настройка запуска периодической задачи выгрузки данных. Минута | '0' |
RDM_TRANSFER_TASK_HOUR | Настройка запуска периодической задачи выгрузки данных. Час | '*/4' |
RDM_TRANSFER_TASK_DAY_OF_WEEK | Настройка запуска периодической задачи выгрузки данных. День недели | '*' |
RDM_TRANSFER_TASK_LOCK_EXPIRE_SECONDS | Время по истечении которого, блокировка может быть снята (в секунадх) | 21600 |
RDM_UPLOAD_STATUS_TASK_MINUTE | Настройка запуска периодической задачи статуса загрузки данных в витрину. Минута | '*/30' |
RDM_UPLOAD_STATUS_TASK_HOUR | Настройка запуска периодической задачи статуса загрузки данных в витрину. Час | '*' |
RDM_UPLOAD_STATUS_TASK_DAY_OF_WEEK | Настройка запуска периодической задачи статуса загрузки данных в витрину. День недели | '*' |
RDM_UPLOAD_STATUS_TASK_LOCK_EXPIRE_SECONDS | Время по истечении которого, блокировка может быть снята (в секунадх) | 3600 |
RDM_CHECK_SUSPEND_TASK_STAGE_TIMEOUT | Дельта для определения зависшего подэтапа. Минута | 120 |
-
В дефолтный конфиг проекта необходимо добавить:
# Общие настройки интеграции с РВД
[rmd_general]
# Префикс идентификаторов записей сущностей специфический для продукта. Указывается в settings.py и не должен
# изменяться. Возможность изменения через конфигурационный файл оставлена для экстренных случаев.
# EXPORT_ENTITY_ID_PREFIX =
# Количество записей моделей обрабатываемых за одну итерацию экспорта данных
EXPORT_CHUNK_SIZE = 500
# Количество записей моделей ЭШ обрабатываемых за одну итерацию сбора данных
COLLECT_CHUNK_SIZE = 500
# Количество не экспортированных записей моделей обрабатываемых за одну итерацию обновления поля modified
UPDATE_NON_EXPORTED_CHUNK_SIZE = 5_000
# Настройка запуска периодической задачи выгрузки данных
[rdm_transfer_task]
MINUTE=*/2
HOUR=*
DAY_OF_WEEK=*
LOCK_EXPIRE_SECONDS=21600
# Дельта между прошлым и текущим запуском, сек
TIMEDELTA=120
# Сущности, по которым должен производиться сбор и выгрузка данных. Перечисляются через запятую без пробелов.
ENTITIES =
# Настройка запуска периодической задачи статуса загрузки данных в витрину
[rdm_upload_status_task]
MINUTE=*/2
HOUR=*
DAY_OF_WEEK=*
LOCK_EXPIRE_SECONDS=7200
# Настройка запуска периодической задачи поиска зависших этапов экспорта
[rdm_check_suspend_task]
MINUTE=*/10
HOUR=*
DAY_OF_WEEK=*
LOCK_EXPIRE_SECONDS=7200
# Дельта для определения зависшего подэтапа, мин
STAGE_TIMEOUT=120
[uploader_client]
# Адрес витрины
URL = http://localhost:8090
# Мнемоника Витрины
DATAMART_NAME = test
# Количество повторных попыток запроса
REQUEST_RETRIES = 10
# Таймаут запроса, сек
REQUEST_TIMEOUT = 10
# Включить эмуляцию отправки запросов
ENABLE_REQUEST_EMULATION = True
На основе дефолтного конфига произвести конфигурирование приложений.
Сборка и распространение
Сборка пакета производится при помощи Job-а в Jenkins M3.build_dist.
Пакет выкладывается в глобальный PYPI и во внутренний Nexus
Документация
С документацией можно ознакомиться по ссылке http://docs.py.bars.group/edu-rdm-integration/
История изменений
Все изменения проекта должны быть отражены в этом файле.
Формат основан на Keep a Changelog
и проект следует Семантическому версионированию.
[x.y.z] - гггг-мм-дд
Здесь должно быть расширенное описание того, что было сделано, какие есть планы у команды по дальнейшему развитию.
Желательно будущие цели привязывать к конкретным задачам. Т.е. на каждую цель нужно поставить отдельную задачу и
отразить ее номер здесь.
Добавлено
Изменено
Исправлено
Удалено
3.4.8 - 2024-11-14
Повышение версии пакета до 3.4.8.
Исправлено
3.4.7 - 2024-11-14
Добавлена настройка отображения пункта меню "Региональная витрина данных"
Добавлено
- EDUKNDG-14586
Добавлена настройка отображения пункта меню "Региональная витрина данных"
3.4.6 - 2024-11-12
Исправлена ошибка формирования SQL-запроса с наименованиями таблиц (например, group),
совпадающими с зарезервированными словами языка SQL.
Исправлено
- EDUKNDG-14586
Наименование таблицы обернуто в двойные кавычки при формировании строки SQL-запроса.
3.4.5 - 2024-11-01
Добавлена обработка ошибок чтения файла при отправке данных в РВД (UploadDataAsyncTask)
Исправлено
- EDUSCHL-22734
Добавлена обработка ошибок чтения файла при отправке данных в РВД (UploadDataAsyncTask)
3.4.4 - 2024-10-23
Добавлена ассинхронная менедж-команда простановки размеров файлов выгрузки в модель ExportingDataSubStageAttachment
Исправлено
- EDUSCHL-22651
Добавлена ассинхронная менедж-команда простановки размеров файлов выгрузки в модель ExportingDataSubStageAttachment
3.4.3 - 2024-10-17
Исправлена миграция простановки размеров файлов выгрузки в модель ExportingDataSubStageAttachment
Исправлено
- EDUSCHL-22651
Исправлена миграция простановки размеров файлов выгрузки в модель ExportingDataSubStageAttachment
3.4.2 - 2024-10-15
Добавлены отдельные параметры по управлению временем запуска UploadDataAsyncTask
Добавлено
- EDUSCHL-22166
Добавлены отдельные параметры по управлению временем запуска UploadDataAsyncTask
3.4.1 - 2024-09-26
Добавлена документация по сбору/выгрузке сущностей для ЭДС, ЭК
Добавлено
- EDUKNDG-14518
Добавлена документация по сбору/выгрузке сущностей для ЭДС, ЭК
3.4.0 - 2024-09-25
В базовый класс тестирования функций сбора добавлена поддержка формата PhoneNumber для формирования
экземпляра модели AuditLog.
Повышена версия зависимости educommon >= 3.11.0.
Вынесены утилиты и базовый класс для логирования и сбора по модели в рамках сущности
Добавлено
- EDUSCHL-22378
Реализация поля моделей Django содержащего номер телефона
Изменено
- EDUKNDG-14516
PATCH Вынесены утилиты и базовый класс для логирования и сбора по модели в рамках сущности
3.3.8 - 2024-10-14
Задача UploadDataAsyncTask изменена с PeriodicAsyncTask на UploadDataAsyncTask
3.3.7 - 2024-09-06
Добавлены команда (UploadEntitiesData) и модель (UploadDataCommand) для логирования и запуска выгрузки данных в витрину
- EDUSCHL-22042
PATCH Добавлены команда (UploadEntitiesData) и модель (UploadDataCommand) для логирования и запуска выгрузки данных
в витрину
3.3.6 - 2024-09-02
Добавлена фильтрация по дате выгрузки при обновлении данных на экспорт в BaseExportLatestEntitiesData
Изменено
- EDUSCHL-22335
PATCH Добавлена фильтрация по дате выгрузки при обновлении данных на экспорт в BaseExportLatestEntitiesData
3.3.5 - 2024-08-26
Классы UniquePeriodicAsyncTask, PeriodicTaskLocker перенесены в educommon.
Удалено
- EDUSCHL-22267
MINOR Классы UniquePeriodicAsyncTask, PeriodicTaskLocker перенесены в educommon.
3.3.4 - 2024-08-16
Поднята максимальная версия Django (<3.3)
Изменено
3.3.3 - 2024-08-19
Изменен порядок запуска сбора и экспорта по сущностям в периодической задаче TransferLatestEntitiesDataPeriodicTask
с учетом многопоточности, скорректированы номера миграций
Изменено
- EDUSCHL-21965
PATCH Добавлен параметр export_off в модель TransferredEntity и изменен порядок запуска сбора и экспорта в
TransferLatestEntitiesDataPeriodicTask. Скорректированы номера миграций
3.3.2 - 2024-07-16
Добавлен параметр use_times_limit в BaseCollectLatestModelsData для использования переданных параметров logs_period_started_at и logs_period_ended_at
Изменено
- EDUSCHL-22070
PATCH Добавлен параметр use_times_limit в BaseCollectLatestModelsData для использования переданных параметров logs_period_started_at и logs_period_ended_at
3.3.1 - 2024-06-13
Удалён устаревший параметр logs_sub_period_days у базового класса команды сбора данных BaseCollectModelsDataByGeneratingLogsCommand.
Добавлен таймаут для сохранения информации об объемах файла в кеш.
Изменено
- EDUSCHL-20649
MINOR Удалён устаревший параметр logs_sub_period_days у базового класса команды сбора данных BaseCollectModelsDataByGeneratingLogsCommand
Исправлено
3.3.0 - 2024-06-06
Отправка файлов в РВД вынесена в отдельную задачу UploadDataAsyncTask, добавлен кеш файлов и очередь подэтапов отправки,
а также расчет объемов отправляемых файлов
Изменено
3.2.8 - 2024-08-02
Исправлена ошибка задвоения сборки и экспорта в периодической задаче TransferLatestEntitiesDataPeriodicTask.
Изменено
- EDUSCHL-21965
PATCH Исправлена ошибка задвоения сборки и экспорта в периодической задаче TransferLatestEntitiesDataPeriodicTask.
3.2.7 - 2024-07-31
Исправлен файл MANIFEST.in для включения в сборку js-шаблонов.
Изменено
- EDUSCHL-21965
PATCH Добавлено включение js-шаблонов в сборку в файл MANIFEST.in
3.2.6 - 2024-07-23
Добавлен параметр export_off (Отключение экспорта для сущности) в модель TransferredEntity
Изменен порядок запуска сбора и экспорта по сущностям в периодической задаче TransferLatestEntitiesDataPeriodicTask
Изменено
- EDUSCHL-21965
PATCH Добавлен параметр export_off в модель TransferredEntity и изменен порядок запуска сбора и экспорта в
TransferLatestEntitiesDataPeriodicTask.
3.2.5 - 2024-07-16
Добавлен параметр use_times_limit в BaseCollectLatestModelsData для использования переданных параметров logs_period_started_at и logs_period_ended_at
Изменено
- EDUSCHL-22070
PATCH Добавлен параметр use_times_limit в BaseCollectLatestModelsData для использования переданных параметров logs_period_started_at и logs_period_ended_at
3.2.5 - 2024-07-16
Добавлен параметр use_times_limit в BaseCollectLatestModelsData для использования переданных параметров logs_period_started_at и logs_period_ended_at
Изменено
- EDUSCHL-22070
PATCH Добавлен параметр use_times_limit в BaseCollectLatestModelsData для использования переданных параметров logs_period_started_at и logs_period_ended_at
3.2.4 - 2024-07-16
Внесены корректировки в запросы используемые в функциях get_collecting_managers_max_period_ended_dates и get_exporting_managers_max_period_ended_dates.
Изменено
- EDUSCHL-22217
PATCH Внесены корректировки в запросы используемые в функциях get_collecting_managers_max_period_ended_dates и get_exporting_managers_max_period_ended_dates.
В подзапросах отсутствовало условие фильтрации по статусу.
3.2.3 - 2024-06-06
Внесены корректировки в запросы используемые в функциях get_collecting_managers_max_period_ended_dates и get_exporting_managers_max_period_ended_dates.
Изменено
- EDUSCHL-21804
PATCH Внесены корректировки в запросы используемые в функциях get_collecting_managers_max_period_ended_dates и get_exporting_managers_max_period_ended_dates.
Дата и время окончания предыдущего сбора/экспорта могла быть не корректно определена.
3.2.2 - 2024-05-21
Изменения в переодической задаче TransferLatestEntitiesDataPeriodicTask,
Изменено определение даты последнего успешного этапа сбора у менеджеров Функций сбора и экспорта.
Изменения получения крайней даты из переданного поля по указанным моделям в BaseCollectLatestModelsData.
Удалён параметр RDM_TRANSFER_TASK_TIMEDELTA.
Изменено
- EDUSCHL-21804
PATCH Изменение определения даты последнего успешного этапа сбора у менеджеров Функций сбора и экспорта
Изменения получения крайней даты из переданного поля по указанным моделям в BaseCollectLatestModelsData.
Реализованы функции get_collecting_managers_max_period_ended_dates и get_exporting_managers_max_period_ended_dates
для получения даты времени успешного этапа сбора/экспорта.
3.2.1 - 2024-05-03
Понижен уровень логирования при возникновении ошибки отправки запросов в РВД с ERROR до WARNING
Изменено
- EDUSCHL-21903
PATCH Понижен уровень логирования при возникновении ошибки отправки запросов в РВД
3.2.0 - 2024-05-02
Периодические задачи RDMCheckUploadStatus, CheckSuspendedExportedStagePeriodicTask,
TransferLatestEntitiesDataPeriodicTask сделаны уникальными.
Изменено
- EDUSCHL-21891
MINOR Периодические задачи RDMCheckUploadStatus, CheckSuspendedExportedStagePeriodicTask,
TransferLatestEntitiesDataPeriodicTask сделаны уникальными. Во время действия блокировки не будет возможности
поставить новую подобную задачу.
3.1.1 - 2024-05-03
Понижен уровень логирования при возникновении ошибки отправки запросов в РВД с ERROR до WARNING
Изменено
- EDUSCHL-21903
PATCH Понижен уровень логирования при возникновении ошибки отправки запросов в РВД
3.1.0 - 2024-04-23
Добавлена поддержка setuptools 69.*.
Поднята минимальная версия пакета pip 23.2.1
Изменено
- EDUSCHL-21761
MINOR Добавлена поддержка setuptools 69.*. Поднять минимальную версию pip до 23.2.1.
3.0.4 - 2024-04-17
Возвращено проставление подэтапа выгрузки всем записям модели.
Изменено
- EDUSCHL-21761
PATCH Возвращено проставление подэтапа выгрузки всем записям модели.
3.0.3 - 2024-04-11
В классах примесей CollectCommandMixin и ExportCommandMixin указана очередь для celery используемая в рамках пакета.
Указано базовое описание и тип задачи для отражения в реестре "Асинхронные задачи".
Изменено
- EDUSCHL-21793
PATCH В классах примесей CollectCommandMixin и ExportCommandMixin указана очередь для celery
используемая в рамках пакета.
3.0.2 - 2024-04-11
Изменены типы полей ОГРН и ОКФС в сущности Organisations на строковые.
Исправлен тип передаваемого параметра institute_ids при выполнении поставленной задачи.
Исправлена ошибка проставления подэтапа выгрузки у неотправленных записей.
Изменено
- EDUCLLG-8336
PATCH Изменены типы полей ОГРН и ОКФС в сущности Organisations на строковые.
- EDUSCHL-21743
PATCH Исправлен тип передаваемого параметра institute_ids при выполнении поставленной задачи.
- EDUSCHL-21761
PATCH Исправлена ошибка проставления подэтапа.
3.0.1 - 2024-04-03
Убрано окружение кавычками пустых необязательных полей.
Изменено
- EDUCLLG-8325
PATCH Убрано окружение кавычками пустых необязательных полей.
3.0.0 - 2024-04-02
Расширены возможности кастомизации поведения метода BaseExportDataFunctionHelper.prepare_record
.
Добавлено
- EDUCLLG-8325
MAJOR Добавлена возможность отдельно указывать, как формировать строковое
представление полей в зависимости от их типа и обязательности. Требуется добавить
параметр
required_fields
в метод prepare_record
helper-а функции.
[2.2.1] - 2024-03-28
Исправление наследования Meta в моделях EduRdmCollectDataCommandProgress и EduRdmExportDataCommandProgress
Исправлено
- EDUSCHL-21569
MINOR Перенести оставшиеся общие асинхронные задачи из ЭШ в пакет edu_rdm_integration
[2.2.0] - 2024-03-20
Из ЭШ перенесена периодическая задача по сбору и выгрузке данных в РВД.
Также из ЭШ перенесены и переименованы модели:
- CollectDataCommandProgress перименована в EduRdmCollectDataCommandProgress
- ExportDataCommandProgress перименована в EduRdmExportDataCommandProgress
- Добавлены миксины CollectCommandMixin и ExportCommandMixin
Добавлено
- EDUSCHL-21569
MINOR Перенести оставшиеся общие асинхронные задачи из ЭШ в пакет edu_rdm_integration
[2.1.0] - 2024-03-18
Добавлена поддержка Django 3.1.
Добавлено
[2.0.3] - 2024-03-11
Добавлено сохранение чанка логов в list
перед его использованием в запускаемых классах в методе _get_runnable_objects
класса BaseCollectingDataRunner
.
Исправлено
- EDUSCHL-21581
PATCH Добавлено сохранение чанка логов в
list
перед его использованием в запускаемых классах в методе _get_runnable_objects
класса BaseCollectingDataRunner
.
[2.0.2] - 2024-03-07
Откатил изменения сделанные в версии 2.0.1. Данные доработки приводили к невозможности отправить данные.
Исправлено
[2.0.1] - 2024-03-01
Изменена работа метода _calculate_last_finished_entity_export класса BaseExportLatestEntitiesData
Исправлено
- EDUSCHL-21503
PATCH ЭШ. Все модели РВД. Некорректное определение начала периода экспорта командой при сборе
командой collect_latest_models_data
[2.0.0] - 2024-02-21
Параметр school_ids переименован в institute_ids.
Изменено
- EDUSCHL-20485
MAJOR Произвести переименование параметра school_ids на institute_ids
[1.0.2] - 2024-03-06
Добавлено разбиение на чанки запроса на обновление поля modified у невыгруженных записей,
при запуске команды export_latest_entities_data
.
Исправлено
- EDUSCHL-21572
PATCH Добавлено разбиение на чанки запроса на обновление в методе
_update_model_modified_field
класса BaseExportLatestEntitiesData
.
[1.0.1] - 2024-02-20
Исправлено ограничение сбора логов периодом RDM_TRANSFER_TASK_TIMEDELTA
в BaseCollectLatestModelsData
Исправлено
- EDUSCHL-21413
PATCH Исправлено ограничение сбора логов периодом
RDM_TRANSFER_TASK_TIMEDELTA
в BaseCollectLatestModelsData
[1.0.0] - 2024-01-31
Удален дублирующийся клаcc LogChange
из collect_data.non_calculated.base.caches
.
Удалено
- EDUSCHL-21308
MAJOR Удален дублирующийся клаcc
LogChange
из collect_data.non_calculated.base.caches
.
[0.10.2] - 2024-02-05
Рефакторинг принудительного запуска функций без добавления их в очередь на исполнение.
В класс кеша BaseCollectingExportedDataFunctionCacheStorage расчетных и не расчетных функций добавлен метод _ignore_logs.
Добавлена утилита build_related_model_graph для построения графа связей между моделями.
Добавлен миксин BaseIgnoreLogMixin, для исключения из обработки логов на основании описанных зависимостей.
Добавлено
- EDUSCHL-20550
MINOR В класс кеша BaseCollectingExportedDataFunctionCacheStorage добавлен метод _ignore_logs.
Добавлена утилита build_related_model_graph. Добавлен миксин BaseIgnoreLogMixin.
Изменено
- EDUSCHL-20274
MINOR Рефакторинг принудительного запуска функций без добавления их в очередь на исполнение.
[0.10.1] - 2024-02-02
Изменение в формировании LogChange.
Не формируется LogChange с пустым fields.
Изменено
[0.10.0] - 2024-01-19
Добавлена поддержка Django 3.0.
В класс кеша BaseCollectingExportedDataFunctionCacheStorage расчетных и не расчетных функций добавлен метод _ignore_logs.
Добавлена утилита build_related_model_graph для построения графа связей между моделями.
Добавлен миксин BaseIgnoreLogMixin, для исключения из обработки логов на основании описанных зависимостей.
Добавлено
- EDUSCHL-18051
MINOR Поднять версию Django до 3.0.14
- EDUSCHL-20550
MINOR В класс кеша BaseCollectingExportedDataFunctionCacheStorage добавлен метод _ignore_logs.
Добавлена утилита build_related_model_graph. Добавлен миксин BaseIgnoreLogMixin.
[0.9.2] - 2024-01-17
Добавлена явная регистрация периодических асинхронных задач Celery.
Поднятие версии зависимостей пакета celery.
Изменено
- EDUSCHL-14950
PATCH Добавлена явная регистрация периодических асинхронных задач Celery.
[0.9.1] - 2024-01-11
Добавлен реестр выбора сущностей для сбора и выгрузки данных.
Удалена настройка RDM_TRANSFER_TASK_ENTITIES, вместо перечисления сущностей в конфиге используется реестр и модель
TransferredEntity.
Добавлено
- EDUSCHL-21112
MINOR Добавлен реестр выбора сущностей для сбора и выгрузки данных.
Удалено
- EDUSCHL-21112
MINOR Удалена настройка RDM_TRANSFER_TASK_ENTITIES.
[0.9.0] - 2023-12-29
Из ЭШ перенесены периодические задачи по сбору статусов загрузки файлов в витрину, а также
по поиску зависших этапов/подэтапов экспорта.
Также из ЭШ перенесены менедж-команды:
- check_upload_status - проверка состояния отправленных данных в витрину,
- collect_lastest_models_data - сбор на основе логов за период с последней сборки до указанной даты,
- export_latest_entities_data - экспорт данных за период с последней сборки до указанной даты.
Типы получаемых из log_change.fields полей соответствуют типам полей из логируемых моделей.
Добавлено
- EDUSCHL-21013
MINOR Перенесена часть асинхронных РВД задач из ЭШ, а также часть менедж-команд
Изменено
- EDUSCHL-20793
MINOR Типы получаемых из log_change.fields полей должны соответствовать типам полей из логируемых моделей
[0.8.6] - 2023-12-18
В метод _clean_data класса BaseCollectingFunctionTestCase добавлена возможность обрабатывать поля относящиеся к
списковому типу (ArrayField).
Добавлено
- EDUSCHL-19606
PATCH В метод _clean_data класса BaseCollectingFunctionTestCase добавлена возможность обрабатывать поля относящиеся к
списковому типу (ArrayField).
[0.8.5] - 2023-12-14
Формирование логов вынесено на уровень команды, а не менеджера.
Добавлено формирование логов на этапе экспорта данных.
Добавлено
Изменено
- EDUSCHL-20073
MINOR Формирование логов вынесено на уровень команды, а не менеджера.
[0.8.4] - 2023-12-13
Создание базовых хэлперов BaseCollectingDataFunctionHelper, BaseCollectingDataRunnerHelper.
Создание нового метода get_filtered_operations в BaseCollectingDataFunctionHelper.
Добавлено
[0.8.3] - 2023-12-13
Исправление ошибок и несоответствий в журнале логов
Изменено
- EDUCLLG-8103
MINOR Исправление ошибок и несоответствий в журнале логов .
[0.8.2] - 2023-12-11
Поднятие версии m3-db-utils,изменение UploaderClientLogManager
Изменено
- EDUCLLG-7736
MINOR Поднята версии m3-db-utils до 0.3.10, редактирован
UploaderClientLogManager
.
[0.8.1] - 2023-12-08
Исправлена ошибка внутри EntityEnumRegisterMixin
Изменено
- EDUCLLG-8098
PATCH Добавлена проверка на наличие атрибута main_model_enum.
[0.8.0] - 2023-12-08
Вынесен функционал просмотра логов РВД из ЭШ.
Удалено перечисление UploadStatusEnum.
Удалена модель UploadStatus статусов загрузки в витрину. Вместо неё добавлена модель-перечисление DataMartRequestStatus.
Изменено
- EDUCLLG-7736
MINOR Вынесен функционал просмотра логов РВД из ЭШ.
Удалено
- EDUSCHL-20965
MINOR - Удалено перечисление UploadStatusEnum. Удалена модель UploadStatus статусов загрузки в витрину.
Добавлено
- EDUSCHL-20965
MINOR - Вместо удаленной модели UploadStatus добавлена модель-перечисление DataMartRequestStatus.
[0.7.3] - 2023-12-07
Исправлена аннотация в шаблоне managers.py-tpl для функции экспорта.
Исправлено
- EDUSCHL-19604
PATCH Исправлена аннотация в шаблоне managers.py-tpl для функции экспорта.
[0.7.2] - 2023-12-05
В метод _clean_data класса BaseCollectingFunctionTestCase добавлена возможность обрабатывать поля относящиеся к
временному типу.
Добавление обработки plugins_info при генерации списка данных формирования команд.
Добавлено
- EDUSCHL-19507
PATCH В метод _clean_data класса BaseCollectingFunctionTestCase добавлена возможность обрабатывать поля относящиеся к
временному типу.
- EDUSCHL-19507
PATCH Добавление обработки plugins_info при генерации списка данных формирования команд.
[0.7.1] - 2023-12-02
Доработано получение множества моделей на основе данных plugins_info при работе метода _get_loggable_models.
Изменено
- EDUSCHL-19576
PATCH Доработано получение множества моделей на основе данных plugins_info при работе метода _get_loggable_models.
[0.7.0] - 2023-12-02
Добавлено формирование логов для последующего скачивания.
Доработаны шаблоны реализации Функций сбора и выгрузки данных.
Написана документация для реализации функционала новой Сущности.
Добавлено получение моделей на основе данных plugins_info при работе метода _get_loggable_models.
Добавлено
Изменено
-
EDUSCHL-20954
PATCH Произведена доработка шаблонов Функций сбора и выгрузки данных.
-
EDUSCHL-19576
PATCH - Добавлено получение моделей на основе данных plugins_info при работе метода _get_loggable_models.
[0.6.10] - 2023-11-30
При добавлении префикса RDM_EXPORT_ENTITY_ID_PREFIX в классе BaseExportDataFunctionHelper
учтены поля из get_ignore_prefix_key_fields.
Изменено
- EDUSCHL-20961
PATCH - При добавлении префикса RDM_EXPORT_ENTITY_ID_PREFIX в классе BaseExportDataFunctionHelper учтены поля
- из get_ignore_prefix_key_fields.
[0.6.9] - 2023-11-30
Доработка обработки ответа при отправке файлов в РВД.
Добавлены менедж-команды для загрузки данных и запроса статуса загрузки в РВД с использованием uploader-client.
Добавлена инструкция по реализации тестов РВД.
В BaseCollectingFunctionTestCase добавлен метод создания подэтапов сбора данных.
Добавлено
-
EDUSCHL-20946
PATCH - Доработка обработки ответа при отправке файлов в РВД.
-
EDUSCHL-20946
MINOR - Добавлены менедж-команды для загрузки данных и запроса статуса загрузки в РВД с использованием uploader-client.
-
EDUSCHL-20951
MINOR - Инструкция по реализации тестов РВД
-
EDUSCHL-20951
MINOR - Добавлен метод создания подэтапов сбора данных
[0.6.8] - 2023-11-24
Скорректировано описание сущности РВД TELECOM.
Рефакторинг обновления полей modified у невыгруженных записей при работе экспорта сущностей.
Временное решение обеспечения совместимости регистрации моделей и сущностей старого и нового подхода.
Добавлена возможность отправки запросов в РВД через Proxy API uploader_client.
Изменено формирование логов для последующей обработки.
Добавлено
- EDUSCHL-20854
MINOR - Добавлена возможность отправки запросов через Proxy API.
Изменено
- EDUSCHL-20808
MINOR - При сборе модели командой collect_latest_models_data сжигается память
Исправлено
-
EDUSCHL-20884
PATCH - Изменено название поля rank на rank_contact в сущности РВД TelecomEntity.
-
EDUSCHL-20711
PATCH - Доработан метод BaseExportLatestEntitiesData._update_model_modified_field.
-
EDUSCHL-20858
PATCH - Временное решение обеспечения совместимости регистрации моделей и сущностей старого и нового подхода.
[0.6.7] - 2023-11-01
Добавлен миксин EntityEnumRegisterMixin для регистрации сущностей в RegionalDataMartEntityEnum.
Миксин ModelEnumRegisterMixin для регистрации моделей в RegionalDataMartModelEnum.
Добавлены методы для запуска регистрации моделей и сущностей.
Добавлено
- EDUCLLG-7632
PATCH - Добавлен функционал регистрации моделей и сущностей в моделях-перечислениях.
[0.6.6] - 2023-10-16
Добавлен базовый класс для тестирования Функций сбора, добавлена явная зависимость Django.
Добавлено
[0.6.5] - 2023-10-11
Получение метода генерации логов вынесено в отдельный метод для избавления от необходимости хранить все методы в одном классе.
Исправлено
-
EDUCLLG-7634
PATCH - Получение метода генерации логов вынесено в отдельный метод для избавления от необходимости хранить все методы в одном классе;
-
EDUSCHL-20571
PATCH - При сборе актуальных данных моделей отслеживаются уже запущенные сборы и новый сбор по модели не запускается.
-
EDUSCHL-20571
PATCH - Указание назначения полей модели-перечисления сущностей RegionalDataMartEntityEnum;
-
EDUSCHL-20571
PATCH - Добавление возможности получения значений модели-перечисления RegionalDataMartEntityEnum моделей РВД для указанных сущностей.
[0.6.4] - 2023-10-09
Исправлена ошибка сборки, из-за которой файлы шаблонов *.py-tpl не попадали в пакет.
Добавлено
- EDUCLLG-7634
PATCH - Добавлено включение шаблонов *.py-tpl в пакет при сборке.
[0.6.3] - 2023-10-05
Доработка модели AbstractCollectDataCommandProgress и класса BaseFirstCollectModelsDataCommandsGenerator.
Добавлено
- EDUSCHL-20350
PATCH - Добавлено формирование id генерации для команд в классе BaseFirstCollectModelsDataCommandsGenerator.
- Добавлены поля created, generation_id и institute_ids в модель AbstractCollectDataCommandProgress.
[0.6.2] - 2023-10-04
Изменено
[0.6.1] - 2023-10-02
Дополнение поведения BaseExportDataFunctionHelper.
Изменено
- EDUSCHL-20535
PATCH - В логике BaseExportDataFunctionHelper добавлена очистка строковых полей от управляющих символов.
[0.6.0] - 2023-09-29
Добавлена функция set_failed_status_suspended_exporting_data_stages для определения и перевода зависших этапов/подэтапов экспорта в статус (FAILED).
Добавлена функция set_failed_status_suspended_collecting_data_stages для определения и перевода зависших этапов/подэтапов сбора в статус (FAILED).
Добавлено
[0.5.9] - 2023-09-25
Повышена версия wheel
Изменено
[0.5.8] - 2023-09-13
Исправлена ошибка добавления в описание асинхронной задачи списка выгруженных сущностей
BaseExportLatestEntitiesData._set_description_to_async_task.
Исправлено
- EDUSCHL-20334
PATCH - Баг с обновлением поля description в BaseExportLatestEntitiesData._set_description_to_async_task.
[0.5.7] - 2023-09-12
Баг фикс и дополнение поведения BaseExportLatestEntitiesData.
Изменено
- EDUSCHL-20435
PATCH - BaseExportLatestEntitiesData теперь поддерживает выгрузку ни разу невыгруженных сущностей.
Исправлено
- EDUSCHL-20435
PATCH - Баг с условием в фильтре в BaseExportLatestEntitiesData._update_model_modified_field.
[0.5.6] - 2023-09-06
Доработаны классы BaseExportLatestEntitiesData и BaseExportEntitiesData.
Исправлено
- EDUSCHL-20435
PATCH - Исправлено нахождение левой границы в классе ExportLatestEntitiesData;
- Добавлена проверка на наличие запущенных или готовых к выгрузке сущностей;
- Добавлен параметр update_modified, который обновляет поле modified у собранных моделей,
чтобы выгрузить невыгруженные записи.
[0.5.5] - 2023-09-04
Добавление pip в зависимости сборки пакета.
Добавлено
[0.5.4] - 2023-09-04
split_by_days_count переименовал в split_by_quantity.
Изменено
- EDUSCHL-20302
PATCH split_by_days_count переименовал в split_by_quantity.
[0.5.3] - 2023-09-03
Изменены параметры формирования подпериодов в generate_first_collect_models_data_script.
Изменено
- EDUSCHL-20302
PATCH Изменены параметры формирования подпериодов в generate_first_collect_models_data_script.
[0.5.2] - 2023-08-28
Замена базового класса функций.
Изменено
- EDUSCHL-20344
PATCH Замена базового класса функций на WebEduLazySavingPredefinedQueueFunction.
[0.5.1] - 2023-08-22
Для BaseFirstCollectModelsDataCommandsGenerator добавлено условие - если не заполнен creating_trigger_models,
то словарь с данными для команды не передается.
Исправлено
-
EDUSCHL-20227
PATCH Если у сущности не заполнен creating_trigger_models, то в генераторе BaseFirstCollectModelsDataCommandsGenerator
не формируется словарь с параметрами для команды.
-
EDUSCHL-20229
PATCH Если у сущности не заполнен creating_trigger_models, то в генераторе BaseFirstCollectModelsDataCommandsGenerator
не формируется словарь с параметрами для команды.
[0.5.0] - 2023-08-19
Дополнительная функциональность WebEduEntityValueCache была перенесена в EntityCache в function_tools.
Удалено
[0.4.7] - 2023-08-17
Изменено формирование очередности сбора/экспорта моделей/сущностей. Вместо отдельных перечислений используется существующее поле order_number
модели-перечисления TitledModelEnum
. В случае, когда order_number
не указан, т.е. будет использоваться значение по умолчанию DEFAULT_ORDER_NUMBER
, модель/сущность будет исключена из сбора/экспорта.
Изменено
- EDUSCHL-19164
MINOR Изменено формирование очередности сбора/экспорта моделей/сущностей.
[0.4.6] - 2023-08-16
Удален лишний вызов метода _prepare_logs
Исправлено
- EDUSCHL-19991
PATCH удален лишний вызов метода
_prepare_logs
в методе __init__
класса BaseCollectingCalculatedExportedDataFunctionCacheStorage
[0.4.5] - 2023-08-09
Объединение обрабатываемых логов относящихся к одному объекту
Добавлено
- EDUSCHL-19991
PATCH Новый миксин
ReformatLogsMixin
, новое поле is_merge_logs и новый метод _merge_logs у класса BaseCollectingExportedDataFunctionCacheStorage
[0.4.4] - 2023-08-12
Исправлен баг с timedelta
Исправлено
[0.4.3] - 2023-08-12
Исправлен баг с timedelta
Исправлено
[0.4.2] - 2023-08-11
Исправление ошибки учета миллисекунд, при генерации скриптов сбора и выгрузки данных. В текущий момент chunk_size все
равно работает некорректно. Это связано с тем, что при обнулении миллисекунд за одной записью выборки может скрываться
большое количество, например, которые были созданы или обновлены скриптами. Проблему необходимо решить в будущем, но
текущего решения хватает для эксплуатации.
В выборках моделей и логов не должна входить правая граница периода выборки.
Исправлено
-
EDUSCHL-20235
PATCH Исправлена ошибка учета миллисекунд в выборках при генерации скриптов с командами для сбора и выгрузки данных.
-
EDUSCHL-20235
PATCH В выборках моделей и логов не должна входить правая граница периода выборки.
[0.4.1] - 2023-08-09
Доработки для реализации принудительного выполнения функций экспорта данных сущностей.
Добавлено
- EDUSCHL-20235
PATCH Доработки для реализации принудительного выполнения функций экспорта данных сущностей.
[0.4.0] - 2023-08-09
Реализованы общие классы для команд сбора/экспорта.
Добавлено
Изменено
- EDUSCHL-20200
MINOR Реализованы общие классы для команд сбора/экспорта.
[0.3.3] - 2023-08-08
Добавлено принудительное выполнение функций в ранере для экономии памяти.
Исправлено
- EDUSCHL-20235
PATCH Добавлено принудительное выполнение функций в ранере для экономии памяти.
[0.3.2] - 2023-08-08
Откат к спискам необработанных логов. Исправлена ошибка бесконечного создания чанков логов.
Исправлено
[0.3.1] - 2023-08-08
Организована передача необработанных логов в виде генератора.
Изменено
- EDUSCHL-20235
PATCH Организована передача необработанных логов в виде генератора.
[0.3.0] - 2023-08-06
Добавление функциональности для отложенного заполнения кешей. Заполнение производится перед началом работы запускаемого
объекта.
Добавлено
[0.2.2] - 2023-08-06
Для API РВД добавлена поддержка параметра типа операции для загрузки данных.
Добавлено
- EDUSCHL-19920
PATCH Для API РВД добавлена поддержка параметра типа операции для загрузки данных.
[0.2.1] - 2023-08-05
Восстановление сборки пакета после ухода с poetry.
Исправлено
- EDUSCHL-19919
PATCH Восстановление сборки пакета после миграции с poetry.
[0.2.0] - 2023-08-04
Перенос стратегий формирования Функций используемых в генерации исходников.
Добавлено
[0.1.4] - 2023-08-03
Возвращение ранее удаленных зависимостей миграции
Изменено
-
EDUSCHL-20209
PATCH Возвращение зависимостей миграции.
-
EDUSCHL-20209
PATCH Доработки по формированию документации.
-
EDUSCHL-20200
Закреплены версии зависимостей, добавлена ссылка на uploader-client
[0.1.3] - 2023-07-24
Для раскатки миграций на ЭШ, пришлось закомментировать зависимости в initial-миграции.
Изменено
- EDUSCHL-19919
PATCH Вынести общую часть для работы с РВД из ЭШ для использования в ЭК.
[0.1.2] - 2023-07-23
Внесены изменения в кодовую базу после переноса механизма логирования из ЭШ в educommon.
Изменено
- EDUSCHL-19919
PATCH Вынести общую часть для работы с РВД из ЭШ для использования в ЭК.
[0.1.0] - 2023-07-18
Внесены изменения в кодовую базу после переноса механизма логирования из ЭШ в educommon.
Добавлено
- EDUSCHL-19919
MINOR Перенос базовых компонентов интеграции с РВД из ЭШ.