Üniversite sayfası (canlı referans ekran /universite/ankara-universitesi):
- Program listesi: ad kesilmez/sarar, telefonda taban sıra alt satıra iner,
satır butonları 44 px, tür çipi okunur boyda
- Başlık bloğu lg altında ortalı (logo başlığın üstünde), kimlik hapları
(Devlet/Ankara) navbar ölçüsünde, ikon + metin
- Harita yanında 4 özet kartı (OzetKart): sayı solda iri, ikon sağda;
4. kart URAP Türkiye sırası + piksel sıra şeridi (PixelSira)
- Akademik göstergeler (URAP + YÖK İstatistik) sayfadan "Akademik
göstergeler ›" satırının açtığı alt sayfaya taşındı: kartsız, ortalı,
masonry gösterge kareleri, tek ekrana sığar
- Hover tek turuncu (orange-500); liste satırı adı mavi kalır
- Üst çubuk başlık geçişi (NavBaslik): h1 kaydırılınca üst çubukta logo +
ad belirir; bölüm sayfasında da (yalnız ad)
Tasarım dili:
- DESIGN.md: temel his (§1.1), hover kuralı (§2.1), yazı alt sınırları,
yeni tek kaynak parçalar (§4.8–4.15), lg altı ortala (§5.2), reddedilen
denemeler (§7), ölç-tahmin-etme ve tuzaklar (§9)
- Denetim: gösterge karesi renk istisnası (bg-indigo-500, bg-green-600) ve
site taraması için dört uyarı (minik-yazi, buyuk-harf-etiket, mavi-hover,
iri-sayi-tabular)
Not: universite-icerik.tsx'teki akademik göstergeler bölümü (URAP/YÖK
kartları) Bilal'in commit'lenmemiş işiydi; tasarım değişiklikleriyle aynı
dosyada iç içe olduğu için bu commit'e girdi.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- src/lib/yok-istatistik.ts (scripts/yok-istatistik-uret.py ile üretilir):
üniversite başına örgün öğrenci ve öğretim üyesi, öğrenci/üye oranı ve
Türkiye medyanı; katalog detayına `istatistik` alanı
- /universite-siralamasi: URAP Türkiye sıralaması sayfası (URAP logosu ve
zorunlu urapcenter.org atfıyla), sitemap'e eklendi
Izgara 5 karta çıkamıyor: lg:grid-cols-[1fr_1fr_1.35fr] + lg:grid-rows-2
şablonunda harita 3. sütunu iki satır kaplıyor, kartlara tam 4 hücre kalıyor.
Tür zaten bir metrik değil kategori; sitenin geri kalanında (program tablosu,
rapor listesi, tadımlık, bölüm listesi) başlığın altında çip olarak yaşıyor,
detay sayfası bunu taşımayan tek yüzeydi.
- Tür çipi H1'in altına girdi; sınıf seti program-tablosu.tsx:329-333'ten
birebir kopya (yeni varyant yok). Sayfalama sayfalarında da yazar.
- URAP'ı olmayan 31 sayfada ızgaranın 4. hücresi "Tür" yerine "Toplam
kontenjan" oldu; toplam kontenjanı 0 olan üniversite yok, o hücrede "—"
çıkmıyor.
- UNITUR_ETIKET bileşenin içinden src/lib/unitur.ts'e çıktı (DILIM_ETIKET'in
lib/risk.ts'te durması gibi tek kaynak) ve bölüm listesi rozetleri de buna
bağlandı: "Kktc" → "KKTC", "Vakıf Myo" → "Vakıf MYO".
- Özet cümledeki "…, devlet üniversitesi, …" telafisi kalıyor: tür bir kez
taranabilir çip, bir kez okunabilir cümle olarak geçiyor.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Dün gece bu dalda URAP sırası "Tür" kartının yerini alırken devlet/vakıf
bilgisi URAP'ta yer alan 198 üniversite sayfasından tamamen düştü — gerekçe
"bilgi sayfanın başka yerinde zaten var" idi, doğrulandı ki değil
(bogazici-universitesi.html'de "Devlet" 0 kez, koc-universitesi.html'de
"Vakıf" 0 kez geçiyordu). Bu commit o bilgi kaybının telafisi.
Telafi özet paragrafın ilk virgülünde duruyor: "… (İstanbul), devlet
üniversitesi; 2026 YKS yerleştirme sonuçlarına göre …". Yeni kutu, yeni
bileşen, yeni rozet yok; ızgara 4 kart kalıyor.
Metin `trBaslikDuzeni` ile değil, dünkü commit'te eklenen `UNITUR_ETIKET`
haritasıyla üretiliyor; harita cümle biçimini de taşıyacak şekilde
genişletildi (kart etiketi + cümle öbeği tek kaynakta). `trBaslikDuzeni`
tr-TR küçültmesi yaptığı için 6 `unitur` değerinin 4'ünde bozuk metin
üretiyordu ("Kktc", "Yurtdısı Kamu"). Haritada olmayan ya da NULL bir
değerde öbek hiç yazılmaz, cümlede kopuk virgül kalmaz.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Denetim O3: P2 üç kurumun `unitur`'ünü düzeltince (DEVLET → KKTC /
YURTDISI KAMU) ve P3 "Tür" kartını yalnız URAP dışındaki 31 kurumda
bırakınca, `trBaslikDuzeni`nin tr-TR küçültmesi ("I" → "ı") ekrana
Türkçede olmayan kelimeler bastı: "YURTDISI KAMU" → "Yurtdısı Kamu"
(6 sayfa), "KKTC" → "Kktc" (16 sayfa). Dün bu sayfalar "Devlet"
diyordu; yani kullanıcıya görünen bir gerileme.
Karta özel bir görüntüleme haritası (UNITUR_ETIKET) eklendi:
Devlet / Vakıf / Vakıf MYO / KKTC / Yurt dışı (kamu) / Yurt dışı (vakıf).
Haritada olmayan bir değer için mevcut davranış (`trBaslikDuzeni`) yedek
kalır. `src/lib/slug.ts`'teki `trBaslikDuzeni`ye dokunulmadı — il
adlarında da kullanılıyor ve oradaki davranışı doğru.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
/universite/[slug] metrik ızgarasında takas: URAP listesinde olan
üniversitede "Tür" kartının yerini "URAP TÜRKİYE · 18 / 198 ·
2025-2026" alır, olmayan 31 kurumda "Tür" yerinde kalır. Kart sayısı
4'te kalıyor, lg ızgara şablonu değişmiyor, yeni bileşen yok, hiçbir
sayfada "—" ya da delik yok. Payda kartın içinde: "18." tek başına
yanıltır.
Tablonun altına AYRI ikinci kaynak satırı eklendi; VeriKaynagi
kullanılmadı ve kopyalanmadı, çünkü 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.
Satırda metodoloji uyarısı da var: URAP akademik yayın ve araştırma
performansını ölçer, eğitim kalitesini ya da iş bulma oranını ölçmez.
URAP listesinde olmayan üniversitede eksiklik gizlenmiyor, nedeni tek
cümleyle yazılıyor (KKTC/yurt dışı ile MYO/yeni için ayrı cümle).
URAP'ın yayımlama izni "urapcenter.org adresine aktif bağlantı/atıf
vermek" şartına bağlıdır. Kaynak satırındaki bağlantı bu yüzden gerçek
bir <a href>: adres URAP_KAYNAK_URL sabitinden, target="_blank",
rel="noopener", nofollow YOK. Sıranın göründüğü ekran ile atıfın
göründüğü ekran aynı sayfadır; URAP sayısı yalnız ilk sayfada
gösterildiği için kaynak satırı da yalnız ilk sayfada çiziliyor.
Renk yok, rozet yok; URAP risk dili değildir. /universiteler hub'ında
URAP'a göre sıralama/filtre eklenmedi. URAP 24'lük listeye, /sonuc
tablosuna ve LLM prompt'una girmiyor — dokunulan dosya kümesi bunu
zaten dışlıyor.
veri-kalite.ts'e 5 URAP kontrolü (dosyanın en sonunda, tek satırlık
çağrıyla): (1) her URAP slug'ı bir üniversite sayfasına bağlı —
eşleşmeyen sessizce düşmüyor, adıyla listeleniyor; (2) kayıt sayısı =
URAP_TOPLAM; (3) sıralar 1..N tekrarsız ve boşluksuz; (4) puanlar
sıraya göre azalan; (5) kapsama boşluğu — URAP dışında kalan 150+
programlı bir Türkiye üniversitesi varsa UYARI (ad değişikliği
işareti). Beşi de geçiyor, boşluk 31 kurum.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Katalog 464 oturum → 12 sıra girişi; kart tablonun altında kalıyordu. CtaSiraForm'a
varyant="kompakt" + konum prop'u; olay adları aynı, konum: ust|alt özelliği eklendi;
alan kimlikleri useId ile (aynı sayfada iki form).
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
- derin /bolum ve /universite sayfalarında sıra aralığı hangi yıldan geldiğini
söyler (2025 / 2024 / 2024–2025); 2024 sırası '2025 verisi' diye sunulmaz
- <title> yuvarlanmış rakamlarla ve şablon eki olmadan ≤~86 karakter
- giriş formunda tek geri sayım interval'i (çift sayaç butonu erken açıyordu)
- RYBBIT_HOST sonundaki '/' atılır
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Footer "ÖSYM veya YÖK ile bağlantılı değildir" derken hero'daki kamu kurumu
logosu resmî onay iması taşıyordu. Aynı bilgi kutusu (sınıflar aynen) artık
logo + ayraç yerine metin satırı gösteriyor:
"Veri: YÖK Atlas · son güncelleme <time>9 Ağustos 2026</time>".
- veri-kaynagi.tsx: TARIH_METNI → export KATALOG_TARIH_METNI (tarih
biçiminin tek kaynağı; katalog altı satırıyla birebir aynı biçim)
- page.tsx: next/image import'u kalktı, KATALOG_VERI_TARIHI seo import'una
eklendi
- public/yok-logo.svg silinmedi (karar geri alınabilsin)
Yeni badge tasarlanmadı (mevcut kutu, pill değil). Bu commit diğer P3
commit'lerinden bağımsızdır (tek başına cherry-pick edilebilir).
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
CtaSiraForm'a isteğe bağlı `aciklama` prop'u (yalnız profilsiz karttaki
paragrafın yerine geçer; varsayılan paragraflar aynen kaldı). "Sıralamanla
nereye yerleşirsin?" / "…programlarına yerleşir misin?" başlıkları kalktı:
varsayılan "Sıralamana yakın programlar hangileri?", katalogda
"Sıralaman {ad} tabanlarının neresinde?".
Üniversite ve bölüm sayfaları aynı köprü cümlesini tek sabitten
(KATALOG_CTA_ACIKLAMA) alır; kart /bolum/[slug] sayfasına üniversite
sayfasıyla aynı konumda (liste + sayfalama altı, mt-10) eklendi.
cta_form_goruntulendi ölçümü ve buton deseni değişmedi.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
/bolum/*/sayfa/N: title + description + H1 o sayfanın taban sırası aralığını
taşır (dilimdeki min–max efektif sıra; veri yoksa "taban verisi olmayan
programlar"). Görünür breadcrumb üniversite sayfasındaki desenle eşitlendi
(üst bölüm linki + "Sayfa N").
/universite/*/sayfa/N: description + giriş paragrafı o sayfadaki birim adlarını
sayar (ilk 2 + "ve N birim daha"); dilim tek birimden ibaretse birim içi taban
sırası aralığı eklenir. <title> uzunluk nedeniyle değişmedi.
Dilim hesabı tek yardımcıda (sayfaDilimi); metadata ve gövde aynı hesabı
kullanır. Canonical, robots, sitemap, rota dosyaları ve 1. sayfaların
başlık/açıklaması değişmedi.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Profil çerezinin SSR'da kullanılmasını sağlayarak, sonuç sayfasındaki yönlendirmeleri güncelledik. Artık profil bilgileri URL parametreleri yerine çerezden alınarak işleniyor. Ayrıca, profil çerezi olmayan kullanıcılar için yönlendirme mantığı iyileştirildi. Çeşitli bileşenlerdeki URL oluşturma fonksiyonları güncellenerek, profil bilgileri çerezden okunacak şekilde düzenlendi. Bu değişiklikler, kullanıcı deneyimini artırmayı ve daha tutarlı bir veri akışı sağlamayı hedefliyor.
- tercih-haritasi: viewBox animasyonu transient — kare başına setState
(380ms × ~23 render × 81 path) yerine svg.setAttribute; il path ref
callback'leri key başına stabil; il özetleri/şerit/pin grupları useMemo;
reduce×3+baskinRisk tek geçiş; çift lookup ve çift uniLogoYoluFromAd kalktı
- liste-store: O(1) idSet + useListedeMi/useListeDoluMu primitive selector'ları;
program-ekle-butonu artık tüm listeye abone değil — 50 satırlık tabloda
mutasyon başına 50 yerine yalnız değişen buton render olur
- bolum-program-listesi: decorate-sort-undecorate yerine stable toSorted;
sıralama/sayfalama startTransition'da
- il-secim-haritasi: normalizeIlAdi modül seviyesinde precompute (render
başına ~1000 string normalizasyonu vardı); Map/Set/sort useMemo
- kt-cv-satir utility: uzun tablo satırlarında content-visibility:auto +
contain-intrinsic-size (program/bolum/universite/rapor tabloları)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- lib/sihirbaz.ts ikiye ayrıldı: sihirbaz-sabitler.ts (şema + doğrulayıcılar +
event/storage sabitleri + sonucHref/secimOzeti, izomorfik) ve
sihirbaz-profil.ts (localStorage oku/yaz/sil); 25 tüketicinin importu
sembol bazında bölünerek güncellendi, localStorage anahtar/event değerleri
birebir aynı
- sihirbaz-adimlar(+lazy), hero-form, cta-sira-form, il-secim-haritasi ve
/sonuc'un sihirbaz-modal/sihirbaz-cagri-karti/sira-gerekli bileşenleri
features/sihirbaz/components/ altına taşındı
- sihirbaz-queries.ts ve async SihirbazBolumu sarmalayıcısı /sonuc sayfa
dönüşümüyle birlikte Faz 9'da gelecek (o zamana dek ölü kod olurlardı)
- Davranış değişikliği yok
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>