feat: /sonuc ham tablosuna sihirbaz il + devlet/vakıf filtresi

Vakıf seçen kullanıcı sonuç tablosunda devlet üniversiteleri görüyordu:
tablo sihirbaz seçimlerini hiç kullanmıyordu. sonucHref artık profildeki
seçimlerden il (tekrarlı) ve tip paramlarını URL'e yazar; tablo SSR'da bu
paramlarla filtrelenir, "daha fazla göster" sayfalaması aynı filtreleri
taşır. Sekmelerin üstünde kaldırılabilir filtre çipleri görünür — çip
kaldırmak yalnızca URL'i günceller, localStorage profiline dokunmaz.

Kategori tabloya bilinçli uygulanmaz (DB'de kategori kolonu yok, JS
filtresi offset/toplam semantiğini bozar); kategori AI listesi ve
tadımlıkta uygulanır.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
bilalgursen
2026-08-09 00:12:08 +03:00
parent 33a260017a
commit 0c6c9da56c
6 changed files with 152 additions and 19 deletions

View File

@@ -28,6 +28,8 @@ export default function SonucPage({
tur?: string;
sihirbaz?: string;
hazir?: string;
il?: string | string[];
tip?: string;
}>;
}) {
return (
@@ -51,6 +53,22 @@ export default function SonucPage({
params.tur && params.tur in PUAN_TURLERI
? (params.tur as PuanTuruKey)
: "say";
// Sihirbaz seçimlerinden gelen tablo filtreleri (bkz. sonucHref):
// il tekrarlı param, tip devlet|vakif allowlist'li
const iller = [
...new Set(
(Array.isArray(params.il)
? params.il
: params.il
? [params.il]
: []
).filter((i) => i.trim().length > 0),
),
].slice(0, 5);
const uniturGrubu =
params.tip === "devlet" || params.tip === "vakif"
? params.tip
: undefined;
if (!Number.isFinite(sira) || sira < 1 || sira > 4_000_000) {
return (
@@ -71,8 +89,14 @@ export default function SonucPage({
{/* Yapay Zeka'dan bağımsız ham tablo — haritanın hemen altında,
sayfanın ana gövdesi; puan türü navbar'daki sıralama
rozetinden değiştirilir */}
<SonucProgramTablosu sira={sira} tur={turKey} />
rozetinden değiştirilir. Sihirbaz seçimleri (il, devlet/
vakıf) URL paramlarıyla tabloya uygulanır. */}
<SonucProgramTablosu
sira={sira}
tur={turKey}
iller={iller}
uniturGrubu={uniturGrubu}
/>
{/* Girişsiz tadımlık: gerçek rapor satırı formatında tek örnek.
Havuzda içerik yoksa bileşen hiç render edilmez. */}