Улучшение импорта клиентов: предобработка данных, умное слияние, прогресс-бар

- Добавлена предобработка email перед валидацией:
  * Исправление типичных опечаток (mail ru -> mail.ru, .ry -> .ru)
  * Удаление пробелов и двойных @@
  * Умное добавление @ для популярных доменов
  * Исправление доменов без точки (gmail -> gmail.com)

- Улучшена нормализация телефонов:
  * Умное добавление кода страны (+375, +7, +380)
  * Конверсия старого формата 8XXXXXXXXXX -> +7XXXXXXXXXX
  * Проверка длины номера (10-15 символов)
  * Поддержка локальных белорусских номеров (9 цифр)

- Реализована идемпотентность импорта:
  * Notes не раздуваются при повторных импортах (метод _append_unique_note)
  * ContactChannel не дублируется для одного клиента
  * Проверка существования альтернативных контактов по customer+type+value

- Добавлен прогресс-бар и защита от закрытия:
  * Визуальный прогресс-бар с анимацией и динамическим текстом
  * Блокировка формы во время импорта
  * Предупреждение браузера при попытке закрыть страницу

- Создана команда clear_anatol_customers для тестирования

- Добавлен тестовый файл test_customer_preprocess.csv с примерами исправляемых ошибок
This commit is contained in:
2026-01-03 14:30:18 +03:00
parent cca9a908c9
commit b201c71311
4 changed files with 232 additions and 19 deletions

View File

@@ -0,0 +1,11 @@
Имя,Email,Телефон,Заметки
Тест1,test @gmail com,8 029 123-45-67,Пробелы в email и старый формат телефона
Тест2,user@@mail.ru,375291234567,Двойной @@ и белорусский без +
Тест3,contact.ry,+7 (921) 555-44-33,Опечатка .ry вместо .ru
Тест4,infogmail,380501234567,Нет @ но есть gmail и украинский номер
Тест5,admin/com,291234567,Слэш вместо точки и 9 цифр (Беларусь)
Тест6,user@mailru,7 921 555 44 33,Домен без точки и российский формат
Тест7,test ya ru,,Пробелы в домене (нет телефона)
Тест8,,8 (029) 999-88-77,Нет email (только телефон 8...)
Тест9,invalid,123,ОШИБКА: оба невалидны
Тест10,good@test.by,+375291111111,Валидные данные (контрольная)
1 Имя Email Телефон Заметки
2 Тест1 test @gmail com 8 029 123-45-67 Пробелы в email и старый формат телефона
3 Тест2 user@@mail.ru 375291234567 Двойной @@ и белорусский без +
4 Тест3 contact.ry +7 (921) 555-44-33 Опечатка .ry вместо .ru
5 Тест4 infogmail 380501234567 Нет @ но есть gmail и украинский номер
6 Тест5 admin/com 291234567 Слэш вместо точки и 9 цифр (Беларусь)
7 Тест6 user@mailru 7 921 555 44 33 Домен без точки и российский формат
8 Тест7 test ya ru Пробелы в домене (нет телефона)
9 Тест8 8 (029) 999-88-77 Нет email (только телефон 8...)
10 Тест9 invalid 123 ОШИБКА: оба невалидны
11 Тест10 good@test.by +375291111111 Валидные данные (контрольная)