Проблема: Поиск "team_x3m@" неправильно находит клиента "Наталья natulj@bk.ru"
Причина: Использовался простой icontains для всех случаев
Решение: Добавлена функция determine_search_strategy() которая определяет
стратегию поиска на основе содержимого query:
1. email_prefix: query заканчивается на @ (например "team_x3m@")
→ Используется istartswith вместо icontains
→ Найдёт только email, начинающиеся с "team_x3m@"
→ НЕ найдёт "natulj@bk.ru" ✓
2. email_domain: query начинается с @ (например "@bk")
→ Использует icontains для поиска по домену
→ Найдёт все *@bk.ru, *@bk.com и т.д.
3. email_full: query содержит обе части (например "test@bk.ru")
→ Поиск по полному email адресу
4. universal: query без @, 3+ символов (например "natul")
→ Поиск везде: по имени И по email
→ Это позволит найти "Наталья" и "natulj@bk.ru"
5. name_only: очень короткие запросы (1-2 символа)
→ Только поиск по имени (чтобы не было ложных срабатываний)
Добавлены 23 unit-теста для покрытия всех сценариев:
- email_prefix cases: team_x3m@, user_name@, test123@
- email_domain cases: @bk, @bk.ru, @mail.google.com
- email_full cases: test@bk.ru, test@bk, user.name@mail.example.com
- universal cases: natul, abc, наталь, Test123
- name_only cases: t, te, на
- edge cases: пустая строка, @, множественные @
Все 23 теста проходят успешно ✓
Примеры работы после изменения:
- team_x3m@ → ищет email^=team_x3m (НЕ найдёт natulj@bk.ru)
- @bk → ищет все *@bk.*
- natul → ищет везде (имя + email)
- te → ищет только по имени (2 символа мало для email)
- test@bk.ru → ищет test@bk.ru🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>