Задача
Путевые листы и акты приходили в Excel-файлах с разной структурой. Перед загрузкой в аналитику сотрудники вручную собирали их, приводили поля к общему виду и проверяли данные. Всё повторялось с каждой новой поставкой и зависело от внимательности исполнителя. Эту работу нужно было передать программному конвейеру: получить файлы, преобразовать их, проверить по заданным правилам и загрузить в аналитическое хранилище.
Что разработали
Мы разработали на Python конвейер для транспортной отчётности. Он получает файлы через Yandex Disk API. Pandas читает и преобразует таблицы, а Pandera проверяет структуру и заданные правила. Готовые данные сохраняются в Parquet и передаются в аналитическое хранилище.
Отдельно конвейер сопоставляет государственные номера, ФИО и адреса. Для неоднозначных записей используются нечёткое сопоставление и LLM-обогащение. Получение, преобразование, проверка и загрузка идут последовательно по одному сценарию для каждой новой партии. Правила не зашиты в исходные документы и задаются отдельно. Спорные совпадения подтверждает сотрудник.
Как работает
Сначала конвейер забирает доступные Excel-файлы через Yandex Disk API и читает таблицы. Затем приводит данные к согласованным полям и типам, после чего Pandera проверяет их по настроенным правилам. В хранилище попадает уже проверенный набор в формате Parquet.
При сопоставлении государственных номеров, ФИО и адресов учитываются различия в написании. Для неоднозначных записей LLM и нечёткое сопоставление предлагают варианты. Если уверенного совпадения нет, решение принимает сотрудник.
Результат
Новые партии транспортной отчётности проходят один и тот же путь: сбор, преобразование, проверку и загрузку. Файлы с разной структурой превращаются в единый набор данных для аналитического хранилища. Различия в написании номеров, ФИО и адресов обрабатываются при сопоставлении, а спорные записи уходят сотруднику на проверку.
Ограничения и зависимости
Результат зависит от структуры, полноты и качества исходных Excel-файлов. Если поставщик изменит формат, правила преобразования придётся скорректировать. Сопоставление государственных номеров, ФИО и адресов может ошибаться. Нечёткие совпадения и результаты LLM нужно проверять, особенно когда от них зависит отчётность или последующие решения.