diff --git a/docs/Описание_интеграционного_сервиса_03_02_2026.docx b/docs/Описание_интеграционного_сервиса_03_02_2026.docx new file mode 100755 index 0000000..fc8075e Binary files /dev/null and b/docs/Описание_интеграционного_сервиса_03_02_2026.docx differ diff --git a/docs/ТЕХНИЧЕСКОЕ_ОПИСАНИЕ.docx b/docs/ТЕХНИЧЕСКОЕ_ОПИСАНИЕ.docx new file mode 100644 index 0000000..052c6e6 Binary files /dev/null and b/docs/ТЕХНИЧЕСКОЕ_ОПИСАНИЕ.docx differ diff --git a/docs/Техническая справка ЕИС Закупки - 2.md b/docs/Техническая справка ЕИС Закупки - 2.md new file mode 100644 index 0000000..b2d8680 --- /dev/null +++ b/docs/Техническая справка ЕИС Закупки - 2.md @@ -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 + + 0888200000224000038 + Поставка офисной бумаги + + + 7707083893 + 770701001 + 1027700034460 + ПАО СБЕРБАНК + + + + + 1500000.00 + RUB + + + 2025-03-15 + 2025-03-25T18:00:00 + Подача заявок + +``` + +**Целевой формат:** Реляционная база данных 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-ФЗ (2006–2013) | 44-ФЗ (с 2014) | +|--------|-------------------|----------------| +| **Область регулирования** | Только размещение заказов (закупки) | Полный цикл контрактной системы | +| **Планирование** | Не было обязательного | Планы-графики обязательны | +| **Нормирование** | Отсутствовало | Нормативы затрат обязательны | +| **Мониторинг** | Не был регламентирован | Система мониторинга | +| **Аудит** | Выборочный | Обязательный аудит | +| **Реестр контрактов** | Частичный | Полный реестр контрактов | +| **Электронные процедуры** | Начинали внедряться | Полностью электронные | +| **Акты приёмки** | Не отслеживались | Электронное актирование | +| **Реестр недобросовестных поставщиков** | Был | Расширен и усовершенствован | + +### 6.3. Эволюция законодательства + +``` +94-ФЗ (2006–2013) + │ + │ Только закупки + │ Минимум планирования + │ Бумажные процедуры + │ + ▼ +44-ФЗ (2014–настоящее время) + │ + │ Полный цикл: + │ 1. Планирование (планы-графики) + │ 2. Размещение извещений + │ 3. Проведение процедур + │ 4. Заключение контракта + │ 5. Исполнение контракта + │ 6. Актирование приёмки + │ 7. Мониторинг исполнения + │ + │ Полностью электронные процедуры + │ Интеграция с другими системами + │ + ▼ +Развитие (постоянные изменения) + │ + │ Усиление контроля + │ Цифровизация + │ Интеграция с ГИС +``` + +### 6.4. Почему 44-ФЗ называют «контрактной системой» + +**44-ФЗ регулирует весь жизненный цикл:** + +1. **Планирование** + - Заказчик составляет план закупок на 3 года + - Формирует план-график на год + - Обосновывает необходимость закупки + +2. **Размещение извещения** + - Публикация в ЕИС + - Указание всех требований + - Свободный доступ для всех участников + +3. **Проведение процедуры** + - Подача заявок в электронном виде + - Рассмотрение первых частей + - Проведение аукциона/оценка конкурсов + - Рассмотрение вторых частей + +4. **Заключение контракта** + - Подписание в электронной форме + - Размещение в реестре контрактов + - Обеспечение исполнения + +5. **Исполнение контракта** + - Поставка товаров/выполнение работ + - Приёмка комиссией + - Оплата + +6. **Актирование** + - Электронные акты приёмки + - Интеграция с системой «Электронный бюджет» + +7. **Мониторинг** + - Контроль сроков исполнения + - Отслеживание платежей + - Выявление нарушений + +**94-ФЗ регулировал только этапы 2–4** (размещение, проведение, заключение). + +--- + +## 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):** +- Отслеживание прогресса (0–100%) +- Статус задачи (в процессе/завершено/ошибка) +- Результат выполнения +- Время начала и завершения + +--- + +## Приложения + +### Приложение А. Коды регионов РФ + +| Код | Регион | Код | Регион | +|-----|--------|-----|--------| +| 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 " +``` + +**Пример 2: Поиск закупок по региону и закону** + +```bash +curl -X GET "http://localhost:8000/api/v1/zakupki/?region_code=77&law_type=44-FZ" -H "Authorization: Bearer " +``` + +**Пример 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 diff --git a/docs/Техническая справка ЕИС Закупки.docx b/docs/Техническая справка ЕИС Закупки.docx new file mode 100644 index 0000000..0244830 Binary files /dev/null and b/docs/Техническая справка ЕИС Закупки.docx differ diff --git a/docs/Техническая справка ЕИС Закупки_code.docx b/docs/Техническая справка ЕИС Закупки_code.docx new file mode 100644 index 0000000..ef81060 Binary files /dev/null and b/docs/Техническая справка ЕИС Закупки_code.docx differ diff --git a/docs/описание объектов парсинга/02_таблица источников + приоритет.docx b/docs/описание объектов парсинга/02_таблица источников + приоритет.docx new file mode 100755 index 0000000..a504a03 Binary files /dev/null and b/docs/описание объектов парсинга/02_таблица источников + приоритет.docx differ diff --git a/docs/описание объектов парсинга/1.2 Заключения о подтверждении производства.docx b/docs/описание объектов парсинга/1.2 Заключения о подтверждении производства.docx new file mode 100755 index 0000000..0c8a2ca Binary files /dev/null and b/docs/описание объектов парсинга/1.2 Заключения о подтверждении производства.docx differ diff --git a/docs/описание объектов парсинга/3. Реестры ФСТЭК России.docx b/docs/описание объектов парсинга/3. Реестры ФСТЭК России.docx new file mode 100755 index 0000000..f325486 Binary files /dev/null and b/docs/описание объектов парсинга/3. Реестры ФСТЭК России.docx differ diff --git a/docs/описание объектов парсинга/5. Открытые данные Роспатента.docx b/docs/описание объектов парсинга/5. Открытые данные Роспатента.docx new file mode 100755 index 0000000..c851528 Binary files /dev/null and b/docs/описание объектов парсинга/5. Открытые данные Роспатента.docx differ diff --git a/docs/описание объектов парсинга/чекко.docx b/docs/описание объектов парсинга/чекко.docx new file mode 100755 index 0000000..bedf02b Binary files /dev/null and b/docs/описание объектов парсинга/чекко.docx differ diff --git a/docs/описание скрапинг.docx b/docs/описание скрапинг.docx new file mode 100644 index 0000000..8435366 Binary files /dev/null and b/docs/описание скрапинг.docx differ diff --git a/docs/таблица источников + приоритет.docx b/docs/таблица источников + приоритет.docx new file mode 100755 index 0000000..60cc504 Binary files /dev/null and b/docs/таблица источников + приоритет.docx differ