добавил документов в папку

This commit is contained in:
dkrivov
2026-03-31 09:58:34 +03:00
parent 3b986b6310
commit f93081d872
12 changed files with 856 additions and 0 deletions

Binary file not shown.

View File

@@ -0,0 +1,856 @@
# Техническая справка: Парсер ЕИС Закупок (zakupki.gov.ru)
**Версия:** 2.0
**Дата:** 26 марта 2026
**Статус:** Production-ready
---
## Содержание
1. [Что именно забирается с zakupki.gov.ru](#1-что-именно-забирается-с-zakupki-govru)
2. [Регламент получения данных](#2-регламент-получения-данных)
3. [Структура собираемых данных](#3-структура-собираемых-данных)
4. [Описание базы данных понятным языком](#4-описание-базы-данных-понятным-языком)
5. [Поддерживаемые законы](#5-поддерживаемые-законы)
6. [Отличия от 94-ФЗ](#6-отличия-от-94-фз)
7. [Реестр недобросовестных поставщиков РНП](#7-реестр-недобросовестных-поставщиков-рнп)
8. [Технические детали](#8-технические-детали)
---
## 1. Что именно забирается с zakupki.gov.ru
### 1.1. Источник данных
**Официальное название:** Единая информационная система в сфере закупок (ЕИС)
**Домен:** zakupki.gov.ru
**SOAP API:** https://int44.zakupki.gov.ru/eis-integration/services/getDocsIP
### 1.2. Типы забираемых данных
С системы забираются **извещения о закупках** — это официальные публикации о планируемых государственных и коммерческих закупках.
**Конкретные данные:**
| Тип данных | Что это | Пример |
|------------|---------|--------|
| **Извещения об электронных аукционах** | Публикации о начале приёма заявок на участие в электронных торгах | «Поставка офисной бумаги для нужд министерства» |
| **Извещения об открытых конкурсах** | Публикации о конкурсах с оценкой не только цены, но и квалификации участников | «Выполнение работ по разработке проектной документации» |
| **Извещения о запросах котировок** | Публикации о закупках с упрощённой процедурой для небольших сумм | «Закупка канцелярских товаров» |
| **Извещения о запросах предложений** | Публикации о закупках, где важны не только цена, но и другие критерии | «Оказание услуг по техническому обслуживанию» |
| **Планы закупок** | Документы с информацией о планируемых закупках на год | «План закупок министерства образования на 2026 год» |
| **Информация о контрактах** | Сведения о заключённых контрактах по итогам закупок | «Контракт № 44-123 от 15.03.2026» |
### 1.3. Объём данных
**По 44-ФЗ (государственные закупки):**
- Извещения о проведении электронных процедур
- Извещения о проведении конкурсов
- Извещения о запросах котировок
- Планы-графики закупок
- Сведения о контрактах
**По 223-ФЗ (закупки госкомпаний):**
- Извещения о закупках товаров, работ, услуг
- Планы закупок госкомпаний
- Сведения о договорах
**Дополнительно:**
- Реестр недобросовестных поставщиков (РНП)
- Информация о заказчике (наименование, ИНН, КПП, ОГРН)
- Начальная цена контракта (НМЦ)
- Сроки подачи заявок
- Статус процедуры
---
## 2. Регламент получения данных
### 2.1. Способ получения
**Основной метод (с 1 января 2025):** SOAP API через интеграционный шлюз
| Параметр | Значение |
|----------|----------|
| **Протокол** | SOAP 1.2 over HTTPS |
| **URL API** | https://int44.zakupki.gov.ru/eis-integration/services/getDocsIP |
| **Формат запроса** | XML в SOAP-конверте |
| **Формат ответа** | XML с ссылкой на ZIP-архив |
| **Формат данных** | XML файлы в ZIP-архивах |
| **Авторизация** | Токен через Госуслуги (ЕСИА) |
**Устаревший метод (до 1 января 2025):** FTP доступ к открытым данным
- **Статус:** Закрыт с 01.01.2025
- **Причина:** Переход на защищённый SOAP API
### 2.2. Процесс получения данных
```
┌─────────────────────────────────────────────────────────────┐
│ Шаг 1. Авторизация │
│ Получение токена через Госуслуги │
│ URL: https://zakupki.gov.ru/pmd/auth/welcome │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ Шаг 2. Формирование SOAP-запроса │
│ Параметры: │
│ - Код региона (например, "77" = Москва) │
│ - Тип закона (44-ФЗ или 223-ФЗ) │
│ - Тип документа (аукцион, конкурс, котировки) │
│ - Период (год, месяц, день) │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ Шаг 3. Отправка запроса │
│ POST запрос на SOAP API │
│ Заголовок: individualPerson_token = <ваш токен> │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ Шаг 4. Получение ссылки на архив │
│ Ответ содержит URL для скачивания ZIP-архива │
│ Пример: https://zakupki.gov.ru/opendata/download/... │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ Шаг 5. Скачивание архива │
│ Загрузка ZIP-архива с XML-файлами │
│ Требуется тот же токен в заголовке │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ Шаг 6. Распаковка и парсинг │
│ Распаковка ZIP-архива │
│ Чтение и обработка XML-файлов │
│ Извлечение данных о закупках │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ Шаг 7. Сохранение в базу данных │
│ Запись данных в таблицу parsers_procurement │
│ Связывание с организациями по ИНН/ОГРН │
│ Фиксация в журнале загрузок │
└─────────────────────────────────────────────────────────────┘
```
### 2.3. Периодичность обновления
**Автоматическая синхронизация:**
- **Расписание:** Ежедневно в 02:00 (через Celery Beat)
- **Режим:** Инкрементальная загрузка
- **Логика:** Загрузка данных месяц за месяцем до текущей даты
- **Остановка:** После 2 месяцев без новых данных
**Ручная загрузка:**
- По запросу пользователя через API
- С указанием конкретного региона и периода
- С возможностью точечного запроса по номеру закупки
### 2.4. Требования к доступу
| Требование | Описание |
|------------|----------|
| **Учётная запись** | Действующая учётная запись Госуслуги (ЕСИА) |
| **Токен** | individualPerson_token (получается после авторизации) |
| **HTTPS** | Обязательное защищённое соединение |
| **IP-адрес** | Желательно статический (для production) |
| **Прокси** | Опционально (для обхода ограничений) |
---
## 3. Структура собираемых данных
### 3.1. Основная структура (понятным языком)
**Представьте себе большую таблицу, где:**
- **Каждая строка** — это одна закупка
- **Каждый столбец** — это характеристика закупки (номер, название, заказчик, цена и т.д.)
**Основные столбцы этой таблицы:**
| Столбец | Что означает | Пример значения |
|---------|--------------|-----------------|
| **Реестровый номер** | Уникальный номер закупки в системе | 0888200000224000038 |
| **Наименование** | Что именно закупают | «Поставка офисной бумаги» |
| **Заказчик** | Кто покупает | ПАО СБЕРБАНК |
| **ИНН заказчика** | Налоговый номер заказчика | 7707083893 |
| **Цена контракта** | Максимальная сумма | 1 500 000 руб. |
| **Дата публикации** | Когда объявили закупку | 15.03.2025 |
| **Дата окончания** | До когда можно подать заявку | 25.03.2025 |
| **Статус** | Текущее состояние | «Приём заявок» |
| **Закон** | По какому закону проводится | 44-ФЗ или 223-ФЗ |
### 3.2. Техническая структура данных
**DTO (Data Transfer Object) — промежуточный формат:**
```
Procurement (Закупка)
├── purchase_number: str # Реестровый номер
├── purchase_name: str # Наименование закупки
├── customer_inn: str # ИНН заказчика
├── customer_kpp: str # КПП заказчика
├── customer_ogrn: str # ОГРН заказчика
├── customer_name: str # Наименование заказчика
├── max_price: str # Начальная цена (строка)
├── currency_code: str # Код валюты (RUB)
├── placement_method: str # Способ определения поставщика
├── publish_date: str # Дата публикации
├── end_date: str # Дата окончания приёма заявок
├── status: str # Статус процедуры
├── law_type: str # Тип закона (44-ФЗ / 223-ФЗ)
├── purchase_object_info: str # Детальное описание объекта
└── href: str # Ссылка на страницу в ЕИС
```
### 3.3. Формат хранения
**Исходный формат:** XML файлы в ZIP-архивах
**Пример XML структуры:**
```xml
<notification>
<purchaseNumber>0888200000224000038</purchaseNumber>
<purchaseObjectInfo>Поставка офисной бумаги</purchaseObjectInfo>
<customer>
<organizationInfo>
<INN>7707083893</INN>
<KPP>770701001</KPP>
<OGRN>1027700034460</OGRN>
<name>ПАО СБЕРБАНК</name>
</organizationInfo>
</customer>
<lot>
<lotData>
<maxPrice>1500000.00</maxPrice>
<currencyCode>RUB</currencyCode>
</lotData>
</lot>
<publishDate>2025-03-15</publishDate>
<endDate>2025-03-25T18:00:00</endDate>
<state>Подача заявок</state>
</notification>
```
**Целевой формат:** Реляционная база данных PostgreSQL
---
## 4. Описание базы данных понятным языком
### 4.1. Общая концепция
**Представьте библиотеку с несколькими книжными полками:**
Каждая «полка» (таблица) хранит определённый тип информации:
| Полка (таблица) | Что хранит | Аналогия |
|-----------------|------------|----------|
| **parsers_procurement** | Все закупки | Каталог карточек о закупках |
| **parsers_load_log** | История загрузок | Журнал учёта поступлений |
| **registers_organization** | Организации | Картотека компаний |
| **core_backgroundjob** | Фоновые задачи | Список текущих дел |
### 4.2. Таблица «Закупки» (parsers_procurement)
**Назначение:** Хранение информации о всех загруженных закупках
**Структура (основные поля):**
| Поле | Простое объяснение | Пример |
|------|-------------------|--------|
| **id** | Внутренний номер записи | 12345 |
| **реестровый номер** | Официальный номер закупки | 0888200000224000038 |
| **наименование** | Что закупают | «Поставка офисной бумаги» |
| **ИНН заказчика** | Налоговый номер того, кто покупает | 7707083893 |
| **КПП заказчика** | Код причины постановки на учёт | 770701001 |
| **ОГРН заказчика** | Основной регистрационный номер | 1027700034460 |
| **название заказчика** | Полное название организации | ПАО СБЕРБАНК |
| **цена контракта (строка)** | Сумма как текст (символы, пробелы) | «1 500 000 руб.» |
| **цена контракта (число)** | Сумма как число (для расчётов) | 1500000.00 |
| **валюта** | В чём измеряется цена | RUB |
| **способ определения** | Как выбирают поставщика | Электронный аукцион |
| **дата публикации** | Когда объявили | 15.03.2025 |
| **дата окончания** | До когда подавать заявку | 25.03.2025 |
| **статус** | Что сейчас происходит | Приём заявок |
| **тип закона** | 44-ФЗ или 223-ФЗ | 44-ФЗ |
| **объект закупки** | Подробное описание | «Бумага офисная формата А4, 80 г/м²» |
| **ссылка** | Адрес страницы в интернете | https://zakupki.gov.ru/... |
| **код региона** | Где происходит закупка | 77 (Москва) |
| **год данных** | За какой год данные | 2025 |
| **месяц данных** | За какой месяц данные | 3 (март) |
| **организация из реестра** | Ссылка на карточку организации | 456 |
| **дата создания** | Когда запись добавили | 26.03.2026 10:30 |
| **дата обновления** | Когда последний раз меняли | 26.03.2026 12:45 |
**Правила хранения:**
1. **Уникальность:** Реестровый номер не может повторяться
2. **Связи:** Запись может быть связана с организацией из справочника
3. **Индексы:** Для быстрого поиска по ИНН, номеру, дате
### 4.3. Таблица «Журнал загрузок» (parsers_load_log)
**Назначение:** Учёт всех операций по загрузке данных
**Простое объяснение:** Это как дневник, куда записывается:
- Когда была загрузка
- Откуда загружали
- Сколько записей добавили
- Успешно или с ошибкой
| Поле | Объяснение | Пример |
|------|------------|--------|
| **batch_id** | Номер партии загрузки | 123 |
| **источник** | Откуда грузили | procurements (закупки) |
| **количество** | Сколько записей добавили | 150 |
| **статус** | Как прошло | success (успешно) |
| **ошибка** | Что пошло не так (если было) | (пусто, если успешно) |
| **дата создания** | Когда загружали | 26.03.2026 02:00 |
**Источники данных:**
- `procurements` — Госзакупки (ЕИС)
- `industrial` — Сертификаты промышленного производства
- `manufactures` — Реестр производителей
- `inspections` — Реестр проверок
- `fns_reports` — Бухгалтерская отчётность ФНС
### 4.4. Таблица «Организации» (registers_organization)
**Назначение:** Справочник организаций (заказчиков, поставщиков)
**Связь с закупками:** Одна организация может быть указана во многих закупках
| Поле | Объяснение | Пример |
|------|------------|--------|
| **ИНН** | Налоговый номер | 7707083893 |
| **ОГРН** | Регистрационный номер | 1027700034460 |
| **Название** | Полное наименование | ПАО СБЕРБАНК |
| **Тип** | Заказчик / Поставщик | Заказчик |
### 4.5. Таблица «Фоновые задачи» (core_backgroundjob)
**Назначение:** Отслеживание длительных операций
**Простое объяснение:** Как список дел с отметками о выполнении
| Поле | Объяснение | Пример |
|------|------------|--------|
| **ID задачи** | Уникальный номер | abc-123-def |
| **Название** | Что делаем | parse_procurements |
| **Статус** | В процессе / Готово / Ошибка | in_progress |
| **Прогресс** | Сколько сделано (%) | 50 |
| **Сообщение** | Комментарий | «Загрузка за март 2025...» |
| **Результат** | Итог работы | {"saved": 150} |
### 4.6. Взаимосвязь таблиц
```
┌─────────────────────────┐
│ parsers_procurement │
│ (Закупки) │
│ │
│ customer_inn ────────┐ │
│ customer_ogrn ────┐ │ │
│ registry_org_id ─┐│ │ │
└────────────────────┼──┼──┼─┘
│ │ │
│ │ │
┌────────────┘ │ │
│ │ │
▼ │ │
┌───────────────────┐ │ │
│ registers_ │ │ │
│ organization │◄──┘ │
│ (Организации) │◄────┘
│ │
│ inn │
│ ogrn │
│ name │
└───────────────────┘
┌─────────────────────────┐
│ parsers_load_log │
│ (Журнал загрузок) │
│ │
│ batch_id ─────────────►│ связывается с
│ source │ закупками по номеру
└─────────────────────────┘
┌─────────────────────────┐
│ core_backgroundjob │
│ (Фоновые задачи) │
│ │
│ task_id │ отслеживает выполнение
│ status │ загрузок
│ progress │
└─────────────────────────┘
```
---
## 5. Поддерживаемые законы
### 5.1. 44-ФЗ — Федеральный закон «О контрактной системе»
**Полное название:** Федеральный закон от 05.04.2013 № 44-ФЗ
**Официальное название:** «О контрактной системе в сфере закупок товаров, работ, услуг для обеспечения государственных и муниципальных нужд»
**Кто закупает:**
- Государственные органы (министерства, ведомства)
- Бюджетные учреждения (школы, больницы, университеты)
- Муниципальные образования (городские администрации)
- Государственные корпорации и компании
**Что регулирует:**
- Планирование закупок (планы-графики)
- Размещение извещений о закупках
- Проведение конкурентных процедур (аукционы, конкурсы)
- Заключение контрактов
- Исполнение контрактов
- Мониторинг и аудит закупок
- Отчётность заказчиков
**Основные процедуры:**
- Электронный аукцион (наиболее распространённый)
- Открытый конкурс
- Запрос котировок (для небольших сумм)
- Запрос предложений
- Закрытые процедуры (для гостайны)
**Финансирование:**
- Федеральный бюджет
- Региональные бюджеты
- Местные бюджеты
- Внебюджетные средства государственных организаций
### 5.2. 223-ФЗ — Федеральный закон о закупках госкомпаний
**Полное название:** Федеральный закон от 18.07.2011 № 223-ФЗ
**Официальное название:** «О закупках товаров, работ, услуг отдельными видами юридических лиц»
**Кто закупает:**
- Государственные корпорации (Росатом, Ростех)
- Компании с государственным участием (Газпром, Роснефть)
- Субъекты естественных монополий (РЖД, Транснефть)
- Бюджетные учреждения за счёт грантов и пожертвований
- Организации, осуществляющие регулируемые виды деятельности
**Что регулирует:**
- Планирование закупок (планы закупок)
- Размещение извещений
- Выбор поставщика
- Заключение договоров
- Отчётность о закупках
**Особенности:**
- Больше свободы в выборе процедуры
- Меньше жёстких требований по сравнению с 44-ФЗ
- Заказчики сами утверждают положение о закупке
### 5.3. Сравнение законов
| Критерий | 44-ФЗ | 223-ФЗ |
|----------|-------|--------|
| **Заказчики** | Госорганы, бюджетники | Госкомпании, естественные монополии |
| **Финансирование** | Бюджет | Собственные средства |
| **Жёсткость** | Жёсткое регулирование | Более гибкий |
| **Процедуры** | Строго определённые | Заказчик выбирает сам |
| **Планирование** | Планы-графики | Планы закупок |
| **Отчётность** | В ЕИС | В ЕИС (сокращённая) |
| **Контроль** | ФАС, Казначейство | Внутренний контроль |
---
## 6. Отличия от 94-ФЗ
### 6.1. Историческая справка
**94-ФЗ** — Федеральный закон от 21.07.2005 № 94-ФЗ
**Действовал:** с 1 января 2006 по 31 декабря 2013
**Заменён:** 44-ФЗ с 1 января 2014
### 6.2. Ключевые отличия
| Аспект | 94-ФЗ (20062013) | 44-ФЗ (с 2014) |
|--------|-------------------|----------------|
| **Область регулирования** | Только размещение заказов (закупки) | Полный цикл контрактной системы |
| **Планирование** | Не было обязательного | Планы-графики обязательны |
| **Нормирование** | Отсутствовало | Нормативы затрат обязательны |
| **Мониторинг** | Не был регламентирован | Система мониторинга |
| **Аудит** | Выборочный | Обязательный аудит |
| **Реестр контрактов** | Частичный | Полный реестр контрактов |
| **Электронные процедуры** | Начинали внедряться | Полностью электронные |
| **Акты приёмки** | Не отслеживались | Электронное актирование |
| **Реестр недобросовестных поставщиков** | Был | Расширен и усовершенствован |
### 6.3. Эволюция законодательства
```
94-ФЗ (20062013)
│ Только закупки
│ Минимум планирования
│ Бумажные процедуры
44-ФЗ (2014настоящее время)
│ Полный цикл:
│ 1. Планирование (планы-графики)
│ 2. Размещение извещений
│ 3. Проведение процедур
│ 4. Заключение контракта
│ 5. Исполнение контракта
│ 6. Актирование приёмки
│ 7. Мониторинг исполнения
│ Полностью электронные процедуры
│ Интеграция с другими системами
Развитие (постоянные изменения)
│ Усиление контроля
│ Цифровизация
│ Интеграция с ГИС
```
### 6.4. Почему 44-ФЗ называют «контрактной системой»
**44-ФЗ регулирует весь жизненный цикл:**
1. **Планирование**
- Заказчик составляет план закупок на 3 года
- Формирует план-график на год
- Обосновывает необходимость закупки
2. **Размещение извещения**
- Публикация в ЕИС
- Указание всех требований
- Свободный доступ для всех участников
3. **Проведение процедуры**
- Подача заявок в электронном виде
- Рассмотрение первых частей
- Проведение аукциона/оценка конкурсов
- Рассмотрение вторых частей
4. **Заключение контракта**
- Подписание в электронной форме
- Размещение в реестре контрактов
- Обеспечение исполнения
5. **Исполнение контракта**
- Поставка товаров/выполнение работ
- Приёмка комиссией
- Оплата
6. **Актирование**
- Электронные акты приёмки
- Интеграция с системой «Электронный бюджет»
7. **Мониторинг**
- Контроль сроков исполнения
- Отслеживание платежей
- Выявление нарушений
**94-ФЗ регулировал только этапы 24** (размещение, проведение, заключение).
---
## 7. Реестр недобросовестных поставщиков (РНП)
### 7.1. Что такое РНП
**Официальное название:** Реестр недобросовестных поставщиков (подрядчиков, исполнителей)
**Назначение:** Список организаций и ИП, которые уклонились от заключения контракта или расторгли контракт в одностороннем порядке
**URL:** https://zakupki.gov.ru/epz/dishonestsupplier/search/results.html
### 7.2. Основания для включения в РНП
| Основание | Описание |
|-----------|----------|
| **Уклонение от заключения контракта** | Победитель не подписал контракт в срок |
| **Непредоставление обеспечения** | Не предоставил обеспечение исполнения контракта |
| **Расторжение по инициативе поставщика** | Поставщик сам расторг контракт (через суд) |
| **Существенное нарушение контракта** | Нарушение условий, выявленное заказчиком |
### 7.3. Последствия включения в РНП
**Срок действия:** 2 года с даты включения
**Ограничения:**
- Нельзя участвовать в государственных закупках по 44-ФЗ
- Нельзя участвовать в закупках по 223-ФЗ (для многих заказчиков)
- Ограничения при участии в концессионных соглашениях
### 7.4. Поддерживаемые законы в РНП
РНП включает информацию о недобросовестных поставщиках по:
| Закон | Описание |
|-------|----------|
| **44-ФЗ** | Государственные и муниципальные заказчики |
| **223-ФЗ** | Госкомпании и субъекты естественных монополий |
| **ПП РФ-615** | Постановление Правительства о капитальном ремонте |
### 7.5. Структура данных РНП
**Поля для загрузки:**
| Поле | Описание | Пример |
|------|----------|--------|
| **Номер записи** | Уникальный номер в реестре | 0123456789 |
| **Дата включения** | Когда внесли в реестр | 15.03.2025 |
| **Наименование организации** | Название компании | ООО «Ромашка» |
| **ИНН** | Налоговый номер | 7701234567 |
| **ОГРН** | Регистрационный номер | 1027700123456 |
| **Основание** | Почему включили | Уклонение от заключения контракта |
| **Заказчик** | Кто инициировал включение | Министерство образования |
| **Номер закупки** | По какой закупке уклонились | 0888200000224000038 |
| **Срок действия** | До когда действует запись | 15.03.2027 |
| **Закон** | 44-ФЗ / 223-ФЗ / ПП-615 | 44-ФЗ |
### 7.6. Интеграция с основной системой
**Связь с закупками:**
- По ИНН организации
- По номеру закупки
- По дате включения
**Использование:**
- Проверка контрагентов перед участием в закупке
- Исключение недобросовестных поставщиков из списка потенциальных
- Анализ рисков при выборе поставщика
---
## 8. Технические детали
### 8.1. Архитектура системы
```
┌─────────────────────────────────────────────────────────────┐
│ Пользовательский интерфейс │
│ (REST API / Django Admin) │
└─────────────────────────────────────────────────────────────┘
│ HTTP запрос
┌─────────────────────────────────────────────────────────────┐
│ Celery (фоновые задачи) │
│ parse_procurements │ sync_procurements │
│ └──────┬────────────┴────────────┬────────────────────────┤
│ ▼ ▼ │
│ BackgroundJob (прогресс) │ │
│ ParserLoadLog (аудит) │ │
└─────────────────────────────────────────────────────────────┘
│ Вызов сервиса
┌─────────────────────────────────────────────────────────────┐
│ Сервисный слой │
│ ProcurementService │
│ - сохранение закупок (пакетная загрузка) │
│ - поиск последней даты загрузки │
│ - поиск по ИНН, по номеру закупки │
│ │
│ RegistryOrganizationResolver │
│ - поиск организаций по ИНН/ОГРН │
└─────────────────────────────────────────────────────────────┘
│ Запрос данных
┌─────────────────────────────────────────────────────────────┐
│ Клиентский слой │
│ ZakupkiClient │
│ - SOAP API запросы │
│ - скачивание ZIP-архивов │
│ - парсинг XML │
│ - нормализация данных │
│ │
│ BaseHTTPClient │
│ - HTTP запросы │
│ - поддержка прокси │
└─────────────────────────────────────────────────────────────┘
│ SOAP API / HTTPS
┌─────────────────────────────────────────────────────────────┐
│ zakupki.gov.ru │
│ SOAP API: int44.zakupki.gov.ru │
Веб-сайт: zakupki.gov.ru │
│ Токен: через Госуслуги (ЕСИА) │
└─────────────────────────────────────────────────────────────┘
```
### 8.2. Файловая структура проекта
```
src/apps/parsers/
├── clients/
│ ├── base.py # Базовый HTTP-клиент
│ └── zakupki/
│ ├── __init__.py # ZakupkiClient (основной клиент)
│ └── schemas.py # DTO схемы данных
├── models.py # Django модели (таблицы БД)
├── services.py # Бизнес-логика
├── tasks.py # Celery задачи
├── views.py # REST API endpoints
├── serializers.py # Сериализаторы для API
├── admin.py # Django Admin интерфейс
└── migrations/
├── 0006_add_procurement_model.py
├── 0010_link_registry_organizations.py
└── 0011_add_normalized_date_and_amount_fields.py
```
### 8.3. API endpoints
**Базовый URL:** `/api/v1/zakupki/`
| Метод | Endpoint | Описание |
|-------|----------|----------|
| GET | `/api/v1/zakupki/` | Список закупок (с фильтрами) |
| GET | `/api/v1/zakupki/{id}/` | Детали закупки |
**Параметры фильтрации:**
- `customer_inn` — фильтр по ИНН заказчика
- `customer_ogrn` — фильтр по ОГРН заказчика
- `purchase_number` — фильтр по номеру закупки
- `law_type` — тип закона (44-FZ / 223-FZ)
- `status` — статус закупки
- `region_code` — код региона
- `data_year` — год данных
- `data_month` — месяц данных
- `search` — поиск по названию/номеру/заказчику
### 8.4. Конфигурация
**Переменные окружения:**
```bash
# Токен ЕИС (получается через Госуслуги)
ZAKUPKI_TOKEN=<ваш токен>
# Прокси (опционально)
PARSER_PROXIES=http://user:pass@proxy1:8080,http://user:pass@proxy2:8080
# PostgreSQL
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_DB=mostovik
POSTGRES_USER=postgres
POSTGRES_PASSWORD=<пароль>
# Redis (очередь задач)
CELERY_BROKER_URL=redis://localhost:6379/0
```
### 8.5. Периодические задачи
**Celery Beat расписание:**
| Задача | Расписание | Параметры |
|--------|------------|-----------|
| `sync_procurements` | Ежедневно в 02:00 | region_code="77", law_type="44" |
### 8.6. Мониторинг и логирование
**Журнал загрузок (ParserLoadLog):**
- Фиксация каждой загрузки
- Количество сохранённых записей
- Статус выполнения (успех/ошибка)
- Сообщение об ошибке (если была)
**Фоновые задачи (BackgroundJob):**
- Отслеживание прогресса (0100%)
- Статус задачи (в процессе/завершено/ошибка)
- Результат выполнения
- Время начала и завершения
---
## Приложения
### Приложение А. Коды регионов РФ
| Код | Регион | Код | Регион |
|-----|--------|-----|--------|
| 01 | Республика Адыгея | 77 | Москва |
| 02 | Республика Башкортостан | 78 | Санкт-Петербург |
| 03 | Республика Бурятия | 79 | Еврейская АО |
| ... | ... | 99 | Все регионы |
### Приложение Б. Типы документов 44-ФЗ
| Тип документа | Код в системе | Описание |
|---------------|---------------|----------|
| Электронный аукцион | epNotificationEF2020 | Извещение о проведении электронного аукциона |
| Открытый конкурс | epNotificationOK2020 | Извещение о проведении открытого конкурса |
| Запрос котировок | epNotificationZK2020 | Извещение о проведении запроса котировок |
| Запрос предложений | epNotificationEP2020 | Извещение о проведении запроса предложений |
### Приложение В. Статусы закупок
| Статус | Описание |
|--------|----------|
| Планирование | Формирование плана-графика |
| Публикация извещения | Размещение извещения в ЕИС |
| Подача заявок | Приём заявок от участников |
| Рассмотрение заявок | Оценка первых частей |
| Проведение аукциона | Торги на электронной площадке |
| Заключение контракта | Подписание контракта |
| Исполнение | Поставка товаров, выполнение работ |
| Завершено | Контракт исполнен полностью |
| Отменено | Закупка отменена заказчиком |
### Приложение Г. Примеры использования
**Пример 1: Получение всех закупок заказчика по ИНН**
```bash
curl -X GET "http://localhost:8000/api/v1/zakupki/?customer_inn=7707083893" -H "Authorization: Bearer <token>"
```
**Пример 2: Поиск закупок по региону и закону**
```bash
curl -X GET "http://localhost:8000/api/v1/zakupki/?region_code=77&law_type=44-FZ" -H "Authorization: Bearer <token>"
```
**Пример 3: SQL-запрос для получения статистики**
```sql
-- Сумма закупок по регионам за 2025 год
SELECT
region_code,
COUNT(*) as количество,
SUM(max_price_amount) as общая_сумма
FROM parsers_procurement
WHERE data_year = 2025
GROUP BY region_code
ORDER BY общая_сумма DESC;
```
---
**Контакты для вопросов:**
- **Документация:** `docs/Техническая справка ЕИС Закупки - 2.md`
- **Код:** `src/apps/parsers/`
- **Тесты:** `tests/apps/parsers/`
**Дата актуализации:** 26 марта 2026

Binary file not shown.