feat: tadımlık havuzuna üniversite tipi boyutu

Tadımlık satırı batch üretildiği için sihirbazdaki devlet/vakıf seçimini
bilmiyor, vakıf seçen kullanıcıya devlet örneği gösteriyordu. Havuz
anahtarı kova×tür×kategori×tip'e genişledi (migration 0001; mevcut
satırlar tip='genel'). Üretim scripti tip varyantlarını uniturGrubu
filtresiyle seçer; tadimlikSec tip verildiğinde kategori→genel fallback'i
korur ama tip fallback'i YAPMAZ — uygun satır yoksa bileşen gizlenir,
yanlış tipte örnek asla gösterilmez. Client profildeki tipi de gönderir ve
SSR "genel" satırı tipe uymuyorsa fetch bitene kadar gizler.

Not: prod app.db volume'de — `pnpm tadimlik` prod DB'ye karşı ayrıca
koşulmalı.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
bilalgursen
2026-08-09 00:12:25 +03:00
parent 0c6c9da56c
commit 14f9b622b0
8 changed files with 1077 additions and 84 deletions

View File

@@ -29,7 +29,18 @@ export async function GET(istek: Request) {
? kategoriParam
: undefined;
const tadimlik = await tadimlikSec(sira, tur as PuanTuruKey, kategoriSlug);
// Sihirbazdaki devlet/vakıf tercihi: uygun tipte satır yoksa null döner,
// yanlış tipte örnek asla servis edilmez.
const tipParam = url.searchParams.get("tip");
const tip =
tipParam === "devlet" || tipParam === "vakif" ? tipParam : "genel";
const tadimlik = await tadimlikSec(
sira,
tur as PuanTuruKey,
kategoriSlug,
tip,
);
return NextResponse.json(
{ tadimlik },
// Satırlar kova granülaritesinde statik; 1 saat cache yeterli.