import React, { useState } from 'react'; import { useLazyQuery } from '@apollo/client'; import { LaximoFulltextSearchResult, LaximoFulltextDetail, LaximoOEMResult } from '@/types/laximo'; import { GET_LAXIMO_FULLTEXT_SEARCH, SEARCH_LAXIMO_OEM } from '@/lib/graphql/laximo'; import PartDetailCard from './PartDetailCard'; interface FulltextSearchSectionProps { catalogCode: string; vehicleId: string; ssd: string; } const FulltextSearchSection: React.FC = ({ catalogCode, vehicleId, ssd }) => { const [searchQuery, setSearchQuery] = useState(''); const [executeSearch, { data, loading, error }] = useLazyQuery(GET_LAXIMO_FULLTEXT_SEARCH, { errorPolicy: 'all' }); const handleSearch = () => { if (!searchQuery.trim()) { return; } if (!ssd || ssd.trim() === '') { console.error('SSD обязателен для поиска по названию'); return; } console.log('SEARCH PARAMS', { catalogCode, vehicleId, searchQuery: searchQuery.trim(), ssd }); executeSearch({ variables: { catalogCode, vehicleId, searchQuery: searchQuery.trim(), ssd } }); }; const handleKeyDown = (e: React.KeyboardEvent) => { if (e.key === 'Enter') { handleSearch(); } }; const searchResults: LaximoFulltextSearchResult | null = data?.laximoFulltextSearch || null; return (
{/* Форма поиска */}

Поиск деталей по названию

setSearchQuery(e.target.value)} onKeyDown={handleKeyDown} placeholder="Введите название детали (например: фильтр масляный)" className="w-full px-4 py-2 border border-gray-300 rounded-md focus:ring-2 focus:ring-red-500 focus:border-red-500" />

Введите название детали для поиска в каталоге. Попробуйте русские термины: "фильтр", "тормозной", "амортизатор" или английские: "filter", "brake", "shock"

{(!ssd || ssd.trim() === '') && (

Полнотекстовый поиск недоступен

Для поиска по названию деталей необходимо сначала выбрать конкретный автомобиль через поиск по VIN или мастер подбора.

)}
{/* Ошибка */} {error && (

Ошибка поиска

{error.message}

)} {/* Результаты поиска */} {searchResults && (

Результаты поиска: "{searchQuery}"

Найдено {searchResults.details.length} деталей

{searchResults.details.length > 0 ? (
💡 Нажмите на карточку детали для поиска предложений и цен. Используйте кнопку "Показать применимость" для просмотра применения в автомобиле.
{searchResults.details.map((detail, index) => ( ))}
) : (

По запросу "{searchQuery}" ничего не найдено

Попробуйте изменить поисковый запрос

)}
)} {/* Подсказки */} {!searchResults && !loading && (

Советы по поиску

  • Используйте ключевые слова: "фильтр", "масляный", "воздушный", "тормозной"
  • Попробуйте английские термины: "filter", "oil", "air", "brake", "shock"
  • Можно использовать частичные названия: "амортизатор", "сцепление"
  • Поиск ведется по названиям деталей в оригинальном каталоге
)}
); }; export default FulltextSearchSection;