Об этом проекте
Licitarium — это компьютерная программа для Windows, которая зеркалит на компьютере органа те данные, которые муниципалитет публикует в ПНКП (Национальном портале государственных закупок). Программа объединяет закупки (объявления и извещения), контракты, протоколы регистрации цен, Ежегодный план закупок (PCA) и позиции каждой закупки с уплаченной единичной ценой и победившим поставщиком. Сбор данных доступен для поиска, офлайн и бессрочно — это решает проблему необходимости последовательно просматривать историю процессов на портале, который не поддерживает поиск и недоступен без интернета. Пилотная версия работает в муниципалитете Ориндиува (штат Сан-Паулу), и код не привязан к конкретному муниципалитету.
Сбор данных и интерфейс
Интерфейс содержит пять вкладок с поиском, фильтрами по году, модели, статусу и органу, сортировкой по щелчку, настраиваемыми колонками и экспортом в формате .xlsx: «Закупки» (объявления и извещения по моделям Закона № 14.133), «Контракты» (поставщик, общая стоимость, срок действия и метка статуса — действующий/истечёт через 60 дней/завершён), «Протоколы» (предмет и срок действия с аналогичной меткой), «PCA» (позиции плана каждого органа) и «Цены» (поиск по позиции, статистическая сводка со медианой, квартилями и предупреждением о выбросах, выбор и отклонение с указанием причины, а также муниципалитеты-референсы). Щелчок по строке открывает полный детальный просмотр, включая целостную запись в формате JSON, как она опубликована на ПНКП, и прямую ссылку на официальный процесс. На главном экране отображаются три кликабельных индикатора (общее число закупок, утверждённая стоимость за год, действующие контракты) и предупреждения об истечении срока через 60 дней и о незавершённых предложениях.
Формирование PCA
Модуль PCA использует исторические данные о уже заключённых позициях для формирования плана на следующий бюджетный период: группирует схожие позиции по общему корню описания, отбрасывая бюрократические префиксы, и объединяет группы с разными корнями, но крайне перекрывающимися описаниями; корректирует значения по индексу IPCA (Банк Бразилии) перед проекцией; оценивает количество усреднением, по последнему году, по наибольшей стоимости, по сумме или тренду методом линейной регрессии; оценивает цену медианой, средним, актуальной или наименьшей стоимостью; применяет стандартный страховой запас 10%, редактируемый для каждой позиции; классифицирует по ABC-анализу и группирует по семействам; сигнализирует о расходящейся единице, уникальном случае, разбросе цен, позиции, уже покрытой действующим протоколом, и отклонении от предыдущего плана. Позволяет объединять и разделять группы с ценой, взвешенной по объёму, и сохраняет ручные правки при новом формировании. Результатом является черновик для человеческого просмотра, а не файл для импорта.
Отчёты
Описаны восемь отчётов в HTML-формате с фирменным бланком (готовых к печати в PDF), а при возможности — также в .xlsx: Отношение закупок, Отношение контрактов, Отношение протоколов, Годовой исполнительный итог, Предупреждение о фрагментации (система самоконтроля, группирующая назначения по сходству предмета и отслеживающая пределы ст. 75 с окном по бюджетному периоду или скользящему периоду), Проект PCA и Исследование цен (обоснование для ст. 23). Печать всегда чёткая независимо от темы, выбранной на экране.
Синхронизация и работа
При первом запуске пользователь выбирает муниципалитет (встроенная таблица IBGE, содержащая 5571 муниципалитет), после чего программа скачивает исторические данные, опубликованные с 2021 года. При каждом открытии синхронизируются только изменённые данные с интервалом не менее 10 минут с последней выгрузки; кнопка «Синхронизировать» запускает сбор сразу. Органы муниципалитета определяются автоматически на основе закупок, другие можно добавить по CNPJ. Данные хранятся в локальной базе SQLite в директории %LOCALAPPDATA%\Licitarium и рассматриваются как восполняемый кэш. Без интернета программа открывается с локальными данными и информирует об отсутствии обновления. README сообщает, что синхронизация пилотного сборника заняла 33 секунды при 69 запросах к порталу, с тремя параллельными фазами и повторным запросом только изменённых позиций. При сбое портала клиент повторяет попытку五次 с нарастающей задержкой (30–90 с), случайно распределяет интервалы между попытками и снижает число одновременных подключений при перегрузке; неудачные запросы регистрируются и повторяются при следующей выгрузке.
Панель управления
Главный экран суммирует бюджетный период в четырёх измерениях (Исполнение, Анализ, Контроль и Экономия), с предупреждениями над ними, ведущими к уже отфильтрованному списку. Графики реализованы в SVG, рисуются самой программой без библиотек и без сетевого взаимодействия, используют палитру, описанную как проверенная на дальтонизм и контрастность, и могут быть напечатаны в формате A3 альбомной ориентации. README отмечает, что запрос, питающий четыре измерения, занимает около 120 мс на сборнике объёмом 114 МБ (3360 закупок, 25 тыс. позиций), а графики перерисовываются при изменении размера окна.
Конфиденциальность
Программа исключительно читает общедоступные данные ПНКП: не передаёт данные с компьютера, не имеет телеметрии или учётной записи пользователя и не открывает сетевых портов. Единственные исходящие подключения осуществляются к pncp.gov.br и к публичному API GitHub, используемому для проверки новых версий.
Установка и архитектура
Рекомендуемый способ — исполняемый файл со страницы релизов, без установки, без Python и без прав администратора. В README указано, что SmartScreen может выдавать предупреждение, поскольку исполняемый файл новый и не подписан, а Smart App Control в Windows 11 блокирует бинарники без цифровой подписи, отключая автоматическое обновление в таком случае. Альтернативно программа запускается из исходного кода командами pip install -r requirements.txt и python licitarium.py; требуется Windows 10/11 с WebView2. Внешние зависимости — pywebview, openpyxl и motor_pncp; остальное входит в стандартную библиотеку Python, рекомендуемая версия — Python 3.12. Архитектура одноразового процесса: окно pywebview/WebView2 взаимодействует с Python через мост js_api, без HTTP-сервера, порта или файрвола. Сырой JSON каждой записи сохраняется как источник истины, а колонки базы — его проекция. Репозиторий содержит licitarium.py, pncp.py, pca_builder.py, relatorios.py, файлы интерфейса в ui/ (четыре темы на основе data-theme и встроенные шрифты), тесты в tests/ с pytest и мокированным HTTP, сквозные тесты интерфейса в tests-e2e/ с Playwright, а также DESIGN.md, design/IDENTIDADE.md и design/DASHBOARD.md. CI выполняет Python-тесты и тесты интерфейса на Windows при каждом push, а при маркировке тега v* компилирует исполняемый файл и прикрепляет его к релизу через PyInstaller. В настройках функции «Сохранить копию...» и «Восстановить копию...» сохраняют и возвращают весь сбор в виде .zip, проверяя файл и сохраняя предыдущую базу.
Авторство и лицензия
Лицензия MIT (© 2026 Túlio Ribeiro de Moura e Silva). Каждая версия получает DOI в Zenodo с рекомендуемой цитатой в README. Отображаемые данные являются общедоступными, происходящими из ПНКП в соответствии с Законом № 14.133/2021 и Законом о доступе к информации. Проект заявляет, что не является официальным продуктом ПНКП или Федерального правительства.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.