feat(veri): katalog/OG/rapor metinleri yılı veri-yillari.ts'ten okur — 2026 yüklemesi P-C

- "2025 yerleştirme" → SON_YIL, "2026 tercihleri" → TERCIH_YILI, başlık yılı → BASLIK_YILI
- yazdırılabilir rapor dipnotu: "2021–2025" → VERI_ARALIGI
- meraklısına 1. bölüm: efektif sıra açıklaması yılsız
- KATALOG_VERI_TARIHI: 2026-09-21 (2026 verisinin çekim tarihi)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
bilalgursen
2026-09-21 16:53:42 +03:00
parent 38e02e0ed9
commit 3fa5cab906
12 changed files with 40 additions and 28 deletions

View File

@@ -4,6 +4,7 @@ import {
OG_CONTENT_TYPE, OG_CONTENT_TYPE,
OG_SIZE, OG_SIZE,
} from "@/lib/og-sayfa"; } from "@/lib/og-sayfa";
import { SON_YIL, TERCIH_YILI } from "@/lib/veri-yillari";
export const alt = "Bölüm taban puanları ve sıralamaları — KolayTercih"; export const alt = "Bölüm taban puanları ve sıralamaları — KolayTercih";
export const size = OG_SIZE; export const size = OG_SIZE;
@@ -26,6 +27,6 @@ export default async function Image({
return createOgSayfaImage({ return createOgSayfaImage({
eyebrow: "Bölüm", eyebrow: "Bölüm",
title: `${ad} taban puanları`, title: `${ad} taban puanları`,
description: `${sayi}2025 yerleştirme verileri · 2026 tercih rehberi`, description: `${sayi}${SON_YIL} yerleştirme verileri · ${TERCIH_YILI} tercih rehberi`,
}); });
} }

View File

@@ -3,9 +3,9 @@ import {
OG_CONTENT_TYPE, OG_CONTENT_TYPE,
OG_SIZE, OG_SIZE,
} from "@/lib/og-sayfa"; } from "@/lib/og-sayfa";
import { BASLIK_YILI, SON_YIL } from "@/lib/veri-yillari";
export const alt = export const alt = `Tüm bölümlerin taban puanları ve sıralamaları ${BASLIK_YILI} — KolayTercih`;
"Tüm bölümlerin taban puanları ve sıralamaları 2026 — KolayTercih";
export const size = OG_SIZE; export const size = OG_SIZE;
export const contentType = OG_CONTENT_TYPE; export const contentType = OG_CONTENT_TYPE;
@@ -13,6 +13,6 @@ export default async function Image() {
return createOgSayfaImage({ return createOgSayfaImage({
eyebrow: "Katalog", eyebrow: "Katalog",
title: "Tüm bölümlerin taban puanları ve sıralamaları", title: "Tüm bölümlerin taban puanları ve sıralamaları",
description: "Lisans ve önlisans programları · 2025 yerleştirme verileri", description: `Lisans ve önlisans programları · ${SON_YIL} yerleştirme verileri`,
}); });
} }

View File

