Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Очистка заявок

Скрипт принимает .xlsx или .csv с колонками Имя, Телефон, Дата заявки, Источник и создаёт два результата в формате XLSX или CSV. Рекомендуется XLSX: в нём телефоны гарантированно остаются текстом со знаком +, настроены фильтры, ширина колонок и закрепление заголовка.

Запуск

Требуется Python 3.10 или новее. Внешние библиотеки не нужны.

python clean_leads.py "C:\\path\\to\\input.xlsx" "C:\\path\\to\\clean_leads.xlsx" "C:\\path\\to\\problem_leads.xlsx"

Скрипт:

  1. Приводит российские телефоны к виду +7XXXXXXXXXX; неподходящие значения отмечает как «нет телефона».
  2. Преобразует полные даты в YYYY-MM-DD, включая распространённые числовые, Excel-форматы и даты с русским названием месяца. Неоднозначные, неполные и нераспознаваемые даты считаются проблемными — скрипт их не угадывает.
  3. Убирает лишние пробелы в имени и приводит слова к аккуратному регистру.
  4. Убирает повторы по нормализованному телефону, сохраняя первую корректную запись.
  5. Выносит строки без имени, телефона или корректной даты в отдельный файл. В нём сохраняются номер строки, причина, все исходные значения и доступные нормализованные значения.

Что проверено на приложенном файле

Скрипт обработал 36 исходных строк: в чистом результате 21 уникальная корректная заявка, в списке проблем — 6 строк, удалено 9 дублей. Телефоны в чистом файле имеют ровно формат +7 и 10 цифр; даты соответствуют YYYY-MM-DD; одинаковые телефоны не повторяются. Исходные значения всех проблемных строк сохранены.

Автоматическая проверка

python -m unittest -v test_clean_leads.py

Тесты проверяют телефоны, имена, поддерживаемые даты, отказ от угадывания неоднозначных дат, сохранение исходных проблемных значений, удаление дублей и повторное чтение созданного XLSX.

Как я выполнил задачу

  1. Разбил задачу на чтение, нормализацию, валидацию, дедупликацию и экспорт.
  2. Для телефонов применил правило +7 и десять цифр после него.
  3. Для дат добавил распространённые числовые и русскоязычные форматы.
  4. Для разработки использовал Codex: он помог структурировать правила и сформировать скрипт.
  5. Запустил скрипт на приложенной книге и сверил количество строк на каждом этапе.
  6. Вручную просмотрел все строки из списка проблем и автоматически проверил телефоны, даты и уникальность номеров.
  7. Решение не привязано к конкретным 36 строкам и повторно обрабатывает файлы той же структуры.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages