fix(danisman): L1-L3, L5, L6 (9) — Türkçe-duyarsız il/bölüm/üniversite eşleşmesi, kısa girdi hatası
- ilAdiNormalize harf katlayarak eşler: IZMIR / izmir / İzmir → İZMİR (program_ara,
il_ozeti, profil evIl). il_ozeti "Afyon"u da bulur.
- program_ara bölüm ve üniversite aramasını katlanmış adla yapar ("isletme",
"bogazici", "ODTÜ"); LIKE jokerleri (%/_) artık her şeyi eşlemez.
- Tek harf / boş girdi ilk kaydı (Abaza Dili, Abdullah Gül) döndürmez; "en az 3
harf" hatası döner.
- Kısaltma tablosunda bozuk satır: dtu → deu (Dokuz Eylül).
- Akış hata logu tam hata nesnesi yerine mesajı basar; cagri.ts kullanılmayan import.
- (8'in devamı) dil seçenekleri veride olan dillerle eşitlendi; doğrulama
"Almanca" süzgecini reddetmesin.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
// İl merkezleri arası kuş uçuşu mesafe (km). Profildeki "evden en fazla N km"
|
||||
// filtresi il düzeyinde çalışır: adres/koordinat tutulmaz (KVKK, §8).
|
||||
import { turkishSlugify } from "./slug";
|
||||
import { IL_MERKEZ, type LatLng } from "./uni-koordinatlar";
|
||||
|
||||
const DUNYA_YARICAP_KM = 6371;
|
||||
@@ -14,13 +15,19 @@ export function kmMesafe(a: LatLng, b: LatLng): number {
|
||||
return Math.round(2 * DUNYA_YARICAP_KM * Math.asin(Math.sqrt(h)));
|
||||
}
|
||||
|
||||
/** DB il adı biçimine (büyük harf, Türkçe) çevirir; bilinmiyorsa null. */
|
||||
/**
|
||||
* DB il adı biçimine (büyük harf, Türkçe) çevirir; bilinmiyorsa null.
|
||||
* Türkçe harfler katlanarak karşılaştırılır: "IZMIR", "izmir", "İzmir" → İZMİR.
|
||||
*/
|
||||
export function ilAdiNormalize(ham: string): string | null {
|
||||
const aday = ham.trim().toLocaleUpperCase("tr-TR");
|
||||
if (aday in IL_MERKEZ) return aday;
|
||||
const aday = turkishSlugify(ham);
|
||||
if (!aday) return null;
|
||||
const iller = Object.keys(IL_MERKEZ).map((il) => ({ il, katli: turkishSlugify(il) }));
|
||||
const tam = iller.find((x) => x.katli === aday);
|
||||
if (tam) return tam.il;
|
||||
// "Afyon" → AFYONKARAHİSAR gibi öneki eşleşen tek il varsa onu al
|
||||
const adaylar = Object.keys(IL_MERKEZ).filter((il) => il.startsWith(aday));
|
||||
return adaylar.length === 1 ? adaylar[0] : null;
|
||||
const adaylar = iller.filter((x) => x.katli.startsWith(aday));
|
||||
return adaylar.length === 1 ? adaylar[0].il : null;
|
||||
}
|
||||
|
||||
/** Ev iline en fazla `km` uzaktaki iller (evin kendisi dahil), yakından uzağa. */
|
||||
|
||||
Reference in New Issue
Block a user