Задача — превратить неоднородную CSV/XLSX-выгрузку в чистую и проверяемую таблицу для CRM или аналитики. Во входных данных встречаются разные названия колонок, лишние пробелы, смешанные форматы дат и сумм, некорректные контакты и повторяющиеся записи; спорные строки нужно сохранить для ручной проверки.
Собрал воспроизводимый пайплайн на Python и Pandas. Скрипт сопоставляет алиасы колонок, нормализует текст, e-mail, телефоны, суммы и даты, отделяет повторы по order_id, сохраняет номер исходной строки и присваивает статус Ready, Needs review или Duplicate. Excel-отчёт включает Summary с формулами и KPI, Cleaned Data, Needs Review, Duplicates, Raw Data и Rules. Добавил автоматические тесты итоговых метрик, разбора ISO-дат и формата телефона.
Дополнительно разработал интерактивное браузерное демо на React и TypeScript: импорт CSV/XLSX, переключение листов, поиск и фильтры по статусу, сравнение исходных и обработанных значений, объяснение ошибок и выгрузка отчёта. Файлы обрабатываются локально в браузере, без отправки на сервер.
В браузерной версии правила заданы явно: строгая проверка дат и сумм, международный номер телефона без угадывания страны, предупреждения о формулах и повторных ID. Дубли сохраняются со ссылкой на первую исходную строку и не объединяются автоматически. Неверные заголовки и превышение лимитов дают понятную ошибку.
На контрольном наборе обработка отделяет корректные записи, спорные строки и дубли с привязкой к первоисточнику. На выходе менеджер получает проверяемый Excel-отчёт с исходными данными и причинами исключений. Правила можно адаптировать под конкретную выгрузку и требования CRM.
Для браузерного демо проверен набор из 18 вымышленных строк: 12 готовы, 4 требуют проверки, 2 являются дублями. Пройдены 10 автоматических тестов; отдельно проверены импорт XLSX, CSV с кириллицей, ошибочный лист и скачанный Excel-отчёт.
Все материалы кейса демонстрационные. Проверка формата не подтверждает существование контактов или достоверность исходных сведений.