Проблема: Было две разных реализации логики поиска: - customer_list() использовала простой icontains везде - api_search_customers() использовала новую smart-логику с determine_search_strategy() Решение: 1. Создана функция build_customer_search_query() которая строит Q-объект на основе стратегии поиска 2. Обновлена customer_list() чтобы использовать: - determine_search_strategy() для определения стратегии - build_customer_search_query() для построения Q-объекта 3. Обновлена api_search_customers() чтобы использовать build_customer_search_query() вместо дублирования логики Результат: ЕДИНАЯ логика поиска везде ✓ Архитектура: 1. normalize_query_phone() — нормализация номеров телефонов 2. determine_search_strategy() — определение стратегии поиска 3. build_customer_search_query() — построение Q-объекта ← NEW 4. customer_list() — используется в веб-интерфейсе списка клиентов 5. api_search_customers() — используется в AJAX для Select2 Все 23 unit-теста проходят успешно ✓ Преимущества: - Единая логика поиска во всем приложении - Легче поддерживать и расширять - Новая функция можно переиспользовать в других местах - Меньше дублирования кода 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
14 KiB
14 KiB