Локальный инструмент для поиска закупок ЕИС по 44-ФЗ и 223-ФЗ: ключевые слова, фильтры и выгрузка в Excel

от автора

Смотрю на этот текст и понимаю, что все пользуются ИИ, просто кто-то это хорошо скрывает.

Сейчас всё больше рабочих задач имеет смысл не просматривать вручную, а сначала прогонять через ИИ. Закупки — хороший пример такой задачи.

Проблема не только в том, чтобы открыть сайт ЕИС и вбить пару фильтров. Проблема в том, что нужно быстро понять: подходит закупка или нет, относится ли она к нужной теме, есть ли там нужные работы, стоит ли тратить время на документацию.

В закупках есть отдельная большая работа — постоянно просматривать новые публикации, отсекать нерелевантное и выбирать то, что стоит разобрать детально. На один подходящий договор могут уходить недели такого просмотра. В компаниях это нередко отдельная роль: человек ежедневно мониторит площадки, проверяет закупки, открывает документацию и решает, что передавать дальше специалистам.

ИИ с такой первичной сортировкой может помочь. Но для этого ему нужно дать нормальные данные: таблицу, где есть номер закупки, заказчик, регион, наименование, цена, сроки, ОКПД2, ссылка и дополнительные поля.

Мне был нужен не просто “поиск на сайте”, а программа, которая создаёт Excel для последующей загрузки в ИИ и ручного анализа.

Так появилась идея сделать локальную программу, которая:

  • запускается на компьютере пользователя;

  • работает через простой интерфейс в браузере;

  • скачивает данные из ЕИС;

  • фильтрует закупки по закону, региону, датам, цене, статусу, заказчику и ОКПД2;

  • дополнительно отбирает закупки по ключевым словам;

  • сохраняет результат в Excel;

  • не отправляет токен и данные на сторонние серверы.

Проект и эта статья сделаны при активной помощи ИИ. ИИ помогал раскладывать задачу на этапы, писать код, формулировать тесты, проверять README и искать ошибки. При этом ключевые вещи проверялись вручную: тесты, smoke-проверки, реальные ответы ЕИС и итоговые Excel-файлы.

Если где-то в проекте есть решения, которые опытный разработчик назовёт нейропомоями, буду рад критике. Для этого проект и открыт.

Репозиторий: https://github.com/longhairdude/zakupki-gov-ru

При использовании программы не забудь отключить vpn

Почему не получилось просто взять данные с сайта

Первой идеей было пойти самым очевидным путём: взять сайт ЕИС и попробовать автоматизировать работу с ним.

На практике этот вариант я отбросил. Парсинг сайта не дал стабильного рабочего результата. Сайт — это пользовательский интерфейс, а не API. Там есть динамика, состояния страницы, параметры поиска, ограничения и поведение, которое неудобно воспроизводить программно.

То, что глазами кажется обычной таблицей, для автоматической обработки может оказаться нестабильным источником.

Поэтому я пошёл через интеграционный сервис ЕИС getDocsIP. Это сложнее на старте, но зато данные приходят в виде архивов с XML, которые можно нормально разбирать, проверять и превращать в Excel.

Для доступа нужен текстовый токен сервисов отдачи информации ЕИС. Это не USB-токен электронной подписи, а отдельный токен для интеграционного сервиса.

Что получилось

Сейчас программа умеет искать закупки по 44-ФЗ и 223-ФЗ, выгружать результат в Excel и работать через локальный веб-интерфейс.

Обычный сценарий такой:

  1. Пользователь запускает start_windows.cmd.

  2. В браузере открывается локальный интерфейс.

  3. Пользователь выбирает закон: 44-ФЗ или 223-ФЗ.

  4. Указывает регион, даты, статус, цену, ОКПД2, заказчика и ключевые слова.

  5. Нажимает кнопку выгрузки.

  6. Программа скачивает архивы из ЕИС, разбирает данные, применяет фильтры и создаёт Excel.

  7. Полученный Excel можно открыть самому или загрузить в ИИ для первичной оценки закупок.

Основной упор был на то, чтобы программой мог пользоваться человек, который не пишет код. Поэтому всё завязано на интерфейс в браузере, а команды для консоли оставлены только как дополнительный вариант.

Какие фильтры есть

В интерфейсе можно выбрать:

  • закон: 44-ФЗ или 223-ФЗ;

  • регион;

  • дату и глубину поиска;

  • статус;

  • цену;

  • заказчика;

  • ОКПД2;

  • максимальное количество строк в Excel.

Кроме обычных фильтров есть файл filters.yaml с ключевыми словами. Это личный профиль поиска.

Например, если интересны закупки по разработке и сопровождению программного обеспечения, можно задать:

