Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
32 KiB
02 — Tasarım: çıkarma turu (gece vardiyası 2026-09-22, Tur 1)
Yöntem: yalnız kod okuması (AGENTS.md gereği tarayıcı/dev sunucusu açılmadı). Piksel yükseklikleri koddan çıkarımdır, ölçülmemiştir; "kaç ekran boyu" rakamları 390×844 varsayımıyla tahmindir ve öyle işaretlidir. Kontrast değerleri token'lardan hesaplanmıştır (hesap §7'de). Analitik raporu (
01-analitik.md) bu rapor yazılırken klasörde yoktu → Rybbit rakamlarıyla eşleştirme yapılamadı; her bulgu "kural" (AGENTS.md/WCAG) ya da "varsayım" olarak işaretlendi. Yapay zekâ mühendisinin raporu (04-liste-maliyet-ve-oneriler.md) yazım sırasında geldi ve iki bulguyu bağımsız olarak doğruluyor — çapraz kontrol §8'de. Kod değiştirilmedi.
Özet — 5 madde
- Akış kolay; ekranlar kalabalık. Sihirbaz 3 adım, ödül tek sayfa — iskelet doğru. Sorun iskelette değil, her ekranın kendi işine ek olarak bir de "ürünü anlatma" işi üstlenmesinde. Beş ekranın dördü tek cümlelik "bu ekranın işi ne?" testini geçemiyor.
- En pahalı gürültü ilk ekranlarda.
/sonuc'un ilk ekranının ~%20'si, içine hiçbir şey eklenmemiş boş gri harita yer tutucusu (manuel-harita.tsx:69-80). Üstünde her sayfada duran sezon bandı (site-top-banner.tsx) şu an geri sayım bile göstermiyor — sadece "takvim açıklanınca burada başlar" diyen bir cümle. - Aynı vaat arka arkaya iki kez satılıyor.
/sonuc'ta girişsiz kullanıcı aynı/girisadresine giden iki büyük paneli üst üste görüyor (tadimlik-satiri.tsx:178vesihirbaz-cagri-karti.tsx:307)./listem'de paketsiz kullanıcıya beş ayrı/paketgirişi var. - 24'lük liste boğmuyor; kilitli 21 satırın tekrarı boğuyor. Detaylar akordeonun arkasında — doğru.
Ama kilitli her satır tek tek açılıp aynı satış kutusunu 21 kez gösteriyor
(
rapor-listesi.tsx:306-323). Tek paywall yeter. - İki kural ihlali açık ve mobil kullanıcıyı vuruyor. (a)
/sonuctablosunda risk yalnız renkli nokta (program-tablosu.tsx:306-314, metin etiketi hiç yok) ve/listem'de etiketsmaltındasr-only(rapor-listesi.tsx:267) → AGENTS.md risk dili kuralı, trafiğin ~%90'ı mobil. (b)/girisbaşlığı sonsuz döngüde yazı animasyonu veprefers-reduced-motionhiç okunmuyor → WCAG 2.2.2 (A).
1. Ekran ekran: sayım ve "bu ekranın işi ne?" testi
Sayım kuralı: bilgi bloğu = ayrı kart/panel/tablo/bant · CTA = tıklanınca akışı ilerleten buton/link
(navbar hariç) · açıklama cümlesi = başlık dışı, okunması beklenen tam cümle · rozet = SectionEyebrow
ya da pill görünümlü etiket.
| Ekran | Blok | CTA | Açıklama cümlesi | Rozet | Tahmini boy (390px) | Tek işi var mı? |
|---|---|---|---|---|---|---|
Ana sayfa (app/page.tsx) |
8 (hero, sorun, nasıl, istatistik+dürüstlük, karşılaştırma, fiyat, SSS, kapanış) | 6 (hero submit, Meraklısına, Paketi incele, +kredi, kapanış CTA, SSS içi yok) | ~28 | 6 SectionEyebrow + "Meraklısına" turuncu pill + 5 puan türü çipi |
~8 ekran (koddan çıkarım) | ❌ İki iş: "sıralamanı al" + "ürünü sat". |
Sihirbaz modal (sihirbaz-adimlar.tsx) |
1 panel, 3 adım | 2 (Geri/Devam) | 4 (adım başına 1, 3. adımda 2) | Adım 1'de ~10 kategori çipi, adım 2'de ≤81 il çipi, adım 3'te ~10 çip | modal, max-h-92dvh |
⚠️ Adım 1-2 tek iş; adım 3'ün iki işi var (üni tipi + öncelikler). |
/sonuc (girişsiz, hazir=1) |
5 (boş harita, tablo, tadımlık, hazır panel, dipnot) | 4 (dilim sekmeleri sayılmadı: Daha fazla, tadımlık→giriş, hazır panel→giriş, satır içi +×20) |
~12 | 1 SectionEyebrow + 3 dilim sekmesi + satır başına Devlet/Vakıf rozeti |
~4,3 ekran | ❌ Üç iş: "ücretsiz tabloyu göster" + "AI'ı tanıt" + "giriş yaptır". |
/listem (paketsiz) |
6 (harita, başlık+aksiyon, uyarı kutuları, 24'lük liste, sohbet, paket kartı) | 5 ayrı /paket girişi + Tercihlerimi düzenle + sohbet gönder |
~14 | Satır başına Devlet/Vakıf + "Pakette" kilidi ×21 | ~4,6 ekran | ❌ İki iş: "listeni göster" + "paketi sat". |
/paket |
4 (başlık bloğu, paket kartı, top-up kartı, yasal dipnot) | 2-3 (Paketi al / Giriş yap, top-up CTA'sı, İade koşulları) | ~9 | 1 SectionEyebrow |
~2 ekran | ❌ İki iş: "ikna et" + "tahsil et". Buraya gelen zaten ikna olmuş. |
Tek işi olmayan ekranlarda hangisi çıkmalı:
- Ana sayfa → satış tarafı kalır (SEO/soğuk trafik oraya iniyor), ama hero ile fiyat arasındaki üç bölüm
(
Sorun,Nasıl çalışıriçindeki istatistik+dürüstlük kartı,Karşılaştırma) toplam ~4 ekran. Kesilecek olan "Sorun" bölümü: üç kart da adayın zaten bildiği şeyi anlatıyor ve akışı ilerletmiyor. - Sihirbaz adım 3 → "Öncelikler" çıkmalı. Kod kendi söylüyor: "listeyi daraltmaz"
(
sihirbaz-adimlar.tsx:487-490) ve/meraklisinaşemasında bu adım hiç yok (huni-semasi.tsx:18: "3. adım · Devlet / Vakıf"). Yani ürünün resmî belgesi ile ekran zaten uyuşmuyor. /sonuc→ "AI'ı tanıt" ile "giriş yaptır" aynı şey; ikisinden biri gider (bkz. K3)./listem→ "paketi sat" kalır ama tek yüzeyde: satır içi kilit kartı. Diğer dördü gürültü./paket→ "ikna et" tarafı küçülür: H1 rakip kıyası yerine ne aldığını söylemeli.
2. Beş kesin kesim
Sıra fayda/riske göre. Hepsi [KARAR] düzeyinde, K5 hariç (o ürün kararı).
K1 — Sezon dışında üst bandı hiç çizme · risk: düşük
src/components/site-top-banner.tsx:91-177 · src/lib/sezon.ts:76 (takvim-belirsiz metni)
Bugün (22 Eyl 2026) SEZON_TAKVIMI[2027] = null → bant geri sayım göstermiyor, yerine 92 karakterlik bir
cümle yazıyor: "2026 yerleştirme verileri yüklendi — 2027 tercih takvimi açıklanınca geri sayım burada
başlar." 390px'te iki satıra sarıyor.
Ne siler: asama === "takvim-belirsiz" iken bandın tamamı (return null).
Neyi kaybederiz: "verimiz taze" sinyali — ama aynı bilgi ana sayfa hero'sunda (app/page.tsx:243-254)
ve her katalog sayfasının VeriKaynagi satırında zaten var, tarihiyle birlikte.
Neden kabul edilebilir: Aksiyonsuz, her sayfada tekrarlayan, hiçbir yere götürmeyen bir bant. Takvim
açıklandığı an kendiliğinden geri gelir (tek kaynak sezon.ts, ek iş yok).
Kazanç: Her sayfanın ilk ekranından ~70-80px + bir cümlelik okuma yükü (koddan çıkarım).
K2 — /sonuc'un boş harita yer tutucusunu kaldır · risk: düşük
src/features/liste/components/manuel-harita.tsx:69-80
Liste boşken aspect-[1050/447] gri kutu çiziliyor: 390px'te ~152px. Sayfaya yeni gelen herkesin
listesi boş, yani bu kutu her zaman ilk ekranın içinde ve içinde "tablodan + ile ekledikçe üniversiteler
haritada belirir" yazıyor.
Ne siler: liste.length === 0 dalındaki tüm blok → return null.
Neyi kaybederiz: (a) "+ ne işe yarar" ipucu, (b) ilk eklemede CLS önleyen yer rezervi.
Neden kabul edilebilir: (a) ipucunun yeri buton değil, + butonunun kendi title'ı ve profilsiz
eklemede çıkan toast — ikisi de zaten var (program-ekle-butonu.tsx:105-110, 69-88). (b) CLS bedeli
yalnız ilk eklemede bir kez ödenir ve harita tablonun üstünde değil altında da durabilir; bugünkü
maliyet her ziyaretçide, her oturumda.
Kazanç: /sonuc ilk ekranında tablo ~152px yukarı çıkar → ilk ekranda 5 yerine ~7 program satırı.
K3 — /sonuc'ta iki giriş panelinden birini kaldır · risk: düşük-orta
src/features/rapor/components/tadimlik-satiri.tsx:114-192 (panel A) ·
src/features/sihirbaz/components/sihirbaz-cagri-karti.tsx:287-325 (panel B)
Hero sihirbazını bitirip girişsiz gelen kullanıcı (?hazir=1) tabloyu geçtikten sonra art arda iki tam
genişlik panel görüyor; ikisinin de CTA'sı aynı /giris adresine gidiyor ve ikisi de aynı şeyi vadediyor:
- A: "24 satırın tamamı için giriş yap — 5 deneme kredin hazır" + "Kredi kartı gerekmez · Google ya da e-posta ile 30 saniyede"
- B: "5 deneme kredinle Yapay Zeka listeni kur — giriş yap" + birebir aynı mikro-kopya.
Ne siler:
?hazir=1dalında B paneli (girisBekliyordalı) hiç render edilmez; A paneli (tadımlık) kalır — çünkü A gösterir, B yalnız anlatır. A zaten ürünün gerçek satır formatını (RaporSatirDetayi, tek kaynak) canlı gösteriyor. Neyi kaybederiz: B'deki "(üretim 3 kredi, kalan 2 kredinle danışmana soru sorarsın)" kredi açıklaması vehazir_panel_goruntulendiölçümü. Neden kabul edilebilir: Kredi açıklaması/giriskartında zaten tekrar ediliyor (giris-karti.tsx:52-66). Ölçüm A'ya taşınır (tadimlik_goruntulendizaten var). Uyarı: Tadımlık havuzu boşsaTadimlikBolumuhiç render edilmiyor (tadimlik-bolumu.tsx:20-21) — o durumda B geri gelmeli, yoksa girişsiz kullanıcı CTA'sız kalır. Yani kesim koşullu: "A varsa B yok".
K4 — Kilitli satırların tek tek açılmasını kapat · risk: düşük
src/features/rapor/components/rapor-listesi.tsx:306-323 (kilitli detay) · :280-296 (chevron butonu)
Paketsiz kullanıcının 24 satırının 21'i kilitli. Her biri tıklanabilir, her biri açılınca aynı kesik
çizgili kutuyu gösteriyor: "Yapay Zeka karar desteği / Bu bölümün neden listende olduğunu ve sıralamana
özel yerleşme riskini paketle gör." Yani aynı satış cümlesi tek sayfada 21 kez.
Ne siler: analizKilitli satırlarda chevron butonu ve satır onClick'i (satır artık tıklanamaz),
:306-323 kilitli detay bloğu.
Neyi kaybederiz: Kilitli satırdan da "Haritada gör" kısayolu (:334-343).
Neden kabul edilebilir: Satır zaten Lock ikonu + "Pakette" etiketiyle durumunu söylüyor (:256-260);
açılınca öğrenen yeni bir şey yok. "Haritada gör" 21 satırda kaybolur ama açık 3 satırda ve haritanın
kendisinde (pin → satır köprüsü) duruyor. Paywall mesajı tek yerde kalır: satır 4'teki kilit kartı.
Kazanç: Öğrenci 21 kere "bir şey mi var?" diye tıklayıp aynı reklamı okumuyor; kilitli satır
tıklanamaz olduğu an dürüstleşiyor.
K5 — Sihirbaz 3. adımdan "Öncelikler"i çıkar · risk: orta · ürün onayı gerekir
src/features/sihirbaz/components/sihirbaz-adimlar.tsx:472-491 · sabit: sihirbaz-sabitler.ts:10-18
3. adım bugün iki karar istiyor: üniversite tipi (3 çip) + öncelikler (7 çip, çoklu seçim). Öncelikler
"listeyi daraltmaz" — yalnız prompt'a bir satır olarak giriyor (sihirbaz-sabitler.ts:182-184). Ve ürünün
resmî akış belgesinde (huni-semasi.tsx) bu adım hiç yok.
Ne siler: 7 çip + 2 açıklama satırı + oncelikler alanı (tip/doğrulama/prompt/fark hesabı geriye
uyumlu bırakılır: eski profillerde dolu kalabilir, yeni akışta boş dizi).
Neyi kaybederiz: AI gerekçelerinin kişisel tonu ("iş bulma kolaylığı" vurgusu), tercihFarki'nda bir
karşılaştırma boyutu, danismaninBildikleri listesinde bir satır (listem-govde.tsx:129-131).
Neden kabul edilebilir: Son adımda "hayatta senin için ne önemli?" diye sormak, bir liste kurma
akışının en yorucu sorusu — hem soyut hem geri dönüşsüz hissettiriyor, hem de çıktıyı somut olarak
değiştirmiyor. Adım 3 tek soruya (Devlet mi, vakıf mı?) inerse sihirbaz üç adımda üç soru olur.
Not: Bu kesim /meraklisina şemasını değiştirmez (şema zaten öncelikleri anlatmıyor); tersine
şemayla ekranı hizalar.
3. Silinebilecekler listesi (K1-K5 dışı)
⬇️ = riski düşük, tek başına alınabilir.
| # | Dosya:satır | Ne siler | Neyi kaybederiz | Neden kabul edilebilir |
|---|---|---|---|---|
| S1 ⬇️ | paket-satinal.tsx:104-119, 189-196 |
Paketi olmayan kullanıcıda top-up kartının tamamı | "Kredi bitti mi?" başlığı ve açıklaması | Kart paketsize zaten satmıyor; girişsizde ikinci, rakip bir CTA ("Önce giriş yap"), girişlide "önce paket gerekir" diyen bir paragraf. Ödeme ekranında satılmayan bir ürünün kartı duruyor. |
| S2 ⬇️ | sohbet-client.tsx:536-548 |
Paketsiz kullanıcıda "Son N kredin — … kredi yükleyip kaldığın yerden devam edersin" satırı | Kredi uyarısı (sayaç kart başlığında zaten var, :350-357) |
Yanlış bilgi: paketsiz kullanıcı /paket'te kredi yükleyemiyor (paket-satinal.tsx:189-196). Ekran "kredi yükle" diyor, gidilen sayfa "yükleyemezsin" diyor. |
| S3 ⬇️ | app/page.tsx:300-336 (Sorun bölümü) |
Ana sayfadaki 3 kartlık "Tercih dönemi neden bu kadar stresli?" bölümü | ~1 ekranlık empati anlatısı | Akışı ilerletmiyor, tek CTA'sı yok, adayın zaten bildiğini söylüyor. Ana sayfayı ~8 ekrandan ~7'ye indirir. |
| S4 ⬇️ | app/page.tsx:207-223 |
"Meraklısına" turuncu pill'i hero'dan değil, SSS'in altına taşı (ya da sil) | Şeffaflık köprüsü | SectionEyebrow'un tam yanında, farklı bir pill dili (turuncu, ArrowUpRight) duruyor — rozet tek kaynağıyla çelişiyor (AGENTS.md). Meraklısına, merak eden için; akışın 3. bölümünde dikkat çalıyor. |
| S5 ⬇️ | listem-govde.tsx:353-357 (rapor-listesi.tsx:353-357) |
"Programlar ve ham veriler ücretsiz" yeşil satırı | Bir güven cümlesi | Aynı sayfada aynı şey 4 farklı cümleyle söyleniyor: H1 (:187), bu satır, kilit kartı (:276-281), paket kartı başlığı (:329-331). Biri yeter; en net olanı kilit kartındaki. |
| S6 ⬇️ | listem-govde.tsx:184-188 |
Paketsiz H1'i "Veriyi ücretsiz incele. Kararı Yapay Zeka ile netleştir." → "24 tercihlik listen" | Bir satış cümlesi | H1 sayfanın işini söylemeli; bugün reklam sloganı. Başlık hiyerarşisi + "ekranın tek işi" kuralı. |
| S7 | app/layout.tsx:95 (pb-28) |
Her sayfanın altındaki sabit 112px boşluk → koşullu hale getir | Yüzen banner çakışma payı | KaydetBanner yalnız girişsiz + ≥3 seçimli kullanıcıda çıkıyor (kaydet-banner.tsx:47); geri kalan herkes her sayfada 112px ölü alan kaydırıyor. Orta iş: sınıf, banner'ın görünürlüğüne bağlanmalı. |
| S8 | giris-baslik.tsx:6-38 |
/giris H1'indeki sonsuz döngülü yazı animasyonu |
6 slogan | Ekranın tek işi e-posta almak; başlık sürekli oynuyor ve prefers-reduced-motion okunmuyor (typing-animation.tsx'te hiç geçmiyor) → WCAG 2.2.2 (A) "Pause, Stop, Hide". Bkz. §7. |
4. Mobil (390px)
Tümü koddan çıkarım; Bilal'in gözle doğrulaması gereken liste en altta.
Sabit krom maliyeti: üst bant (sezon dışı, 2 satır) ~72px + başlık lg altında iki satır
(site-header.tsx:12, flex-wrap) ~100px + mt-4 → ilk ekranın ~%21'i (844px varsayımıyla) içerik
görmeden gidiyor. K1 bunun ~70px'ini geri verir.
| Ekran | Tahmini boy | İlk ekranda CTA var mı? |
|---|---|---|
| Ana sayfa | ~6.900px ≈ 8,2 ekran | ✅ Var. Hero min-h-[calc(100svh-5.5rem)] + justify-center → puan türü çipleri, sıralama alanı ve "Yapay Zeka listemi kur" birlikte görünüyor. Akışın en sağlam ekranı. |
/sonuc (girişsiz) |
~3.650px ≈ 4,3 ekran | ❌ Yok. İlk ekran: bant + başlık + boş gri harita kutusu + ~5 tablo satırı. Ana aksiyon (AI listesi) ~2,4 ekran aşağıda. K2 bunu ~7 satıra çıkarır ama CTA yine de yukarı gelmez. |
/listem (paketsiz) |
~3.900px ≈ 4,6 ekran | ⚠️ Kısmen: harita + H1 + "Tercihlerimi düzenle" görünüyor; satın alma CTA'sı ~1,2 ekran aşağıda (satır 4). |
/paket |
~1.720px ≈ 2 ekran | ⚠️ 844px'te "Paketi al" tam katlamada; 667px'te (iPhone SE) katlamanın altında. S1 (top-up kartını gizle) bunu düzeltmez; H1 bloğunu kısaltmak düzeltir. |
| Sihirbaz modalı | max-h-[92dvh], iç kaydırma |
✅ "Devam" alt çubukta sabit değil, panelin sonunda; adım 2'de il listesi max-h-56 ile kendi içinde kaydırılıyor → modal boyu patlamıyor. İyi çözülmüş. |
Yatay taşma / sıkışma riskleri:
kaydet-banner.tsx:61— tek satırlıkflex(ikon 40px + metin + "Giriş yap, kaydet" butonu + çarpı),sm:kırılımı yok. 390px'te metne ~70-80px kalıyor → başlık kelimesi kelimesine sarıyor, buton eziliyor. Mobilde dikey dizilim gerekiyor.program-tablosu.tsx/rapor-listesi.tsx— program adıtruncate, üniversite adıtruncate: uzun Türkçe adlarda ("İstanbul Medeniyet Üniversitesi", "Elektrik-Elektronik Mühendisliği (İngilizce)") mobilde satırın çoğu üç noktaya gidiyor. Taşma yok ama bilgi yok.titlevar, mobilde işe yaramıyor. Öneri: mobilde program adına 2 satır izni (line-clamp-2), üniversite satırı tek satır kalsın.app/page.tsx:427-467karşılaştırma tablosuoverflow-x-autoiçinde 4 sütun → 390px'te yatay kaydırma gerektiriyor; kaydırılabilir olduğuna dair görsel ipucu (gölge/fade) yok.vhtuzağı yok: herosvhkullanıyor (app/page.tsx:230), modaldvh— doğru.- Sabit alt çubuk × klavye çakışması yok (sabit alt çubuk yalnız
KaydetBanner, form yok).
5. 24'lük liste ekranı — boğuyor mu?
Hayır, yapı doğru. Boğan üç şey var, üçü de tekrardan geliyor.
Doğru olanlar (değiştirme):
- Detay (gerekçe + risk notu + trend) varsayılan kapalı, satır tıklanınca açılıyor (
rapor-listesi.tsx:300). Yani 24 satır aynı anda 72 metin bloğu değil, 24 satır gösteriyor. /sonucham tablosu ile/listemraporu aynı satır dilini paylaşıyor (aynı sütunlar, aynı düzen) — öğrenci ikinci ekranda yeniden öğrenmiyor. Bu iyi ve korunmalı.- Uyarılar (
kapsam.uyarlandi,tekIl) listenin üstünde ve koşullu — her zaman görünmüyorlar.
Boğan üçü:
- Kilitli 21 satırın tekrarı → K4.
- Aynı "ücretsiz/ücretli sınırı" mesajının 4 kez tekrarı → S5 + S6.
- 5 ayrı
/paketgirişi (listem-govde.tsx:288,:369,sohbet-client.tsx:351,:538,:546, ayrıcauser-nav.tsx:64). Tek ekranda beş kapı, "kaç kere soracaksınız" hissi üretiyor. Kalması önerilen: satır içi kilit kartı (bağlamda, satırın tam orada) + sohbet başlığındaki kredi pill'i (aksiyon değil, durum göstergesi). Gidecek: sağdaki büyük paket kartı (:323-386) ile S2.
Öğrenci 24 satırı nasıl okuyor (varsayım — ölçümle doğrulanmalı): sırayla değil, tanıdık ada göre.
Satırda öne çıkan tek şey program adı; tercih numarası (1-24) gri bir daire, dilim (hayal/dengeli/güvenli)
ise satırda hiç görünmüyor — yalnız detay açılınca çıkıyor (rapor-listesi.tsx:81-88). Oysa listenin
tüm değeri o dağılımda. Sadeleştirme önerisi (tek değişiklik): satırlar arasına dilim ayracı koy —
"Hayal (1-5)", "Dengeli (6-18)", "Güvenli (19-24)" gibi 3 ince başlık satırı. Yeni bileşen değil, /sonuc
tablosundaki DILIMLER etiketleri + ikonlarıyla aynı dil (program-tablosu.tsx:45-74), etiket tek kaynağı
DILIM_ETIKET. Böylece 24 satır 3 okunur gruba iner ve "neden bu sırada?" sorusu satır açmadan cevaplanır.
(Bu bir ekleme değil sınıflandırma: kaldırılan 21 kilitli detay kutusunun yerine geliyor.)
Kilitli satırlar dürüst mü? Kısmen.
- ✅ Dürüst: program adı, üniversite, taban sıra ve trend kilitli satırlarda da gerçekten açık — vaat
("Program adları ve taban verileri her zaman ücretsiz",
:278-280) tutuluyor. - ❌ Hayal kırıklığı üreten: (a) kilitli satırın açılabilir görünmesi ama hep aynı reklamı vermesi (K4);
(b) mobilde kilidin karşılığı yalnız bir
Lockikonu — "Pakette" yazısısmaltındasr-only(:259), yani 390px'te sütun sessiz; (c) ilk 3 satırın açık olduğu satırlara bakmadan anlaşılmıyor: kilit kartı satır 4'te belirene kadar öğrenci kaçının açık olduğunu bilmiyor. Liste başlığında tek cümle ("İlk 3 tercihin analizi açık") bu belirsizliği bedava kapatır.
6. URAP genel sıralaması nasıl girer?
Kural olarak kabul edilenler: (1) atıf aktif link olacak ve tek sabit adres olacak:
https://newtr.urapcenter.org/Rankings/2025-2026/GENEL-SIRALAMASI-2025 — Bilal'e gelen izin böyle diyor,
güncellemeler otomatik yansısın diye. (2) Tablo yığını yok. (3) Renk yok: URAP sırası risk dili değildir,
yeşil/kırmızı boyanmaz. (4) Yeni bileşen icat edilmez.
Nereye girmez (baştan reddedilenler): /sonuc tablosu ve /listem 24'lük liste satırları. URAP
üniversite göstergesi, satırlar program satırı; 24 satıra bir sütun daha eklemek tam olarak
istemediğimiz şey. Ayrıca aynı üniversite listede 3 kez geçerse aynı sayı 3 kez tekrarlanır.
Alternatif A — mevcut istatistik ızgarasında takas (ÖNERİLEN)
src/features/katalog/components/universite-icerik.tsx:290-331 — sayfada zaten 4 kartlık bir metrik
ızgarası var. URAP yeni bir kutu açmaz; "Tür" kartının yerine geçer.
/universite/[slug] — 390px
┌──────────────────────────────────────┐
│ [Türkiye haritası] │ col-span-2 (mevcut)
└──────────────────────────────────────┘
┌──────────────────┐┌──────────────────┐
│ PROGRAM ││ FAKÜLTE / BİRİM │ (mevcut)
│ 312 ││ 24 │
└──────────────────┘└──────────────────┘
┌──────────────────┐┌──────────────────┐
│ URAP TÜRKİYE ││ EN İYİ SIRALAMA │ ← "Tür" kartının yerine
│ 18 / 183 ││ 1.240 │
│ 2025-2026 ││ │
└──────────────────┘└──────────────────┘
… tablo …
Kaynak: YÖK Atlas 2026 yerleştirme sonuçları. Son güncelleme: 21 Eylül 2026.
Genel sıralama: URAP Türkiye 2025-2026 (urapcenter.org). ← atıf, mevcut satırın devamı
└ aktif link
Neden bu:
- Kart sayısı artmıyor. Izgara 4 kart kalıyor,
lgşablonu (grid-cols-[1fr_1fr_1.35fr] grid-rows-2, haritacol-start-3 row-span-2) hiç değişmiyor — 5. kart bu şablonu kırardı. - "Tür" gitmeli çünkü üç yerde daha var: özet paragrafta, tablodaki her program satırının
Devlet/Vakıf rozetinde ve
/sonucfiltresinde. Tek başına bir metrik kartını hak etmiyor. 18 / 183biçimi tek sayının bağlamını taşıyor. "18." tek başına iyi mi kötü mü belli değil; payda öğrencinin kendi kafasında ölçeklemesini sağlıyor. Alt satırda dönem (2025-2026), çünkü sayfadaki diğer tüm sayılar YKS yılına ait — karışmasın.- Atıf ekranı kirletmiyor:
VeriKaynagi(veri-kaynagi.tsx:18-31) zaten sayfanın tek "kaynak" satırı ve tablonun altında duruyor. URAP cümlesi oraya bir cümle olarak ekleniyor, yeni kutu yok. Aktif link şartı karşılanıyor, görünürlük sayfa altında kalıyor. - Boş durum: URAP'ta olmayan üniversitede (vakıf MYO'lar, KKTC, yeni kurulanlar) kart hiç
çizilmez ve "Tür" kartı yerinde kalır. Yani ızgara her zaman 4 hücre, hiçbir sayfada "—" gösterilmiyor.
Veri kapsamı
docs/ekip-raporlari/2026-09-21/06-uni-veri.md:62'ye göre ~%95 ad eşleşmesi.
Alternatif B — H1 altı özet cümlesine göm
universite-icerik.tsx:261-283'teki özet paragrafın ilk cümlesine:
"Boğaziçi Üniversitesi (İstanbul), URAP 2025-2026 Türkiye genel sıralamasında 5.; 2026 YKS yerleştirme sonuçlarına göre 312 programda öğrenci aldı…"
Artısı: sıfır yeni eleman, sıfır düzen değişikliği, en ucuz iş. Eksisi: taranabilir değil. Bilal'in niyeti "öğrenci kolayca görsün"; paragraf ortasındaki sayı gözle taranmaz, mobilde 7 satırlık metnin içinde kaybolur. Ayrıca atıf linki cümlenin ortasında durmak zorunda kalır (kaynak satırında değil) → okuma akışını böler.
Öneri: A. B yalnızca A'nın veri hattı hazır olmadan bir şey yayımlamak gerekirse geçici çözüm olur.
Tasarımın veri tarafına koyduğu şart (veri-muhendisi'ne): gereken tek alan urap_tr_sira
(06-uni-veri.md:165 şemasında zaten var) artı sıralamadaki toplam üniversite sayısı (payda).
Payda olmadan A alternatifi anlamını kaybeder. "Geçen yıla göre değişim" (Tablo 11) bu sürüme
girmesin — ikinci bir sayı, ikinci bir okuma yükü.
Ayrıca [BİLAL] / ürün uyarısı: 06-uni-veri.md 8 göstergelik bir ilk sürüm öneriyor. Bu gece
"çıkarma" gecesiyse: 8 gösterge = 8 kutu = tam olarak istemediğimiz tablo yığını. Öneri, URAP'ın
tek başına ve takas yoluyla girmesi; kalan 7 gösterge ancak ızgara büyütülmeden, yine takasla ya da
tablo altındaki tek bir satırda toplanarak değerlendirilsin.
7. Kural ihlalleri (kesimden bağımsız, düzeltilmeli)
| # | Dosya:satır | Kural | Kullanıcıya etkisi | Düzeltme | Büyüklük |
|---|---|---|---|---|---|
| R1 | program-tablosu.tsx:306-314 |
AGENTS.md risk dili — "kırmızı/sarı/yeşil her zaman metin etiketiyle" | /sonuc tablosunda risk yalnız renkli nokta, aria-hidden, metin etiketi hiç yok. Renk körü ve ekran okuyucu kullanıcısı için satır risksiz görünüyor. Dünkü vardiyada yan bulgu olarak not düşülmüş, kimse almamış. |
rapor-listesi.tsx:262-270 kalıbını kopyala (nokta + RISK_ETIKET[risk]) |
S |
| R2 | rapor-listesi.tsx:259, 267 |
Aynı kural + mobil öncelik | Etiket sm altında sr-only → 390px'te gören kullanıcı yalnız rengi görüyor. Trafiğin ~%90'ı mobil. |
sr-only sm:not-sr-only → her zaman görünür; sığmıyorsa tek harfli değil, kısaltılmış tam etiket |
S |
| R3 | giris-baslik.tsx:26-38 + components/ui/typing-animation.tsx (dosyada prefers-reduced-motion hiç geçmiyor) |
WCAG 2.2.2 (A) "Pause, Stop, Hide" + prefers-reduced-motion |
Giriş sayfasının H1'i sonsuz döngüde yazılıp siliniyor; durdurulamıyor, hareket azaltma ayarı yok sayılıyor. Vestibüler duyarlılık + dikkat dağıtma; ekranın tek işi form doldurmak. | S8 (kaldır) ya da en az: useReducedMotion() ile tek sabit metne düş |
S |
| R4 | sihirbaz-cagri-karti.tsx:322 (text-white/70 · bg-primary) |
WCAG 1.4.3 kontrast | Hesaplanan oran 2,57:1 (gereken 4,5:1). "Kredi kartı gerekmez · Google ya da e-posta ile 30 saniyede" — tam da tereddüdü kıran cümle, okunmuyor. | text-white/70 → text-white (oranı 3,68:1'e çıkarır; tam uyum için zemin koyulaşmalı — [BİLAL], palet) |
S |
| R5 | sihirbaz-cagri-karti.tsx:301, 337 (text-white/90 · bg-primary) |
WCAG 1.4.3 | 3,26:1. Panel gövde metinleri. | aynı | S |
| R6 | site-top-banner.tsx:120 (opacity-85, text-xs) |
WCAG 1.4.3 | Beyaz üstü --primary zaten 3,68:1; %85 opaklıkla ~3,0:1. Bandın en uzun cümlesi. |
K1 zaten bandı kaldırıyor; sezon içinde opaklık kalksın | S |
| R7 | 48 kullanım, ör. sihirbaz-adimlar.tsx:228, 381, 406, 442, 473 · program-tablosu.tsx:217, 278 |
WCAG 1.4.3 | text-slate-400 (#94A3B8) beyaz üstünde 2,57:1, bg-slate-50 üstünde 2,45:1. Sihirbazın "Adım 1/3" göstergesi, alan başlıkları ("ÜNİVERSİTE TİPİ", "SENİN İÇİN ÖNEMLİ OLAN"), tablo sayaçları okunmuyor. |
Metin taşıyan yerlerde text-slate-400 → text-slate-500 (4,76:1 ✅). Yalnız ikon/dekor kalabilir. |
M (sistemik) |
| R8 | sihirbaz-cagri-karti.tsx:284 |
AGENTS.md CTA deseni | "Listeni gör" butonunda sondaki ArrowRight yok; sitenin diğer tüm funnel CTA'larında var. |
<ArrowRight className="size-4" aria-hidden /> ekle |
XS |
| R9 | app/page.tsx:209-220 |
AGENTS.md rozet tek kaynağı | SectionEyebrow'un tam yanında elle yazılmış turuncu pill duruyor; aynı yerde iki farklı rozet dili. |
S4 (taşı/sil) ya da SectionEyebrow + link |
S |
| R10 | sihirbaz-adimlar.tsx:319 (size-5 = 20px), kaydet-banner.tsx:102 (p-1 + size-4 ≈ 24px), sohbet-client.tsx:344 (size-7 = 28px) |
WCAG 2.5.8 (AA) 24px · ürün hedefi 44px | İl aramasını temizleme, banner'ı kapatma, sohbeti temizleme — hepsi parmakla ıskalanıyor. | size-9/size-11'e çıkar (dialog kapatma çarpısının kanonik size-9 seti zaten var) |
S |
| R11 | program-tablosu.tsx:391, 398 |
Tek kaynak / ölü sınıf | ProgramEkleButonu tabanı size-11 min-h-11 min-w-11; buradan className="size-8 min-h-8 min-w-8" geçiliyor ama cn()/tailwind-merge yok (program-ekle-butonu.tsx:112 düz şablon) → iki sınıf birden DOM'da, hangisinin kazandığı CSS sırasına kalmış. Ana akışın en kritik butonu (+) belirsiz boyutta. |
Ya override'ı kaldır (44px kalsın) ya da cn() kullan; ikisi birden olmasın |
S |
8. Çapraz kontrol — 04-liste-maliyet-ve-oneriler.md (yapay zekâ mühendisi)
Rybbit rakamı gelmedi, ama iki bulgum bağımsız bir kaynakla kanıtlandı:
- K5 (Öncelikler çıksın) → destekleniyor. O raporun 1. maddesi: "Yapay zekâ listeyi kurmuyor, listeyi dolduruyor… hangi dilimde olacağını, satırların sırasını, risk ve trend cümlelerini kod belirliyor." Yani "Öncelikler" çiplerinin listenin yapısına etkisi yok; etkisi yalnız satır başına yazılan tek gerekçe cümlesinin tonunda. Ekranda 7 çip + 2 açıklama satırı karşılığında alınan şey bu kadar.
- §5 kilitli satır bulgusu → destekleniyor ve büyüyor. O raporun 4. maddesi kilitli 21 satırı ürün/fiyat açısından da sorunlu buluyor ("teaser doğru ama teaser'ı deneme kredisiyle ücretlendirmek yanlış"). Benim tarafım yalnız görünüş: aynı satış kutusunun 21 kez tekrarı (K4). İkisi aynı yerde buluşuyor — kilitli satır deneyimi bu gecenin en çok kanıtlı düzeltme alanı.
- Varsayım olarak kalanlar (ölçümsüz): /sonuc'ta iki panelden hangisinin daha çok tıklandığı (K3 hangisinin kalacağını rakam belirlemeli), ana sayfadaki "Sorun" bölümünün kaydırma derinliği (S3), öğrencinin 24 satırı nasıl okuduğu (§5).
Bilal'in gözle kontrol etmesi gerekenler
Tarayıcıyı açmadım; bu listeyi telefonda (390px civarı) açıp bakman yeterli:
/sonuc, girişsiz, yeni sekmede — üstteki boş gri kutu (K2) ve ilk ekranda kaç program satırı göründüğü. Aşağı in: art arda iki turuncu/lacivert giriş paneli (K3) gerçekten üst üste mi?/listem, paketsiz hesapla — 4. satırdaki kilit kartından sonra kilitli satırlardan birine dokun (K4): aynı kutu mu geliyor? Kaç kere/paket'e giden bir şey sayıyorsun?/listemve/sonucrisk sütunu telefonda — nokta var, yazı var mı? (R1/R2)/girissayfası — başlıktaki yazı animasyonu ne kadar sürüyor, duruyor mu? (R3/S8)/paketiPhone SE boyutunda (667px) — "Paketi al" butonu kaydırmadan görünüyor mu?- Sezon bandı — bugün ne yazıyor, kaç satır kaplıyor? (K1)
Bilal'den istenen
- K1-K4'e onay (sezon bandı sezon dışında yok ·
/sonucboş harita kutusu yok ·/sonuc'ta iki giriş panelinden biri yok · kilitli satırlar tek tek açılmıyor) — dördü de geri alınabilir, hepsi ayrı commit olur. ~5 dk okuma. - K5 ürün kararı: sihirbazın 3. adımından "Öncelikler" 7 çipi kalksın mı? Listeyi daraltmıyor ve
/meraklisinaşemasında zaten yok; kalkarsa sihirbaz üç adımda üç soru olur. ~3 dk. - URAP için A alternatifine onay (üniversite sayfasındaki "Tür" kartı → "URAP Türkiye 18/183"
takası, atıf
VeriKaynagisatırına aktif link olarak) ve06-uni-veri.md'deki 8 göstergenin hepsinin birden kutu almaması kararı. ~5 dk.