Выполните команду в терминале:
pip install uv
uv syncВариант 1:
Активируйте виртуальное окружение и выполните:
python main.pyВариант 2:
Запустите с помощью uv (используя переменные из .env):
uv run --env-file=.env main.pyПосле успешного запуска в корне проекта появится файл: result.xlsx
💡 Готово!
Теперь вы можете открытьresult.xlsxи посмотреть результат работы программы.
- Структура проекта: выдержана классическими архитектурными подходами, где сервисная логика и конфигурации отделены от основного интерфейса взаимодействия
- Логика взаимодействия: создал классический http-клиент для ассинхронного взаимодействия с внешними ресурсами, который хранится в файле
base_client.pyв дерикторииsrc/clients - Логика обработки: я посчитал правильным, что изначальный файл xlsx, который содержит данные о uid и названии зоны, необходимо хранить внутри проекта и путём парсинга создавать константную переменную, содержащую данные о зонах в формате
dict(ключ: значение), где ключом является uid, а значением -- название места - Логика формирования итогового файла следующая: в файле
excel_service.pyв дерикторииsrc/servicesсоздаётся класс-сервис, содержащий основную логику взаимодействия с внешним API, мок-связью и генерацией итогового xlsx-файла. В методеget_data_of_visitsмы асинхронно получаем данные с внешнего API и возвращаем их (в нашем случае мы используемget_data_of_visits_static, т.к. внешний API закрыт для общей сети, и возвращаем статику). Далее мы передаём данные в методgenerate_dfs_from_response_data, который генерирует из всех существующих данных датафреймы и 'мёрджит' их в один. И в методеsave_df_to_excelмы сохраняем общий excel file в корневой дериктории.