Проблема заказчика:
Исходные файлы детализации содержат более 100 000 строк, технические колонки (IMSI, ESN), сдвинутые заголовки и неформатированные номера телефонов. Ручная обработка занимает несколько часов и чревата ошибками.
Техническое решение:
Умный парсинг заголовков: Реализован динамический поиск строки с заголовками (сканирование первых 20 строк), что позволяет программе работать с файлами разных шаблонов.
Оптимизация памяти: Обработка больших файлов реализована через потоковый вывод и pd.ExcelWriter, что предотвращает переполнение RAM при работе с файлами >50Мб.
Валидация данных: Разработан алгоритм нормализации телефонных номеров, который автоматически отфильтровывает служебные идентификаторы (IMSI/MIN) на основе длины строки и масок.
Логика приоритетов: Внедрена логика выбора ячеек (БС начала/конца разговора) для точного определения местоположения абонента.
Надежность: Проект покрыт модульными тестами (utils, validators, converters), обеспечивающими стабильность при изменениях кода.
UX: Интерфейс не блокируется при обработке, поддерживает корректную работу буфера обмена.
Результат:
Время обработки файла сокращено с 3-4 часов до 2-3 минут.
Исключены ошибки человеческого фактора при переносе данных.
Результат сохраняется в виде готовой Excel-таблицы с автофильтрами и форматированием.
Программа разработана для правоохранительных органов.