fix: normalize Turkish search and isolate query item matches

This commit is contained in:
2026-09-06 09:22:05 +03:00
parent efec6e434d
commit a34b758430
5 changed files with 48 additions and 15 deletions
+6 -4
View File
@@ -1,3 +1,4 @@
import { normalizeTenderSearch, matchingItemResults } from '../services/tenderSearch';
import React, {createContext, useContext, useState, useEffect, useMemo, useRef } from 'react';
import { parseWebsiteCapabilitiesDynamically } from '../services/webScraperService';
import { havuzuPuanla, profilMetni, profilTerimleri } from '../services/uyum';
@@ -54,19 +55,20 @@ export const AppProvider = ({ children }) => {
// Kalem havuzunda arama: firmanın kendi ürününü ("eldiven", "ortopedik vida")
// hangi ihalelerin teklif cetvelinde geçtiğini bulması için. Kartta yalnızca
// ilk birkaç kalem taşınıyor, tam arama sunucuda yapılıyor.
const [kalemEslesen, setKalemEslesen] = useState(null); // Map(ikn → eşleşen kalemler)
const [kalemSonucu, setKalemSonucu] = useState(null);
const kalemEslesen = matchingItemResults(kalemSonucu, searchQuery);
useEffect(() => {
const q = searchQuery.trim();
if (q.length < 2) { setKalemEslesen(null); return; }
if (q.length < 2) { setKalemSonucu(null); return; }
let iptal = false;
const zaman = setTimeout(() => {
import('../services/kalem')
.then(({ kalemAra }) => kalemAra(q))
.then((sonuclar) => {
if (iptal) return;
setKalemEslesen(sonuclar.length ? new Map(sonuclar.map((s) => [s.ikn, s.eslesen])) : null);
setKalemSonucu({query:normalizeTenderSearch(q),matches:sonuclar.length ? new Map(sonuclar.map((s) => [s.ikn, s.eslesen])) : null});
})
.catch(() => { if (!iptal) setKalemEslesen(null); });
.catch(() => { if (!iptal) setKalemSonucu(null); });
}, 350);
return () => { iptal = true; clearTimeout(zaman); };
}, [searchQuery]);