feat(registries): add SME and budget imports and fix source API workflows
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
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
This commit is contained in:
52
docs/september-checkup-shared-api.md
Normal file
52
docs/september-checkup-shared-api.md
Normal file
@@ -0,0 +1,52 @@
|
||||
# Общие исправления 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 до
|
||||
завершения предыдущего.
|
||||
Reference in New Issue
Block a user