fix: kurum adi basligi eziyordu (gida ihalesi 'Hastanesi' yuzunden Saglik) — parcalar oncelik sirasiyla taraniyor
This commit is contained in:
@@ -90,9 +90,9 @@ export function openDb({ create = false } = {}) {
|
||||
db.exec(SCHEMA);
|
||||
// Geçiş: sektör zenginleştirmesi ilanın TAMAMINI tarıyordu ve standart
|
||||
// hukuki metin ("e-imza", "numune sunulması") yanlış sınıflandırma üretiyordu.
|
||||
// v2 yalnızca işin konusunu tarar; eski kayıtlar silinip yeniden hesaplanır.
|
||||
// v3: yalnızca işin konusu taranır ve başlık öncelikli; eski kayıtlar silinip yeniden hesaplanır.
|
||||
try {
|
||||
const silinen = db.prepare("DELETE FROM sektor_zengin WHERE kaynak IS NULL OR kaynak <> 'dokuman-v2'").run();
|
||||
const silinen = db.prepare("DELETE FROM sektor_zengin WHERE kaynak IS NULL OR kaynak <> 'dokuman-v3'").run();
|
||||
if (silinen?.changes) console.log(`[history-store] ${silinen.changes} eski sektör kaydı geçersiz kılındı (v2)`);
|
||||
} catch { /* tablo henüz yoksa sorun değil */ }
|
||||
|
||||
|
||||
+5
-4
@@ -121,7 +121,7 @@ function mapAd(ad) {
|
||||
const ikn = getFilter(ad, 'İhale Kayıt No') || ad.adNo || '';
|
||||
const usul = getFilter(ad, 'İhale Usulü') || 'Belirtilmemiş';
|
||||
const ihaleTuru = getFilter(ad, 'İhale Türü') || '';
|
||||
const searchBase = `${ad.title || ''} ${ad.advertiserName || ''}`;
|
||||
const searchBase = `${ad.title || ''} ${ad.advertiserName || ''}`; // yalnızca arama için
|
||||
const kalanGun = daysUntil(tarih);
|
||||
|
||||
let aciliyetBadge = null;
|
||||
@@ -143,7 +143,8 @@ function mapAd(ad) {
|
||||
saat: '',
|
||||
alimTuru: ihaleTuru || 'İhale',
|
||||
usul,
|
||||
sektor: classify(SECTOR_RULES, searchBase, 'Genel'),
|
||||
// Başlık önce, kurum adı yalnızca yedek (bkz. sektorBul)
|
||||
sektor: sektorBul(ad.title || '', ad.advertiserName || ''),
|
||||
brans: ihaleTuru || 'Genel',
|
||||
kurumTipi: classify(INSTITUTION_RULES, ad.advertiserName || '', 'Diğer Kamu Kurumları'),
|
||||
eklenmeZamani: relativeTimeTr(ad.publishStartDate),
|
||||
@@ -338,10 +339,10 @@ async function sektorZenginlestir() {
|
||||
// hukuki metin ("e-imza ile imzalanarak", "numune sunulması")
|
||||
// sınıflandırmayı zehirliyordu.
|
||||
const sek = sektorBul(t.baslik || '', ilanKonusu(det.aciklama || ''));
|
||||
sonuc.push({ id: t.id, sektor: sek, kaynak: 'dokuman-v2' });
|
||||
sonuc.push({ id: t.id, sektor: sek, kaynak: 'dokuman-v3' });
|
||||
} catch (e) {
|
||||
// Metin alınamadıysa 'Genel' yaz — sonsuz yeniden deneme olmasın.
|
||||
sonuc.push({ id: t.id, sektor: 'Genel', kaynak: 'dokuman-v2' });
|
||||
sonuc.push({ id: t.id, sektor: 'Genel', kaynak: 'dokuman-v3' });
|
||||
}
|
||||
}));
|
||||
// Kaynağı yormamak için gruplar arasında kısa duraklama.
|
||||
|
||||
+15
-2
@@ -222,9 +222,22 @@ export function classify(rules, text, fallback) {
|
||||
return fallback;
|
||||
}
|
||||
|
||||
/** İhale metninden sektör. Kaynak ne olursa olsun aynı sonucu verir. */
|
||||
/**
|
||||
* İhale metninden sektör. Parçalar ÖNCELİK sırasına göre TEK TEK denenir.
|
||||
*
|
||||
* Hepsini birleştirip taramak yanlış sonuç verir: kural sırası metin içindeki
|
||||
* konumu ezer. "Gıda ürünleri alınacaktır" + "X DEVLET HASTANESİ" birleştirilirse
|
||||
* Sağlık kuralı (1. sıra) Gıda kuralından (4. sıra) önce eşleşir ve gıda ihalesi
|
||||
* Sağlık görünür. Bu yüzden önce başlığa bakarız; ancak başlık sessizse
|
||||
* yardımcı metinlere (kalem adları, ilan konusu, kurum adı) düşeriz.
|
||||
*/
|
||||
export function sektorBul(...parcalar) {
|
||||
return classify(SECTOR_RULES, parcalar.filter(Boolean).join(' '), 'Genel');
|
||||
for (const p of parcalar) {
|
||||
if (!p) continue;
|
||||
const s = classify(SECTOR_RULES, p, null);
|
||||
if (s) return s;
|
||||
}
|
||||
return 'Genel';
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user