Skip to main content

Интеграция с Региональной витриной данных

Project description

Проект "Интеграция с Региональной витриной данных (РВД)"

Для интеграции с Региональной витриной данных был выделен отдельный пакет для использования его компонентов в различных продуктах.

На текущий момент интеграция реализуется в рамках проектов Электронная школа (ЭШ) и Электронный колледж (ЭК).

Описание концепции

Со стороны Минцифры предоставляется спецификация (ЕФТТ) с требованиями по формату и механизму выгрузки данных.

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

Принцип работы

Весь процесс разделен на сбор и выгрузку данных. Выделяются следующие понятия:

Модель продукта : 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_TRANSFER_TASK_TIMEDELTA = conf.get_int('rdm_transfer_task', 'TIMEDELTA')
    
    # Настройка запуска периодической задачи статуса загрузки данных в витрину:
    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_TRANSFER_TASK_TIMEDELTA Дельта между предыдущим и следующим запуском периодической задачи в секундах 3600
    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.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.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.

Добавлено

  • EDUSCHL-18052 MINOR Поднять версию Django до 3.1.14

[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. Данные доработки приводили к невозможности отправить данные.

Исправлено

  • EDUSCHL-21503 PATCH Откатил изменения сделанные в версии 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.

Изменено

  • EDUSCHL-21251 PATCH Изменение в формировании LogChange.

[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 Логи при экспорте данных

Изменено

  • EDUSCHL-20073 MINOR Формирование логов вынесено на уровень команды, а не менеджера.

[0.8.4] - 2023-12-13

Создание базовых хэлперов BaseCollectingDataFunctionHelper, BaseCollectingDataRunnerHelper. Создание нового метода get_filtered_operations в BaseCollectingDataFunctionHelper.

Добавлено

  • EDUSCHL-21029 MINOR Создание базовых хэлперов.

[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-20072 MINOR - Реестр сбора и выгрузки. Логи

  • EDUSCHL-20954 PATCH Добавлена документация для реализации функционала новой Сущности.

Изменено

  • 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.

Добавлено

  • EDUSCHL-20684 PATCH - Базовый класс для тестирования Функций сбора;
  • EDUSCHL-20684 PATCH - Добавлена зависимость 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

Изменено

  • EDUCLLG-7942 PATCH Доработка сборки документации.

[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).

Добавлено

  • EDUSCHL-20487 MINOR Добавлена функция set_failed_status_suspended_exporting_data_stages.

  • EDUSCHL-20487 MINOR Добавлена функция set_failed_status_suspended_collecting_data_stages.

[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 в зависимости сборки пакета.

Добавлено

  • EDUSCHL-19919 PATCH Добавление 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 Добавлены общие модели, методы и классы.

Изменено

  • EDUSCHL-20200 MINOR Реализованы общие классы для команд сбора/экспорта.

[0.3.3] - 2023-08-08

Добавлено принудительное выполнение функций в ранере для экономии памяти.

Исправлено

  • EDUSCHL-20235 PATCH Добавлено принудительное выполнение функций в ранере для экономии памяти.

[0.3.2] - 2023-08-08

Откат к спискам необработанных логов. Исправлена ошибка бесконечного создания чанков логов.

Исправлено

  • EDUSCHL-20235 PATCH Откат к спискам необработанных логов.

[0.3.1] - 2023-08-08

Организована передача необработанных логов в виде генератора.

Изменено

  • EDUSCHL-20235 PATCH Организована передача необработанных логов в виде генератора.

[0.3.0] - 2023-08-06

Добавление функциональности для отложенного заполнения кешей. Заполнение производится перед началом работы запускаемого объекта.

Добавлено

  • EDUSCHL-20235 PATCH Добавлено отложенное заполнение кешей хелперов функций.

  • EDUSCHL-20235 MINOR Добавлено проставление подэтапа выгрузки данных у записей моделей.

[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

Перенос стратегий формирования Функций используемых в генерации исходников.

Добавлено

  • EDUSCHL-19919 MINOR Перенесены стратегии создания Функций из ЭШ.

[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 Перенос базовых компонентов интеграции с РВД из ЭШ.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

edu-rdm-integration-3.2.1.tar.gz (122.6 kB view hashes)

Uploaded Source

Built Distribution

edu_rdm_integration-3.2.1-py3-none-any.whl (163.0 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page