Автоматизированная система сбора производственных данных через REST API с последующей обработкой, агрегацией и формированием управленческих отчетов в Excel.
Все производственные данные формируются и хранятся на внутреннем сайте суточных рапортов.
Была поставлена задача автоматически собирать данные по бурению, формировать отчет по простоям (НПВ), анализировать причины простоев по регионам, заказчикам и ответственным подразделениям.
Скрипт реализован на Python с использованием REST API.
- Автоматизировать сбор производственных данных
- Исключить ручную выгрузку отчетов
- Формировать сводные отчеты по простоям (НПВ)
- Сравнивать план и факт
- Анализировать производственные показатели по регионам и заказчикам
- Python
- REST API (requests)
- Pandas / NumPy
- tqdm (прогресс-бар)
- OpenPyXL (формирование Excel)
- argparse (CLI запуск)
- Подключение к REST API через токен авторизации
- Пагинационная загрузка суточных рапортов
- Получение справочной информации (скважины, кусты, заказчики, регионы и т.д.)
- Нормализация JSON-структур
- Объединение данных в единый DataFrame
- Расчет производственных показателей
- Формирование сводных таблиц
- Автоматическая генерация Excel-отчета
- Загрузка суточных рапортов
- Пагинация по страницам
- Ограничение по дате
- Загрузка справочных таблиц
- Обработка ошибок HTTP
- Объединение фактических и плановых данных
- Расчет проходки
- Обогащение данных справочной информацией
- Нормализация вложенных JSON (construction elements)
Формируются:
- Проходка
- Календарное время
- Время сплошного бурения
- Время НПВ
- Коммерческая скорость
- Механическая скорость
- Распределение часов НПВ по регионам
- Распределение НПВ по заказчикам
- Детализация по ответственным подразделениям
- Сравнение план / факт
- Итоговые агрегаты по кварталам
Создаются листы:
- Свод по НПВ
- Итоги план–факт
- Распределение суточных рапортов
- Распределение плана
Применяется автоформатирование:
- оформление заголовков
- автоматическая ширина колонок
- аккуратная структура отчета
python sr_reports.py 2025-08-01 2025-08-20или
python sr_reports.py 2025-08-01Если дата окончания не указана — используется текущая дата.
API возвращал данные постранично.
Реализована логика:
- ограничение по максимальному количеству страниц
- контроль даты последнего рапорта
- остановка загрузки при достижении даты окончания
Это позволило избежать перегрузки и лишних запросов.
Данные по скважинам, регионам, заказчикам и конструктивным элементам находились в разных endpoint.
Решение:
- отдельные функции получения справочной информации
- объединение через ключи
- нормализация вложенных структур JSON
- очистка лишних полей
Для расчета проходки использовалось смещение предыдущего значения забоя по каждой скважине.
Реализовано:
- сортировка по дате
- groupby + shift
- контроль отрицательных значений
- сохранение исходного порядка строк
Требовалось:
- выделить только НПВ
- сгруппировать по регионам и заказчикам
- детализировать по ответственным подразделениям
Решение:
- использование pivot_table
- многоуровневые индексы
- формирование итоговых агрегатов
Отчет должен был содержать:
- несколько сводных блоков на одном листе
- аккуратное форматирование
- читабельную структуру
Реализовано:
- универсальная функция записи блоков
- динамическое определение ширины колонок
- автоматическое форматирование заголовков
В целях корпоративной безопасности реальные токены и производственные данные в публичной версии проекта скрыты.


