import type { Metadata } from "next"; import { rankWindowFacets, searchByRank } from "@/lib/db"; import { PUAN_TURLERI, type PuanTuruKey } from "@/types/yokatlas"; import { getSession } from "@/lib/session"; import { kullanicininRaporu } from "@/lib/rapor-kaydi"; import { tadimlikSec } from "@/lib/tadimlik-havuzu"; import { SihirbazBolumu } from "@/features/sihirbaz/components/sihirbaz-cagri-karti"; import { TadimlikSatiri } from "./tadimlik-satiri"; import { ProgramTablosu } from "@/components/program-tablosu"; import { ManuelHarita } from "@/components/manuel-liste/manuel-harita"; import { SiteFooter } from "@/components/site-footer"; import { SiraGerekli } from "@/features/sihirbaz/components/sira-gerekli"; export const metadata: Metadata = { title: "Tercih Listeni Kur", // Param uzayı sonsuz + içerik sıralamaya göre kişisel: indexlenmez ama // link değeri follow ile geri akar. robots.txt'te ENGELLEME — noindex'in // görülebilmesi için sayfa taranabilir kalmalı. robots: { index: false, follow: true }, }; export default async function SonucPage({ searchParams, }: { searchParams: Promise<{ sira?: string; tur?: string; sihirbaz?: string; hazir?: string; }>; }) { const params = await searchParams; const sira = Number.parseInt(params.sira ?? "", 10); const turKey: PuanTuruKey = params.tur && params.tur in PUAN_TURLERI ? (params.tur as PuanTuruKey) : "say"; if (!Number.isFinite(sira) || sira < 1 || sira > 4_000_000) { return ( <> ); } // Sihirbaz için: kullanıcının kayıtlı raporu var mı? Listenin kendisi // /listem'de yaşar; burada yalnızca CTA'nın hangi hâlde render edileceği // için varlık bilgisi gerekir. const session = await getSession(); const raporSatiri = session ? await kullanicininRaporu(session.user.id) : null; const facetler = rankWindowFacets(sira, turKey); // Yapay Zeka'sız ham liste: yalnızca sıralamayla ulaşılabilen programlar (dilimli) const hamSonuclar = searchByRank(sira, turKey, { limitPerBucket: 20 }); // Girişsiz tadımlık (İP-B): SSR'da kovaya uyan "genel" satır seçilir; // sihirbaz kategorisi client'ta okunup /api/tadimlik ile kişiselleştirilir. // Girişli kullanıcı gerçek ürünü zaten görebildiği için tadımlık almaz. const tadimlik = session ? null : await tadimlikSec(sira, turKey); return (
{/* Sayfa hiyerarşisi: önce Türkiye haritası, sonra liste. Manuel liste store'una abone olduğundan tablodan "+" ile eklenenler buraya canlı yansır. */} {/* 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 */} {/* Girişsiz tadımlık: gerçek rapor satırı formatında tek örnek. Havuzda içerik yoksa bileşen hiç render edilmez. */} {!session ? ( ) : null} {/* Sihirbaz akışı (CTA + modal) — üretim ve liste /listem'de yaşar, burada yalnızca funnel kartları render edilir */}

Veriler resmî YÖK Atlas kaynağından derlenmiştir. KolayTercih bir karar destek aracıdır; yerleşme garantisi vermez, tercih sorumluluğu adaya aittir.

); }