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:
@@ -36,9 +36,19 @@ export function GET(request: NextRequest) {
|
||||
return NextResponse.json({ error: "Geçersiz offset." }, { status: 400 });
|
||||
}
|
||||
|
||||
// /sonuc tablosunun filtreleri sayfalamada da korunur (bkz. sonucHref)
|
||||
const iller = [
|
||||
...new Set(searchParams.getAll("il").filter((i) => i.trim().length > 0)),
|
||||
].slice(0, 5);
|
||||
const tipParam = searchParams.get("tip");
|
||||
const uniturGrubu =
|
||||
tipParam === "devlet" || tipParam === "vakif" ? tipParam : undefined;
|
||||
|
||||
const { programlar, toplam } = dilimAra(sira, tur, dilimParam as DilimKey, {
|
||||
limit: SAYFA_BOYU,
|
||||
offset,
|
||||
iller,
|
||||
uniturGrubu,
|
||||
});
|
||||
// Tablo satırının kullanmadığı alanlar payload'a girmesin
|
||||
return NextResponse.json({ programlar: programlar.map(programOzetle), toplam });
|
||||
|
||||
@@ -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. */}
|
||||
|
||||
Reference in New Issue
Block a user