@@ -1,16 +1,19 @@
import { Suspense } from "react"; import { Suspense } from "react";
import type { Metadata } from "next"; import type { Metadata } from "next";
import { JsonLd, breadcrumbJsonLd, sayfaMetadata } from "@/lib/seo"; import { JsonLd, breadcrumbJsonLd, sayfaMetadata } from "@/lib/seo";
import { BASLIK_YILI, SON_YIL, TERCIH_YILI } from "@/lib/veri-yillari";
import { SiteFooter } from "@/components/site-footer"; import { SiteFooter } from "@/components/site-footer";
import { import {
BolumKatalogu, BolumKatalogu,
BolumKataloguSkeleton, BolumKataloguSkeleton,
} from "@/features/katalog/components/bolum-listesi"; } from "@/features/katalog/components/bolum-listesi";
// Başlıktaki yıl tek kaynaktan (veri-yillari.ts); metadata ve h1 aynı metni okur.
const BASLIK = `Tüm Bölümlerin Taban Puanları ve Sıralamaları ${BASLIK_YILI}`;
export const metadata: Metadata = sayfaMetadata({ export const metadata: Metadata = sayfaMetadata({
title: "Tüm Bölümlerin Taban Puanları ve Sıralamaları 2026", title: BASLIK,
description: description: `Üniversite bölümlerinin ${SON_YIL} yerleştirme taban puanları ve başarı sıralamaları: lisans ve önlisans programları kategori kategori, ${TERCIH_YILI} tercihleri için.`,
"Üniversite bölümlerinin 2025 yerleştirme taban puanları ve başarı sıralamaları: lisans ve önlisans programları kategori kategori, 2026 tercihleri için.",
path: "/bolumler", path: "/bolumler",
}); });
@@ -26,7 +29,7 @@ export default function BolumlerPage() {
/> />
<h1 className="font-heading text-3xl font-bold text-slate-900 sm:text-4xl"> <h1 className="font-heading text-3xl font-bold text-slate-900 sm:text-4xl">
Tüm Bölümlerin Taban Puanları ve Sıralamaları 2026 {BASLIK}
</h1> </h1>
<Suspense fallback={<BolumKataloguSkeleton />}> <Suspense fallback={<BolumKataloguSkeleton />}>

View File

@@ -8,6 +8,7 @@ import {
OG_CONTENT_TYPE, OG_CONTENT_TYPE,
OG_SIZE, OG_SIZE,
} from "@/lib/og-sayfa"; } from "@/lib/og-sayfa";
import { SON_YIL } from "@/lib/veri-yillari";
export const alt = "Üniversite taban puanları ve sıralamaları — KolayTercih"; export const alt = "Üniversite taban puanları ve sıralamaları — KolayTercih";
export const size = OG_SIZE; export const size = OG_SIZE;
@@ -26,7 +27,7 @@ export default async function Image({
if (uni?.programSayisi != null) { if (uni?.programSayisi != null) {
parcalar.push(`${uni.programSayisi.toLocaleString("tr-TR")} program`); parcalar.push(`${uni.programSayisi.toLocaleString("tr-TR")} program`);
} }
parcalar.push("2025 yerleştirme verileri"); parcalar.push(`${SON_YIL} yerleştirme verileri`);
// Logo dosyası varsa OG kartına data URI olarak gömülür; okuma hatası // Logo dosyası varsa OG kartına data URI olarak gömülür; okuma hatası
// kartı düşürmesin diye sessizce logosuz karta düşülür. // kartı düşürmesin diye sessizce logosuz karta düşülür.

View File

@@ -3,9 +3,9 @@ import {
OG_CONTENT_TYPE, OG_CONTENT_TYPE,
OG_SIZE, OG_SIZE,
} from "@/lib/og-sayfa"; } from "@/lib/og-sayfa";
import { BASLIK_YILI, SON_YIL } from "@/lib/veri-yillari";
export const alt = export const alt = `Üniversitelerin taban puanları ve sıralamaları ${BASLIK_YILI} — KolayTercih`;
"Üniversitelerin taban puanları ve sıralamaları 2026 — KolayTercih";
export const size = OG_SIZE; export const size = OG_SIZE;
export const contentType = OG_CONTENT_TYPE; export const contentType = OG_CONTENT_TYPE;
@@ -13,6 +13,6 @@ export default async function Image() {
return createOgSayfaImage({ return createOgSayfaImage({
eyebrow: "Katalog", eyebrow: "Katalog",
title: "Üniversitelerin taban puanları ve sıralamaları", title: "Üniversitelerin taban puanları ve sıralamaları",
description: "Devlet ve vakıf üniversiteleri · 2025 yerleştirme verileri", description: `Devlet ve vakıf üniversiteleri · ${SON_YIL} yerleştirme verileri`,
}); });
} }