target_keywords:  - программное обеспечение  - разработка  - сопровождениеrequired_context_keywords:  - информационная системаexclude_keywords:  - картридж  - бумага

Так можно быстро менять направление поиска: один набор слов для программного обеспечения, другой — для электромонтажных работ, третий — для обслуживания оборудования.

Если filters.yaml не создан, программа всё равно работает — просто применяются фильтры из интерфейса.

Зачем здесь Excel и ИИ

Excel здесь не побочный результат, а центральная часть сценария.

Идея не в том, чтобы программа сама решала, какие закупки брать в работу. Идея в том, чтобы собрать нормальную таблицу, которую можно быстро посмотреть самому или загрузить в ИИ.

Например, можно попросить ИИ:

  • выделить закупки, похожие на ваш профиль работ;

  • объяснить, почему закупка может быть интересной;

  • сгруппировать закупки по типам работ;

  • найти нерелевантные строки;

  • составить краткое резюме по каждой закупке;

  • помочь сформировать список закупок для ручной проверки.

Программа отвечает за сбор и нормализацию данных. ИИ помогает в первичном анализе. Человек оставляет за собой итоговое решение.

Особенности 223-ФЗ

С 223-ФЗ оказалось чуть сложнее, чем с 44-ФЗ.

Во-первых, одна закупка может содержать несколько лотов. Поэтому в Excel одна строка по 223-ФЗ соответствует одному лоту.

Во-вторых, у части лотов может отсутствовать НМЦК. В этом случае в Excel ячейка цены остаётся пустой, а не превращается в ноль или строку None.

В-третьих, статусы 223-ФЗ пока сохраняются так, как приходят из ЕИС. Например, может быть статус P. Поэтому для первого поиска по 223-ФЗ в интерфейсе лучше выбирать статус Все.

Это не идеальный UX, но я решил не делать неподтверждённый перевод статусов до отдельной проверки справочников.

Что было самым неприятным

Самым неприятным оказалась не сама обработка XML, а различия между почти одинаковыми запросами к ЕИС.

На одном этапе диагностическая команда уже успешно получала ссылку на архив, а новый поиск по 223-ФЗ получал ошибку ЕИС:

Токены для сервисов отдачи отсутствуют в ЕИС

Сначала это выглядело как проблема доступа или VPN. Но потом стало ясно, что запрос в одном месте собирался немного иначе, чем в рабочей диагностике.

В итоге я вынес сборку запроса в общий helper, чтобы диагностика и рабочий поиск использовали одну и ту же форму запроса.

Маленький вывод: если один запрос уже работает, не стоит руками собирать “почти такой же” в другом месте.

Что сделано с помощью ИИ

Проект почти полностью делался в режиме парной разработки с ИИ.

ИИ помогал:

  • разложить задачу на маленькие этапы;

  • писать и править код;

  • формулировать тесты;

  • искать места, где можно сломать старую работу 44-ФЗ при добавлении 223-ФЗ;

  • проверять README для обычного пользователя;

  • готовить эту статью.

Но это не был режим “ИИ написал, я поверил”. После каждого небольшого шага я запускал тесты, проверял интерфейс, делал реальные smoke-тесты и смотрел итоговые Excel-файлы.

Финальная проверка перед публикацией:

331 passed

Я понимаю, что код, написанный при активной помощи ИИ, может выглядеть спорно. Где-то наверняка можно сделать проще, чище и правильнее. Поэтому проект открыт, и критика приветствуется.

Что сейчас ограничено

Проект рабочий, но не закрывает все возможные сценарии.

Сейчас есть ограничения:

  • ПП РФ 615 не подключён;

  • смешанный поиск 44-ФЗ + 223-ФЗ пока не поддерживается;

  • статусы 223-ФЗ пока не переводятся в человекочитаемый вид;

  • поиск по ИНН заказчика пока не реализован;

  • поиск по прикреплённым файлам не реализован;

  • качество результата зависит от токена ЕИС, доступности сервиса и настроек фильтров.

Подробное описание установки и использования есть в README на GitHub.

Зачем выкладываю

Я выкладываю проект как open-source не потому, что он закрывает все сценарии, а потому что он уже решает конкретную задачу: помогает собрать Excel с закупками из ЕИС для дальнейшего анализа.

Если вы работаете с закупками и регулярно просматриваете ЕИС вручную, буду рад обратной связи:

  • каких фильтров не хватает;

  • какие поля нужны в Excel;

  • насколько удобно использовать результат для анализа через ИИ;

  • что стоит добавить в первую очередь.

Репозиторий: https://github.com/longhairdude/zakupki-gov-ru

При использовании программы не забудь отключить vpn

ссылка на оригинал статьи https://habr.com/ru/articles/1044720/