Проблема: Поиск "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>
7.8 KiB
7.8 KiB