feat(parsers): добавлен парсер zakupki.gov.ru с SOAP API интеграцией

Реализована полная интеграция с ЕИС Закупки через SOAP API
(FTP доступ закрыт с 01.01.2025).

Добавлено:
- ZakupkiClient с поддержкой SOAP методов getDocsByOrgRegionRequest
  и getDocsByReestrNumberRequest
- Модель ProcurementRecord (18 полей, 3 индекса)
- ProcurementService и ParserLoadLogService для бизнес-логики
- Celery задачи parse_procurements и sync_procurements
- Админка с цветовой индикацией статусов и фильтрами
- 71 тест (unit + E2E с RUN_E2E_TESTS=1)

Требования: токен SOAP API через Госуслуги

🤖 Generated with [Qoder][https://qoder.com]
This commit is contained in:
2026-01-27 16:01:28 +01:00
parent 199d871923
commit c6483d8427
16 changed files with 3405 additions and 0 deletions

View File

@@ -6,6 +6,50 @@
---
## [0.3.0] - 2026-01-27
### Добавлено
#### Парсер zakupki.gov.ru (`apps.parsers.clients.zakupki`)
- **ZakupkiClient** — клиент для получения данных о закупках:
- Интеграция через SOAP API (FTP закрыт с 01.01.2025)
- Методы: `getDocsByOrgRegionRequest`, `getDocsByReestrNumberRequest`
- Парсинг XML/ZIP архивов с поддержкой множественных кодировок (UTF-8, Windows-1251)
- Поддержка прокси-серверов
- Маппинг 80+ регионов РФ
- **Модель ProcurementRecord** (`models.py`):
- 18 полей: номер закупки, ИНН/КПП/ОГРН заказчика, НМЦ, тип закона (44-ФЗ/223-ФЗ), статус
- Поля региона, года, месяца для фильтрации
- `load_batch` для отслеживания пакетной загрузки
- 3 индекса для оптимизации запросов
- **Сервисный слой** (`services.py`):
- `ProcurementService` — сохранение, поиск, отслеживание загрузок
- `ParserLoadLogService` — логирование результатов парсинга
- Bulk-операции с chunking и обработкой дубликатов
- **Celery задачи** (`tasks.py`):
- `parse_procurements` — загрузка по региону/году/месяцу с BackgroundJob tracking
- `sync_procurements` — синхронизация помесячно с автопродолжением
- **Админка** (`admin.py`):
- Цветовая индикация статусов
- Поиск по номеру закупки, ИНН, ОГРН, названию заказчика
- Фильтры: тип закона, статус, регион, batch, дата создания
- Read-only режим
#### Тестирование
- 71 тест (66 unit + 5 E2E)
- `ProcurementRecordFactory` с Faker("ru_RU")
- E2E тесты с реальными HTTP-запросами (активация: `RUN_E2E_TESTS=1`)
- Покрытие: клиент, сервисы, задачи
### Требования для работы
- Токен SOAP API (получается через Госуслуги на `https://zakupki.gov.ru/pmd/auth/welcome`)
---
## [0.2.0] - 2026-01-21
### Добавлено