aio-client 1.14.0
AIO-клиент
Keywords: django СМЭВ3

# AIO-client

Пакет ``aio-client`` предназначен для простой и быстрой интеграции
пользовательского Django-проекта с подсистемой взаимодействия со СМЭВ 3(AIO).# История изменений

Все изменения проекта должны быть отражены в этом файле.

Формат основан на [Keep a Changelog](http://keepachangelog.com/)
и проект следует [Семантическому версионированию](http://semver.org/).

## [x.y.z] - гггг-мм-дд

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

### Добавлено

- [ПРОЕКТ-ZZZZ](https://jira.bars.group/browse/ПРОЕКТ-ZZZZ)
  PATCH Название задачи или изменения.

- [ПРОЕКТ-YYYY](https://jira.bars.group/browse/ПРОЕКТ-YYYY)
  MINOR Название задачи или изменения.

- [ПРОЕКТ-XXXX](https://jira.bars.group/browse/ПРОЕКТ-XXXX)
  MAJOR Название задачи или изменения.

### Изменено

### Исправлено

### Удалено


## [1.14.0] - 2025-12-12

В файл ``aio_client.yaml`` добавлена необязательная настройка admin_list_per_page в ключе "common", отвечающая за пагинацию на страницах.
  ``` conf
    common:
      ...
      admin_list_per_page: 25  
  ```

По умолчанию - стандартная из django 100 записей.
Данная настройка применена к страницам моделей aio_client.

| Название настройки в aio_client.yaml | Описание                                             | Значение по умолчанию |
|--------------------------------------|------------------------------------------------------|-----------------------|
| admin_list_per_page                  | Число записей на одной странице в админке aio_client | 100                   |

### Добавлено

- [EDUKNDG-15850](https://jira.bars.group/browse/EDUKNDG-15850)
  MINOR В файл aio_client.yaml добавлена необязательная настройка admin_list_per_page в ключе "common", отвечающая за пагинацию на страницах.


## [1.13.0] - 2025-12-04

Добавлена функция `get_request` для получения заявки к РИС по `message_id`

### Изменено

- [EDUSCHL-24563](https://jira.bars.group/browse/EDUSCHL-24563)
  MINOR Добавлена функция `get_request`


## [1.12.0] - 2025-10-31

Для периодических задач добавлена дефолтная очередь ```periodic_task_aio```.

После поднятия версии необходимо создать очередь на продукте, если её еще нет!

Добавлена возможность отключения получения ответов от aio-сервера, когда РИС - потребитель (для тестирования/отладки).

Добавлены новые настройки:

| Название настройки в settings      | Описание                                                                 | Значение по умолчанию |
|------------------------------------|--------------------------------------------------------------------------|-----------------------|
| DO_NOT_GET_RESPONSE_FROM_SERVER    | Отключение получения ответов от aio-сервера (для тестирования/отладки)   | False                 |

В `settings.py`:

- Добавить значение по умолчанию:
  ```
  PROJECT_DEFAULT_CONFIG.update({
      ...
      ('aio_client', 'DO_NOT_GET_RESPONSE_FROM_SERVER'): False,
      ...
  })
  ```

- Получить значение настройки из конфигурационного файла:
  ```
  # Параметр настройки запросов в aio-сервер при получении ответов из очереди СМЭВ
  DO_NOT_GET_RESPONSE_FROM_SERVER = conf.get_bool('aio_client', 'DO_NOT_GET_RESPONSE_FROM_SERVER')
  ```

В дефолтный конфиг проекта необходимо добавить:

  ```
  [aio_client]
  # Отключение получения ответов от aio-сервера, когда РИС - потребитель (для тестирования/отладки)
  DO_NOT_GET_RESPONSE_FROM_SERVER = False
  ```

### Добавлено

- [EDUCLLG-8787](https://jira.bars.group/browse/EDUCLLG-8787) 
  MINOR Добавлен параметр `DO_NOT_GET_RESPONSE_FROM_SERVER` для отключения получения ответов от aio-сервера в методе `consumer_get_requests` (используется для тестирования и отладки).
- [EDUKNDG-15828](https://jira.bars.group/browse/EDUKNDG-15828)
  MINOR Для периодических задач добавлена дефолтная очередь ```periodic_task_aio```.


## [1.11.0] - 2025-07-29

Добавлена поддержка django 4.1

### Добавлено

- [EDUKNDG-15602](https://jira.bars.group/browse/EDUKNDG-15602)
  PATCH Поддержка Django 4.1.13


## [1.10.0] - 2025-07-10

У моделей добавлено ограничение уникальности для поля message_id.
У моделей убрано ограничение уникальности для поля origin_message_id.

### Изменено

- [EDUSMEVTLS-642](https://jira.bars.group/browse/EDUSMEVTLS-642)
  MINOR Добавлено ограничение уникальности для поля message_id
  MINOR Убрано ограничение уникальности для поля origin_message_id


## [1.9.2] - 2025-04-01

Убрана фиксация ошибок в Sentry засыпающих его сообщениями. Логика проверки будет пересматриваться в рамках задачи 
EDUSMEVTLS-603.

### Удалено

- [EDUSMEVTLS-603](https://jira.bars.group/browse/EDUSMEVTLS-603)
  PATCH Убрана фиксация ошибок создания GetConsumerResponse и GetConsumerReceipt в Sentry.


1.9.1 (2025-02-21)

- (EDUDEVOPS-17) Был добавлен пакет `sentry-sdk`, который заменяет старый механизм логирования.
  Реализована обработка переключения логирования с `raven` на `sentry-sdk`.

1.9.0 (2025-02-05)

- (EDUKNDG-15190) Изменён тип поля attachments с django.contrib.postgres.fields.JSONField (поддержка до Django 4.0.)
на django.db.models.JSONField (поддержка с Django 3.1.0).

1.8.9 (2024-10-23)

- (EDUCLLG-8288) Добавлены функции get_requests_by_message_types и get_responses_by_message_types как аналоги
соответственно get_requests и get_responses для получения запросов/ответов с
ограниченным некой коллекцией message_type;
- (EDUCLLG-8288) Добавлено поле request_id в list_select_related админки для
запросов/ответов СМЭВ в целях ускорения работы.

1.8.8 (2024-07-29)

- (EDUSCHL-21704) удаление поиска в панели администратора по значению не существующему в моделях GetConsumerReceipt,
  и GetProviderReceipt.

1.8.7 (2024-05-20)

- (EDUSCHL-20216) Повышена максимальная версия пакета зависимости requests

1.8.6 (2024-04-09)

- (EDUSCHL-21702) Удален вывод в sentry ошибки сохранения GetProviderReceipt
  и GetProviderRequest

1.8.5 (2023-12-28)

- (EDUCLLG-8117) Изменен пример aio-сервера в примере конфига и 
  добавлена отправка сигнала через robust_sender, если включен режим отладки
- Формат CHANGELOG.md приведен к принятому Markdown-стандарту (убраны ++++++++++++++++++)

1.8.4 (2023-10-05)

- (EDUSMEVTLS-524) Доработка поиска в панели администратора по значению
  в поле "Бизнес-данные запроса" (в бд поле body)

- (EDUCLLG-7980) Добавление README.md, смена формата CHANGELOG на md

1.8.3 (2023-08-25)

- (EDUSMEVTLS-512) Доработка уникальности сообщений по origin_message_id.

1.8.2 (2022-09-12)

- (EDUSMEVTLS-405) Реализована проверка уникальности origin_message_id.
- (EDUSCHL-17922) Изменена сортировка в aio_client.provider.api.get_requests,
   чтобы сначала обрабатывались более ранние заявки.

1.8.1 (2022-04-22)

- Добавлено логирование ошибок при отправке запроса в функции post_request
- Исправлена ошибка: при получении запросов и ответов могли стать "отправленными" записи не возвращаемые из функций

1.8.0 (2021-07-01)

- Удаление полученных сообщений одним запросом DELETE в АИО (для версии aio_server >=1.4.0)
- Добавление кодировки в файлы миграций
- Изменение MessageID для потребителя только если сообщение создано раньше, чем день назад
- Добавление кодировки

1.7.1 (2021-06-17)

- Таймаут добавлен только для GET-запросов;
- Ошибка Таймаута устанавливает статус запроса Ошибка.

1.7.0 (2021-05-21)

- Изменение названия поля "Статус Пакета"
- Исправление множественного названия моделей
- Изменение порядка отобржения полей в админке
- Правки в установке "Статуса Сообщения" при отправке запроса
- Профилирование запроса получения Запросов к переотправке
- Добавление настройки таймаута(в секундах) при отправке запроса в АИО(по умолчанию 1сек)

1.6.1 (2021-04-25)

- Изменения для работы с ЭДС 2.12+

1.6.0 (2020-12-28)

- Изменения для работы с ЭШ под Python 3.7

1.5.2 (2020-12-23)

- Поднята максимальная версия пакета зависимости requests до 2.25

1.5.1 (2020-12-03)

- Исправлена обратная совместимость с версиями 1.4.x
- Исправлены названия асинхронных периодических задач
- Добавлена функция выдачи ответов потребителю к обработке
- Добавлена функция пометки ответа потребителю ошибкой обработки
- Добавлено логирование http-ответа от aio_server при возникновении ошибки

1.5.0 (2020-11-25)

- Добавление хранения и приёма информации по полям Код Ошибки и
Описание ошибки в Потребитель. Ответ СМЭВ
- Исправление чтение конфига для периодических асинхронных задач
- Добавлены индексы для полей origin_message_id базовых моделей

1.4.4 (2020-11-12)

- Добавлены индексы по полям message_id и state базовых моделей
- Исправлена конфигурация yadic
- Исправлено предупреждение pyyaml о небезопасном загрузчике
- Стилевые исправления fab src

1.4.3 (2020-03-02)

- Добавлена возможность массовой смены статуса сообщений 
и фильтрация по статусу для модели "Потребитель. Ответ СМЭВ"
- Добавлена возможность настройки expiry_date - времени, спустя которое 
неотправленному сообщению присваивается статус ошибки
- Исправлена долгая загрузка объектов в админке из-за поля "Лог запроса"
- Добавлено поле Статус Ответа в реестрах "Заявки в СМЭВ", "Ответ СМЭВ по заявкам",
"Ответ СМЭВ"

1.4.2 (2019-08-20)

- Исправлена генерация message_id

1.4.1 (2019-08-16)

- Исправлены описания моделей для Поставщиков и Потребителей

1.4.0 (2019-04-12)

- Удалена зависимость от API pip.

1.3.0 (2019-03-06)

- Исправлена отправка сообщений в Sentry.
- Исправлено сохранение запросов к Поставщику.
- Для периодических задач добавлены несколько типов расписаний.
- Добавлена отправка сигнала о завершении получения данных из системы AIO.

1.1.1 (2018-10-30)

- Исправлена ошибка django.core.exceptions.FieldError для Django<1.10

1.1.0 (2018-10-18)

- Добавлена повторная отправка POST запросов при транспортных ошибках, и отправка
в sentry других ошибок. Если в течение суток с момента создания POST запроса
 отправка не выполнена, то запросу присваивается статус error
- При включенной настройке DEBUG_MODE, в исх. сообщения заполняется
is_test_message=True
- При повторной отправке POST запроса от потребителя присваивается новый message_id
- В админке для POST Запросов добавлен метод "Повторно отправить сообщения в статусе ошибка"
для сообщений, для котрых
- Доработана конфигурация зависимых объектов для клиента из пользовательских
  приложений.
- Доработана совместимость с python3.
- Добавлены тесты на совместимость с различными версиями python и Django.

1.0.0 (2018-10-10)

- Выделена версия 1.0.0