// Tadımlık satırı servisi: client sihirbaz kategorisini (localStorage'da
// yaşar, SSR göremez) bildirir; SEÇİM sunucuda yapılır (PRD kısıtı). Havuz
// batch üretilmiştir — bu uç LLM'e istek atmaz, salt SELECT'tir.

import { NextResponse } from "next/server";
import { PUAN_TURLERI, type PuanTuruKey } from "@/types/yokatlas";
import { KATEGORILER } from "@/lib/kategoriler";
import { kategoriSlugBul, tadimlikSec } from "@/lib/tadimlik-havuzu";

const GECERLI_KATEGORI_SLUGLARI = new Set(KATEGORILER.map(kategoriSlugBul));

export async function GET(istek: Request) {
  const url = new URL(istek.url);
  const sira = Number.parseInt(url.searchParams.get("sira") ?? "", 10);
  const tur = url.searchParams.get("tur") ?? "";

  if (
    !Number.isFinite(sira) ||
    sira < 1 ||
    sira > 4_000_000 ||
    !(tur in PUAN_TURLERI)
  ) {
    return NextResponse.json({ tadimlik: null }, { status: 400 });
  }

  const kategoriParam = url.searchParams.get("kategori");
  const kategoriSlug =
    kategoriParam && GECERLI_KATEGORI_SLUGLARI.has(kategoriParam)
      ? kategoriParam
      : undefined;

  const tadimlik = await tadimlikSec(sira, tur as PuanTuruKey, kategoriSlug);
  return NextResponse.json(
    { tadimlik },
    // Satırlar kova granülaritesinde statik; 1 saat cache yeterli.
    { headers: { "Cache-Control": "public, max-age=3600" } },
  );
}
