5.1 KiB
Общие исправления API: сентябрь 2026
GET /api/v2/organizations/ и GET /api/v2/organization-source-records/
используют одинаковый поиск по каноническим наименованиям (name, full_name,
short_name), ИНН, КПП, ОГРН, ОГРИП и ОКПО. Слова запроса соединяются через AND,
поля для каждого слова — через OR. Совпадение только в payload, URL, названии
записи или технических идентификаторах не включает организацию в результат.
Поиск и активные фильтры применяются до пагинации.
GET /api/v1/system/logs/ и GET /api/v1/system/logs/export/ принимают
date_from/date_to в формате YYYY-MM-DD. Границы включительны по updated_at
в часовом поясе приложения (TIME_ZONE, сейчас UTC). Один date_from означает
один день; один date_to ограничивает только конец периода. Некорректные даты,
перевёрнутый период, неверный batch_id или неизвестный ordering возвращают 400.
Порядок по умолчанию — -updated_at, id. Поддерживаются updated_at, source,
status, records_count и обратные направления; сохранены существующие поля
id, batch_id, created_at, source_label, status_label,
organizations_count и сортировка по нескольким полям через запятую.
Вторичный порядок по id стабилизирует строки с одинаковым значением.
source сортируется по публичному slug карточки. Фильтры и порядок list/export
совпадают, но export не ограничивается страницей. Права администратора сохранены.
История экспортируется как update-history.csv: UTF-8 с BOM, разделитель ;,
CRLF, русские заголовки и подписи источников/статусов. Даты отображаются в часовом
поясе приложения. Первые столбцы: «№», «Дата актуализации», «Источник», «Статус»,
«Количество записей»; далее идут сведения о пакете, организациях и результатах импорта.
В XLSX санкций заголовки rn, ogrn, inn, okpo заменены русскими подписями,
включая каждый файл при разбиении выгрузки. Порядок колонок, строковые
идентификаторы, JSON/CSV санкций и ticket/download API сохранены.
После обновления backend необходимо пересобрать подготовленные выгрузки командой
uv run python src/manage.py build_source_record_exports в настроенном окружении
сервиса: скачивание отдаёт опубликованные файлы, а не формирует книгу при запросе.
При отмене загрузки вакансий между сохранением записей и контрольной точкой метаданные завершённой задачи остаются неизменными; следующий запуск повторяет последнюю организацию от сохранённой позиции в том же batch, включая позицию 0, если пакет уже содержит записи. Идемпотентное сохранение предотвращает дубликаты.
Прогресс фоновых задач обновляется условным атомарным запросом: позднее меньшее значение не уменьшает процент, успешное завершение устанавливает 100%, ошибка сохраняет достигнутый процент и причину. Успех, ошибка и отмена окончательны; запоздавший callback или запрос отмены не меняет завершённую задачу.
При ручном запуске карточки весь набор refresh_task_ids записывается до отправки
первой задачи в очередь. Среднее включает завершённые части запуска. Если старый
разрешённый запуск ещё работает, он остаётся в active_tasks; новая завершённая
группа его не скрывает. Новый запуск нового реестра блокируется кодом 409 до
завершения предыдущего.