Программа получает на вход xlsx-файл с данными по контрактам. Потом обогощает его через сайт госзакупов по соответствующим настройкам. Перед обогощением данные, т.е. позиции продуктов в контракте, будут сгруппированые по ссылке контракта.
При обогощении всех позиций одного контракта будут сделаны запросы:
- основная страница контракта
- страница "контракт", если она есть
- черновик контракта с вкладки "контракт", если она есть
- страница "вложения", если она есть
- запрос на скачивание xml-файла, если он есть во вкладке "вложения"
- запрос на скачивание html-файла, если он есть во вкладке "вложения"
То есть количество запросов по одному договору от 1 до 4х.
Итоговые файлы буду представлять собой набор xlsx-файлов с префиксом 0_, 1_ и так далее, в кажлом из которых будет не более 300 строк.
- Для 223фз - раздел "Информация о договоре" / "Предмет договора";
- Для 44фз - раздел "Контракт" либо "Вложения" / html-файл контракта в части описания товаров и их характеристик;
- Для 44фз - раздел "Вложения" / xml-файл контракта в т.ч. в части торговой марки, НКМИ, названия НКМИ, описания товара из РУ.
В файле должны присутствовать столбцы
- "Ссылка на источник"
- "Цена за единицу продукции"
- "Код ОКПД2/КТРУ продукта" либо "Код товара, работы или услуги (ОКПД2)", г) "Наименование продукта" либо "Название продукта".
- setuptools~=75.8.2
- typing_extensions~=4.12.2
- beautifulsoup4~=4.13.3
- lxml~=5.3.1
- aiofiles~=24.1.0
- pandas~=2.2.3
- numpy~=2.2.3
- requests~=2.32.3
- ipywidgets~=8.1.5
- aiohttp~=3.11.13
- cssselect~=1.2.0
- fuzzywuzzy~=0.18.0
- openpyxl~=3.1.5
- toga~=0.5.1
- pyinstaller~=6.13.0
Инструкции для сборки. Запускать из директории SiteFileEnricher.
pyinstaller -F --windowed --noconfirm --clean -n file_enricher site_file_enricher/gui.py
python setup.py bdist_wheel --universal
import os
from site_file_enricher.script import enrich_file_with_default_settings
cert_path = os.path.abspath('russiantrustedca/russiantrustedca.pem')
path_to_file = os.path.abspath('files/my_example.xlsx')
enrich_file_with_default_settings(
abs_path_to_file=path_to_file,
cert_abs_path=cert_path,
out_path=os.path.abspath('files'),
out_file_name="enriched_my_example.xlsx"
)Запускать из директории SiteFileEnricher.
python -m unittest test/test_unit*
python -m unittest test/test_integration*
(Проходят достаточно медленно, тк делают запросы непосредственно в госзакупки)