Merge branch 'gece/0922-urap' into is/0923-uni-tur
This commit is contained in:
@@ -30,6 +30,11 @@ import { UniversiteKonumHaritasi } from "./universite-konum-haritasi";
|
||||
import { uniUlkeKonum } from "@/lib/harita-ulkeler";
|
||||
import { UniversiteProgramTablosu } from "./universite-program-tablosu";
|
||||
import { VeriKaynagi } from "./veri-kaynagi";
|
||||
import {
|
||||
URAP_DONEM,
|
||||
URAP_KAYNAK_URL,
|
||||
URAP_TOPLAM,
|
||||
} from "@/lib/urap-siralama";
|
||||
import { UniLogo } from "@/components/uni-logo";
|
||||
import { uniLogoYolu } from "@/lib/uni-logolar";
|
||||
import { Skeleton } from "@/components/ui/skeleton";
|
||||
@@ -38,6 +43,29 @@ import { BASLIK_YILI, SON_YIL, TERCIH_YILI } from "@/lib/veri-yillari";
|
||||
|
||||
const sayi = (n: number) => n.toLocaleString("tr-TR");
|
||||
|
||||
// Ham `unitur` değerlerinin ekranda görünen karşılığı. `trBaslikDuzeni`
|
||||
// tr-TR küçültmesi yaptığı için ("I" → "ı") ham değerlere uygulanamaz:
|
||||
// "YURTDISI KAMU" → "Yurtdısı Kamu" gibi Türkçede olmayan kelimeler çıkıyor.
|
||||
// İki biçim tek kaynakta durur, çünkü aynı bilgi iki yerde geçiyor:
|
||||
// `kart` = "Tür" kartındaki kısa etiket (yalnız URAP'ta olmayan üniversitede),
|
||||
// `cumle` = özet paragrafın ilk virgülündeki öbek (her üniversitede).
|
||||
// `cumle` cümle ortasında okunacak biçimde küçük harfle başlar; KKTC gibi
|
||||
// kısaltmalar büyük kalır.
|
||||
const UNITUR_ETIKET: Record<string, { kart: string; cumle: string }> = {
|
||||
DEVLET: { kart: "Devlet", cumle: "devlet üniversitesi" },
|
||||
VAKIF: { kart: "Vakıf", cumle: "vakıf üniversitesi" },
|
||||
"VAKIF MYO": { kart: "Vakıf MYO", cumle: "vakıf meslek yüksekokulu" },
|
||||
KKTC: { kart: "KKTC", cumle: "KKTC üniversitesi" },
|
||||
"YURTDISI KAMU": {
|
||||
kart: "Yurt dışı (kamu)",
|
||||
cumle: "yurt dışında bir kamu üniversitesi",
|
||||
},
|
||||
"YURTDISI VAKIF": {
|
||||
kart: "Yurt dışı (vakıf)",
|
||||
cumle: "yurt dışında bir vakıf üniversitesi",
|
||||
},
|
||||
};
|
||||
|
||||
export function uniToplamSayfa(programSayisi: number): number {
|
||||
return Math.max(1, Math.ceil(programSayisi / SAYFA_BOYU));
|
||||
}
|
||||
@@ -109,6 +137,48 @@ function fakulteOzeti({
|
||||
return `${adlar[0]}, ${adlar[1]} ve ${adlar.length - 2} birim daha`;
|
||||
}
|
||||
|
||||
/**
|
||||
* Tablonun altındaki AYRI ikinci kaynak satırı. `VeriKaynagi` kullanılmaz ve
|
||||
* kopyalanmaz: o satır YÖK Atlas'ın yerleştirme yılına ve son güncelleme
|
||||
* tarihine bağlı, URAP'ın dönemi başka — aynı satırda birleşirlerse URAP
|
||||
* verisi YÖK Atlas tarihiyle sunulmuş olur.
|
||||
*
|
||||
* Atıf pazarlık dışı: URAP'ın izni "urapcenter.org adresine aktif bağlantı"
|
||||
* şartına bağlı, o yüzden gerçek <a href>, yeni sekme, rel="noopener" ve
|
||||
* nofollow YOK. Sıra payda ("198 üniversite arasında") ve dönem olmadan
|
||||
* gösterilmez. URAP listesinde olmayan üniversitede sayı yoktur; eksiklik
|
||||
* gizlenmez, nedeni tek cümleyle yazılır.
|
||||
*/
|
||||
function UrapKaynakSatiri({ uni }: { uni: UniDetay }) {
|
||||
if (!uni.urap) {
|
||||
const yurtDisi =
|
||||
uni.unitur === "KKTC" || uni.unitur?.startsWith("YURTDISI");
|
||||
return (
|
||||
<p className="mt-2 text-xs leading-5 text-slate-500">
|
||||
{yurtDisi
|
||||
? "Bu üniversite URAP Türkiye sıralamasında yer almıyor — URAP yalnız Türkiye'deki üniversiteleri sıralıyor."
|
||||
: `Bu üniversite URAP Türkiye Sıralaması ${URAP_DONEM} listesinde yer almıyor.`}
|
||||
</p>
|
||||
);
|
||||
}
|
||||
return (
|
||||
<p className="mt-2 text-xs leading-5 text-slate-500">
|
||||
URAP Türkiye Sıralaması {URAP_DONEM} ({sayi(URAP_TOPLAM)} üniversite
|
||||
arasında) — akademik yayın ve araştırma performansını ölçer; eğitim
|
||||
kalitesini ya da iş bulma oranını ölçmez. Kaynak:{" "}
|
||||
<a
|
||||
href={URAP_KAYNAK_URL}
|
||||
target="_blank"
|
||||
rel="noopener"
|
||||
className="font-medium text-primary hover:underline"
|
||||
>
|
||||
urapcenter.org
|
||||
</a>
|
||||
.
|
||||
</p>
|
||||
);
|
||||
}
|
||||
|
||||
export function uniSayfaMetadata(slug: string, sayfa: number): Metadata {
|
||||
const uni = getUniversiteBySlug(slug);
|
||||
if (!uni) return {};
|
||||
@@ -165,6 +235,14 @@ export function UniversiteIcerik({
|
||||
}
|
||||
|
||||
const ilkSayfa = sayfa === 1;
|
||||
// Devlet/vakıf bilgisi sayfada başka hiçbir yerde geçmiyor (URAP'ta olan
|
||||
// üniversitede "Tür" kartının yerini URAP sırası aldı), o yüzden özet
|
||||
// paragrafın ilk virgülünde duruyor. Haritada olmayan ya da NULL bir
|
||||
// `unitur`'da öbek hiç yazılmaz: cümlede kopuk virgül/boşluk kalmaz ve
|
||||
// ham DB değeri cümlenin içine sızmaz.
|
||||
const turCumlesi = uni.unitur
|
||||
? UNITUR_ETIKET[uni.unitur]?.cumle
|
||||
: undefined;
|
||||
const buYol = ilkSayfa
|
||||
? `/universite/${slug}`
|
||||
: `/universite/${slug}/sayfa/${sayfa}`;
|
||||
@@ -262,8 +340,9 @@ export function UniversiteIcerik({
|
||||
<>
|
||||
<p className="mt-4 max-w-3xl text-sm leading-7 text-slate-600">
|
||||
{uni.ad}
|
||||
{uni.il ? ` (${trBaslikDuzeni(uni.il)})` : ""}, {SON_YIL} YKS
|
||||
yerleştirme sonuçlarına göre{" "}
|
||||
{uni.il ? ` (${trBaslikDuzeni(uni.il)})` : ""}
|
||||
{turCumlesi ? `, ${turCumlesi};` : ","} {SON_YIL} YKS yerleştirme
|
||||
sonuçlarına göre{" "}
|
||||
<strong>{sayi(uni.programSayisi)} programda</strong> öğrenci aldı
|
||||
{uni.fakulteSayisi > 1
|
||||
? `; programlar ${sayi(uni.fakulteSayisi)} fakülte/yüksekokula dağılıyor`
|
||||
@@ -308,17 +387,36 @@ export function UniversiteIcerik({
|
||||
{sayi(uni.fakulteSayisi)}
|
||||
</dd>
|
||||
</div>
|
||||
{/* URAP'ta olan üniversitede "Tür" kartının yeri URAP'a
|
||||
bırakılır (kart sayısı 4'te kalır, ızgara şablonu değişmez);
|
||||
olmayanda "Tür" yerinde durur — hiçbir sayfada boş kutu yok.
|
||||
Payda kartın içindedir: "18." tek başına yanıltır. */}
|
||||
<div className="rounded-xl border border-slate-200 bg-white p-4">
|
||||
<dt className="text-xs font-medium uppercase tracking-wide text-slate-500">
|
||||
Tür
|
||||
</dt>
|
||||
<dd className="mt-1 font-heading text-2xl font-bold text-slate-900">
|
||||
{uni.unitur === "DEVLET"
|
||||
? "Devlet"
|
||||
: uni.unitur
|
||||
? trBaslikDuzeni(uni.unitur)
|
||||
: "—"}
|
||||
</dd>
|
||||
{uni.urap ? (
|
||||
<>
|
||||
<dt className="text-xs font-medium uppercase tracking-wide text-slate-500">
|
||||
URAP Türkiye
|
||||
</dt>
|
||||
<dd className="mt-1 font-heading text-2xl font-bold text-slate-900">
|
||||
{sayi(uni.urap.sira)} / {sayi(URAP_TOPLAM)}
|
||||
<span className="mt-0.5 block font-sans text-xs font-medium text-slate-500">
|
||||
{URAP_DONEM}
|
||||
</span>
|
||||
</dd>
|
||||
</>
|
||||
) : (
|
||||
<>
|
||||
<dt className="text-xs font-medium uppercase tracking-wide text-slate-500">
|
||||
Tür
|
||||
</dt>
|
||||
<dd className="mt-1 font-heading text-2xl font-bold text-slate-900">
|
||||
{uni.unitur
|
||||
? (UNITUR_ETIKET[uni.unitur]?.kart ??
|
||||
trBaslikDuzeni(uni.unitur))
|
||||
: "—"}
|
||||
</dd>
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
<div className="rounded-xl border border-slate-200 bg-white p-4">
|
||||
<dt className="text-xs font-medium uppercase tracking-wide text-slate-500">
|
||||
@@ -371,6 +469,8 @@ export function UniversiteIcerik({
|
||||
veya o yıl yerleşen çıkmayan program).{" "}
|
||||
</VeriKaynagi>
|
||||
|
||||
{ilkSayfa ? <UrapKaynakSatiri uni={uni} /> : null}
|
||||
|
||||
<Sayfalama
|
||||
tabanYol={`/universite/${slug}`}
|
||||
sayfa={sayfa}
|
||||
|
||||
Reference in New Issue
Block a user