Добавлена умная фильтрация при поиске по email
Теперь поиск по email работает с ограничениями: - Если запрос содержит @, требуется минимум 2 символа после @ - Если в запросе нет @, требуется минимум 3 символа всего Это предотвращает нежелательные результаты, такие как: - Поиск по одному символу @ находит всех клиентов (все содержат @) - Поиск по 1-2 буквам находит очень широкий результат Примеры работы: - team_x3m@ → не будет искать по email (только 0 символов после @) - @bk → будет искать по email (2 символа после @) - natul → будет искать по email (4 символа, нет @, достаточно) - na → не будет искать по email (только 2 символа, нет @) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -153,8 +153,22 @@ def api_search_customers(request):
|
||||
|
||||
# Ищем по имени, email или телефону
|
||||
# Используем Q-объекты для OR условий
|
||||
# Для email используем icontains (поиск по части) - это позволит найти по любой части email
|
||||
q_objects = Q(name__icontains=query) | Q(email__icontains=query)
|
||||
|
||||
# Определяем, нужно ли искать по email
|
||||
# Критерии: (@present AND 2+ chars after @) OR (no @ AND 3+ chars total)
|
||||
search_by_email = False
|
||||
if '@' in query:
|
||||
# Если есть @, то нужно 2+ символа после @
|
||||
parts = query.split('@')
|
||||
if len(parts) >= 2 and len(parts[-1]) >= 2:
|
||||
search_by_email = True
|
||||
elif len(query) >= 3:
|
||||
# Если нет @, требуем минимум 3 символа для поиска по email
|
||||
search_by_email = True
|
||||
|
||||
q_objects = Q(name__icontains=query)
|
||||
if search_by_email:
|
||||
q_objects |= Q(email__icontains=query)
|
||||
|
||||
# Для телефона ищем по нормализованному номеру и по цифрам
|
||||
if phone_normalized:
|
||||
|
||||
Reference in New Issue
Block a user