View File

@@ -1,16 +1,19 @@
import { Suspense } from "react"; import { Suspense } from "react";
import type { Metadata } from "next"; import type { Metadata } from "next";
import { JsonLd, breadcrumbJsonLd, sayfaMetadata } from "@/lib/seo"; import { JsonLd, breadcrumbJsonLd, sayfaMetadata } from "@/lib/seo";
import { BASLIK_YILI, SON_YIL, TERCIH_YILI } from "@/lib/veri-yillari";
import { SiteFooter } from "@/components/site-footer"; import { SiteFooter } from "@/components/site-footer";
import { import {
UniversiteKatalogu, UniversiteKatalogu,
UniversiteKataloguSkeleton, UniversiteKataloguSkeleton,
} from "@/features/katalog/components/universite-listesi"; } from "@/features/katalog/components/universite-listesi";
// Başlıktaki yıl tek kaynaktan (veri-yillari.ts); metadata ve h1 aynı metni okur.
const BASLIK = `Üniversitelerin Taban Puanları ve Sıralamaları ${BASLIK_YILI}`;
export const metadata: Metadata = sayfaMetadata({ export const metadata: Metadata = sayfaMetadata({
title: "Üniversitelerin Taban Puanları ve Sıralamaları 2026", title: BASLIK,
description: description: `Devlet ve vakıf üniversitelerinin ${SON_YIL} yerleştirme taban puanları, başarı sıralamaları ve kontenjanları — üniversite üniversite, ${TERCIH_YILI} tercihleri için.`,
"Devlet ve vakıf üniversitelerinin 2025 yerleştirme taban puanları, başarı sıralamaları ve kontenjanları — üniversite üniversite, 2026 tercihleri için.",
path: "/universiteler", path: "/universiteler",
}); });
@@ -26,7 +29,7 @@ export default function UniversitelerPage() {
/> />
<h1 className="font-heading text-3xl font-bold text-slate-900 sm:text-4xl"> <h1 className="font-heading text-3xl font-bold text-slate-900 sm:text-4xl">
Üniversitelerin Taban Puanları ve Sıralamaları 2026 {BASLIK}
</h1> </h1>
<Suspense fallback={<UniversiteKataloguSkeleton />}> <Suspense fallback={<UniversiteKataloguSkeleton />}>

View File

@@ -4,6 +4,7 @@ import { KATEGORILER } from "@/lib/kategoriler";
import { CtaSiraForm } from "@/features/sihirbaz/components/cta-sira-form"; import { CtaSiraForm } from "@/features/sihirbaz/components/cta-sira-form";
import { PagePixelDivider } from "@/components/pixel-decor"; import { PagePixelDivider } from "@/components/pixel-decor";
import { Skeleton } from "@/components/ui/skeleton"; import { Skeleton } from "@/components/ui/skeleton";
import { SON_YIL, TERCIH_YILI } from "@/lib/veri-yillari";
const sayi = (n: number) => n.toLocaleString("tr-TR"); const sayi = (n: number) => n.toLocaleString("tr-TR");
@@ -81,11 +82,11 @@ export function BolumKatalogu() {
return ( return (
<> <>
<p className="mt-4 max-w-3xl text-sm leading-7 text-slate-600"> <p className="mt-4 max-w-3xl text-sm leading-7 text-slate-600">
{sayi(hepsi.length)} bölümün 2025 YKS yerleştirme verileri: taban {sayi(hepsi.length)} bölümün {SON_YIL} YKS yerleştirme verileri: taban
puanları, başarı sıralamaları, kontenjanlar ve devlet/vakıf dağılımı. puanları, başarı sıralamaları, kontenjanlar ve devlet/vakıf dağılımı.
Bölüme tıklayınca o bölümü sunan tüm üniversitelerin tablosunu görürsün. Bölüme tıklayınca o bölümü sunan tüm üniversitelerin tablosunu görürsün.
Veriler YÖK Atlas 2025 yerleştirme sonuçlarına dayanır; 2026 tercihleri Veriler YÖK Atlas {SON_YIL} yerleştirme sonuçlarına dayanır;{" "}
için rehber niteliğindedir. {TERCIH_YILI} tercihleri için rehber niteliğindedir.
</p> </p>
<PagePixelDivider seed={29} className="mt-8" /> <PagePixelDivider seed={29} className="mt-8" />

View File

@@ -5,6 +5,7 @@ import { CtaSiraForm } from "@/features/sihirbaz/components/cta-sira-form";
import { PagePixelDivider } from "@/components/pixel-decor"; import { PagePixelDivider } from "@/components/pixel-decor";
import { UniLogo } from "@/components/uni-logo"; import { UniLogo } from "@/components/uni-logo";
import { Skeleton } from "@/components/ui/skeleton"; import { Skeleton } from "@/components/ui/skeleton";
import { SON_YIL, TERCIH_YILI } from "@/lib/veri-yillari";
const sayi = (n: number) => n.toLocaleString("tr-TR"); const sayi = (n: number) => n.toLocaleString("tr-TR");
@@ -49,11 +50,11 @@ export function UniversiteKatalogu() {
return ( return (
<> <>
<p className="mt-4 max-w-3xl text-sm leading-7 text-slate-600"> <p className="mt-4 max-w-3xl text-sm leading-7 text-slate-600">
{sayi(hepsi.length)} üniversitenin 2025 YKS yerleştirme verileri. {sayi(hepsi.length)} üniversitenin {SON_YIL} YKS yerleştirme verileri.
Üniversiteye tıklayınca tüm programlarının taban puanlarını, başarı Üniversiteye tıklayınca tüm programlarının taban puanlarını, başarı
sıralamalarını ve kontenjanlarını fakülte fakülte görürsün. Veriler YÖK sıralamalarını ve kontenjanlarını fakülte fakülte görürsün. Veriler YÖK
Atlas 2025 yerleştirme sonuçlarına dayanır; 2026 tercihleri için rehber Atlas {SON_YIL} yerleştirme sonuçlarına dayanır; {TERCIH_YILI} tercihleri
niteliğindedir. için rehber niteliğindedir.
</p> </p>
<PagePixelDivider seed={63} className="mt-8" /> <PagePixelDivider seed={63} className="mt-8" />

View File

@@ -1,7 +1,8 @@
import { KATALOG_VERI_TARIHI } from "@/lib/seo"; import { KATALOG_VERI_TARIHI } from "@/lib/seo";
import { cn } from "@/lib/utils"; import { cn } from "@/lib/utils";
import { SON_YIL } from "@/lib/veri-yillari";
// Veri tarihinin görünür biçimi ("9 Ağustos 2026") — tek biçim kaynağı; ana // Veri tarihinin görünür biçimi ("21 Eylül 2026") — tek biçim kaynağı; ana
// sayfa hero'sundaki veri satırı da bunu kullanır. // sayfa hero'sundaki veri satırı da bunu kullanır.
export const KATALOG_TARIH_METNI = new Date( export const KATALOG_TARIH_METNI = new Date(
`${KATALOG_VERI_TARIHI}T00:00:00Z`, `${KATALOG_VERI_TARIHI}T00:00:00Z`,
@@ -24,7 +25,7 @@ export function VeriKaynagi({
return ( return (
<p className={cn("mt-3 text-xs leading-5 text-slate-500", className)}> <p className={cn("mt-3 text-xs leading-5 text-slate-500", className)}>
{children} {children}
Kaynak: YÖK Atlas 2025 yerleştirme sonuçları. Son güncelleme:{" "} Kaynak: YÖK Atlas {SON_YIL} yerleştirme sonuçları. Son güncelleme:{" "}
<time dateTime={KATALOG_VERI_TARIHI}>{KATALOG_TARIH_METNI}</time>. <time dateTime={KATALOG_VERI_TARIHI}>{KATALOG_TARIH_METNI}</time>.
</p> </p>
); );

View File

@@ -47,8 +47,8 @@ export function MeraklisinaIcerik() {
öğrencinin Türkiye sıralamasıdır. Senin sıralaman bu sayıdan öğrencinin Türkiye sıralamasıdır. Senin sıralaman bu sayıdan
küçükse (yani daha iyiysen), geçen yılın koşullarında o bölüme küçükse (yani daha iyiysen), geçen yılın koşullarında o bölüme
yerleşebilirdin demektir. Sistemde her programın en güncel taban yerleşebilirdin demektir. Sistemde her programın en güncel taban
sıralaması kayıtlıdır; bir bölümün 2025 verisi henüz oluşmamışsa sıralaması kayıtlıdır; bir bölüm için en son yılın verisi henüz
bir önceki yılınki kullanılır. oluşmamışsa bir önceki yılınki kullanılır.
</p> </p>
</section> </section>

View File

@@ -7,6 +7,7 @@ import { DILIM_ETIKET, RISK_ETIKET, dilimdenRisk } from "@/lib/risk";
import type { RaporParams, RaporSonuc } from "../types/rapor"; import type { RaporParams, RaporSonuc } from "../types/rapor";
import { Skeleton } from "@/components/ui/skeleton"; import { Skeleton } from "@/components/ui/skeleton";
import { YazdirButonu } from "./yazdir-butonu"; import { YazdirButonu } from "./yazdir-butonu";
import { VERI_ARALIGI } from "@/lib/veri-yillari";
// Dilim sütunu: dilim adı + varsayılan riski. Üçüncü dilimde ikisi aynı // Dilim sütunu: dilim adı + varsayılan riski. Üçüncü dilimde ikisi aynı
// kelime ("Güvenli") olduğu için parantez düşer — "Güvenli (Güvenli)" yazmaz. // kelime ("Güvenli") olduğu için parantez düşer — "Güvenli (Güvenli)" yazmaz.
@@ -106,7 +107,7 @@ export async function RaporYazdir() {
<footer className="mt-6 border-t border-slate-300 pt-3 text-[10px] leading-relaxed text-slate-500"> <footer className="mt-6 border-t border-slate-300 pt-3 text-[10px] leading-relaxed text-slate-500">
<p> <p>
Bu rapor KolayTercih tarafından resmî YÖK Atlas verisi (2021–2025 Bu rapor KolayTercih tarafından resmî YÖK Atlas verisi ({VERI_ARALIGI}{" "}
taban sıralamaları, kontenjan ve yerleşme istatistikleri) kullanılarak taban sıralamaları, kontenjan ve yerleşme istatistikleri) kullanılarak
üretilmiştir. Taban sıralamaları her yıl değişir; bu rapor yerleşme üretilmiştir. Taban sıralamaları her yıl değişir; bu rapor yerleşme
garantisi vermez. Tercih listesinin ÖSYM sistemine girilmesi ve nihai garantisi vermez. Tercih listesinin ÖSYM sistemine girilmesi ve nihai

View File

@@ -21,7 +21,7 @@ export const SITE_NAME = "KolayTercih";
* Yalnızca veri GERÇEKTEN değiştiğinde (ingest/refresh sonrası) elle güncelle; * Yalnızca veri GERÇEKTEN değiştiğinde (ingest/refresh sonrası) elle güncelle;
* build zamanına bağlama — her deploy'da değişen lastmod sinyali değersizleşir. * build zamanına bağlama — her deploy'da değişen lastmod sinyali değersizleşir.
*/ */
export const KATALOG_VERI_TARIHI = "2026-08-09"; export const KATALOG_VERI_TARIHI = "2026-09-21";
type SayfaMetadataGirdi = { type SayfaMetadataGirdi = {
title: string; title: string;