// YÖK Atlas veri tipleri ve puan türü sabiti — client ve server ortak tüketir. // Sorgu fonksiyonları @/lib/db'de (server-only) yaşar; buraya runtime bağımlılığı // olan hiçbir şey eklenmez. export type Program = { id: string; isim: string; universite: string; unitur: string | null; il: string | null; fakulte: string | null; tur: string; sure: number | null; sira2025: number | null; sira2024: number | null; sira2023: number | null; sira2022: number | null; sira2021: number | null; puan2025: number | null; kontenjan2025: number | null; yerlesen2025: number | null; }; export const PUAN_TURLERI = { say: "SAYISAL", ea: "EŞİT AĞIRLIK", soz: "SÖZEL", dil: "DİL", tyt: "TYT", } as const; export type PuanTuruKey = keyof typeof PUAN_TURLERI; export type DilimKey = "hayal" | "dengeli" | "garanti"; export type RankResults = { hayal: Program[]; dengeli: Program[]; garanti: Program[]; /** Dilim başına pencereye düşen TOPLAM program sayısı (limit'ten bağımsız) */ toplam: Record; }; /** * /sonuc ham tablosunun satırı: tablo `fakulte` ve `puan2025`'i hiç * kullanmadığı için bu alanlar client'a serileştirilmez (satır başına en * uzun string alanlardan biri fakulte). Katalog sayfaları tam Program kullanır. */ export type ProgramListeSatiri = Omit; export type RankResultsListe = { hayal: ProgramListeSatiri[]; dengeli: ProgramListeSatiri[]; garanti: ProgramListeSatiri[]; toplam: Record; }; // Vakıf sayılan unitur değerleri (bkz. DISTINCT unitur: VAKIF, VAKIF MYO, // YURTDISI VAKIF). Devlet dışı her şey "vakıf" grubuna girer. export type UniturGrubu = "devlet" | "vakif"; /** netler tablosunun bir yılı: yerleşen son kişinin ders bazlı netleri. */ export type ProgramNetSatiri = { yil: number; puanTuru: string | null; tabanPuan: number | null; obp: number | null; tytTrkNet: number | null; tytSosNet: number | null; tytMatNet: number | null; tytFenNet: number | null; aytMatNet: number | null; aytFizNet: number | null; aytKimNet: number | null; aytBioNet: number | null; aytTdeNet: number | null; aytTrh1Net: number | null; aytCog1Net: number | null; aytTrh2Net: number | null; aytCog2Net: number | null; aytDinNet: number | null; aytFelNet: number | null; ydtYdilNet: number | null; }; export type SihirbazFacetleri = { kategoriler: { ad: string; adet: number }[]; iller: { il: string; adet: number }[]; uniturler: { grup: UniturGrubu; adet: number }[]; /** Penceredeki (filtre uygulanmamış) toplam program sayısı */ toplam: number; };