Files
mostovik-backend/docs/september-checkup-shared-api.md
Aleksandr Meshchryakov 49cbfd265c
All checks were successful
Mostovik Backend CI/CD / Tests and lint (push) Successful in 9m37s
Mostovik Backend CI/CD / Build linux/amd64 release images (push) Successful in 4m18s
Mostovik Backend CI/CD / Deploy and verify internal main (push) Has been skipped
Mostovik Backend CI/CD / Deploy customer main (push) Has been skipped
Mostovik Backend CI/CD / Deploy dev (push) Successful in 1m48s
feat(registries): add SME and budget imports and fix source API workflows
2026-09-13 23:13:47 +02:00

5.1 KiB
Raw Blame History

Общие исправления 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 до завершения предыдущего.