Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
24 KiB
02 — Tasarım: CEO'nun açık soruları (gece vardiyası 2026-09-23)
Yöntem: yalnız kod + DB okuması. Tarayıcı/dev sunucusu açılmadı, kod değiştirilmedi. R7 taraması orkestratörden hazır geldi (48 kullanım / 19 dosya), yeniden koşuldu ve bağlam satırları çekildi — sınıflandırma aşağıda. Kontrast değerleri token'lardan hesaplandı (§2.4). Piksel tahminleri "koddan çıkarım" olarak işaretli.
Özet — 5 madde
- Öncelikler kalkarsa sihirbaz 3 adımda kalmalı, 2'ye inmemeli. Üç adım = üç soru olur;
2'ye indirmek ikinci adıma ikinci bir iş yükler (tam da 3. adımdan çıkardığımız hata) ve
/meraklisinaşemasını,sihirbaz_adimserisini birden bozar. Hüküm §1.2. /meraklisinaşemasında değiştirilecek tek karakter yok. NeSEMA, nearia-label, ne figcaption, ne 4. bölüm anlatımı öncelikleri anlatıyor — grep ile doğrulandı (§1.3). AGENTS.md senkron borcu bu işte sıfır; değişmesi gereken ekran, belge değil.- Kaldırma "veri kaybı" değil ama bir yerde sessiz regresyon üretir:
tercih-farki.tsoncelikler'i kıyaslamaya devam ederse, hiçbir şey değiştirmemiş eski kullanıcı /listem'de kalıcı "Tercihlerin değişmiş → 3 kredi harca" uyarısı görür. Tek dosya, dört nokta (§1.4). Ayrıca dünkü raporumun eksiği: öncelikler yalnız prompt tonuna dokunmuyor,tercih-degerlendirme.ts:59üzerinden değerlendirme satırlarına da dokunuyor. - R7 hüküm: tek commit, 28 satır. 48 kullanımın 26'sı gerçek metin, 2'si placeholder (= 28 düzeltilecek), 11'i dekoratif ikon, 4'ü fonksiyonel ikon (ayrı kural, 1.4.11), 1'i devre dışı durum (WCAG muaf), 4'ü dev paneli (kapsam dışı). Büyük punto: 0 — hiçbiri 18,66 px kalın / 24 px eşiğini geçmiyor, yani 28'inin de 4,5:1 borcu var.
- URAP takasının telafisi tek cümlelik ve sıfır yeni eleman: özet paragrafın ilk
virgülüne "devlet üniversitesi" / "vakıf üniversitesi" girer. Yan kazanç: bugünkü "Tür"
kartı zaten 6
uniturdeğerinin 4'ünde bozuk metin basıyor ("Kktc", "Vakıf Myo", "Yurtdısı Kamu" —trBaslikDuzenitr-TR küçültmesi,slug.ts:56-64).
1. "Öncelikler" kalkarsa — son adımın tasarımı
Kaynak: sihirbaz-adimlar.tsx:432-492 (3. adım paneli), :224-231 (adım göstergesi),
:495-540 (alt çubuk), sihirbaz-sabitler.ts:10-18 (ONCELIKLER).
1.1 (a) Tek ekran taslağı — 375 px
Bugün 3. adımda: h3 "Üniversite tipi & öncelikler" + alt satır + "ÜNİVERSİTE TİPİ" etiketi
- 3-4 çip + "SENİN İÇİN ÖNEMLİ OLAN" etiketi + 7 çip (375 px'te ~4 satıra sarıyor)
- 2 satırlık açıklama. Kalkınca:
375 px · DialogContent (max-h-[92dvh], p-6, dikey ortalı) · sihirbaz-modal.tsx:41
┌───────────────────────────────────────────┐
│ (✕) │ ← kanonik dialog çarpısı, size-9,
│ │ border-slate-200 (dialog.tsx varsayılanı)
│ ▬▬ ▬▬ ▬▬▬▬▬ Adım 3/3 │ ← :224-231 aynen kalır
│ │ metin text-slate-500 (bugün 400, bkz. §2)
│ │
│ Devlet mi, vakıf mı? │ ← h3, font-heading text-lg font-bold
│ Seçimin hem yapay zekâ listende hem │ ← p, text-sm text-slate-500
│ sonuç sayfasındaki ücretsiz tabloda │ (bu cümle doğru: meraklisina-icerik:116-117)
│ geçerli olur. │
│ │
│ ┌─────────────┐ ┌───────────────────────┐│ ← mevcut <Cip>, canliFacetler sayılarıyla
│ │ Devlet 412 │ │ Vakıf (burslu olursa) ││ yeni bileşen yok
│ └─────────────┘ │ 288 ││
│ └───────────────────────┘│
│ ┌──────────────┐ │
│ │ Fark etmez │ │
│ └──────────────┘ │
│ │
│ ·· min-h tabanı: boş alan (bkz. 1.1-c) ··│
│ │
│───────────────────────────────────────────│ ← border-t border-slate-100 pt-4 (mevcut)
│ ← Geri Listemi oluştur → │ ← CTA deseni doğru: metin + ArrowRight size-4
└───────────────────────────────────────────┘
Üç karar, gerekçesiyle:
- "ÜNİVERSİTE TİPİ" üst etiketi (
:441-444) silinir. h3 artık aynı soruyu soruyor; etiket kalırsa aynı soru ekranda iki kez yazar. (Adım 1-2'deki etiketler yerinde kalır — oralarda h3 ile etiket farklı şeyler söylüyor.) - h3 soru cümlesine döner: "Üniversite tipi & öncelikler" → "Devlet mi, vakıf mı?" Adım 1 ve 2 de tek soru sorduğu için sihirbaz üç adımda üç soru olur; CEO §5-1'in (a) şıkkının ekran karşılığı bu.
- Modal yüksekliği — tek gerçek risk ve tek satırlık çözümü.
TransitionPanelpanel yüksekliğini ölçüp animasyonla geçiriyor (:207-211,:246-259); 3. adım bugün en uzun panellerden biri, kalkınca en kısası olur (koddan çıkarım: ~%50 kısalma). Dialog dikey ortalı olduğu için modal hem üstten hem alttan içeri gelir: kullanıcının "Devam"a bastığı nokta, geçişten sonra "Listemi oluştur"un yeni yerine yakın düşer. O buton kredi harcayan butondur; yanlış basma bedeli para. Çözüm: yalnız 3. adım panelinemin-h-[Npx]ver, N = 1. adım panelinin 375 px'teki ölçülen yüksekliği (yazılımcı ölçer; ben ölçmedim, tarayıcı açmam yasak). Yeni bileşen yok, yeni animasyon yok,prefers-reduced-motiondalı (hareketiAzalt,:249) zaten var ve korunur. Büyüklük: XS.
Aynı commit'e sığan bedava düzeltme: bu dosyada zaten 5 text-slate-400 metin var
(:228, 381, 406, 442, 473); :473 ve :442 bu kesimle ölüyor, kalan üçü (228, 381, 406)
text-slate-500'e çekilsin — R7'nin en görünür üç satırı, ek dosya açmadan kapanır.
1.2 (b) Hüküm: 3 adım kalır, 2'ye inmez
| Kriter | 3 adım (öneri) | 2 adım |
|---|---|---|
| Ekranın tek işi | ✅ her adım tek soru | ❌ 2. adım "il ve tür" — 3. adımdan çıkardığımız hatayı 2'ye taşır |
/meraklisina şeması |
✅ SEMA zaten "3. adım · Devlet / Vakıf" diyor, senkron |
❌ şema + aria-label + figcaption + 4. bölüm anlatımı baştan yazılır |
| Ölçüm | ✅ sihirbaz_adim{1,2,3} serisi kırılmaz |
❌ P4'ten hemen sonra ikinci bir seri kırılması |
| 375 px | ✅ tür çipleri kendi ekranında | ❌ il araması (max-h-56 kaydırmalı liste, :333) + seçilenler + tür çipleri tek panelde; iç kaydırma ile çip satırı üst üste biner |
| Algılanan yük | 3 adım × 1 soru = sihirbazın en sade hâli | 2 adım ama biri iki soruluk — kısalma hissi yok |
Hüküm: 3 adım. Tek karşı argüman "adım sayısı azalsın" hissi; onu zaten öncelikleri silerek alıyoruz (ekranda 7 çip + 2 açıklama satırı eksiliyor), adım birleştirmeye gerek yok.
1.3 (c) /meraklisina mermaid şeması — gereken düzeltme: yok
AGENTS.md şema senkronunu zorunlu tutuyor, o yüzden borcu tek tek doğruladım:
grep -rni "öncelik\|oncelik" src/features/pazarlama/ src/app/meraklisina/ → 0 satır
huni-semasi.tsxSEMA:C("3. adım · Devlet / Vakıf<br/>sayılar hem alanı hem ili hesaba katar")— öncelik geçmiyor, adım sayısı-sırası değişmiyor, havuz kuralı değişmiyor, 24'lük iskelet (5/13/6) değişmiyor, gevşetme sırası değişmiyor, havuz-dışına-çıkamama değişmiyor. Düzenlenecek düğüm yok.aria-label(huni-semasi.tsx:44): "…alan, il ve devlet/vakıf adımlarıyla…" — doğru kalıyor.figcaption: öncelik geçmiyor.meraklisina-icerik.tsx:107-127(4. bölüm): "üçüncü adımdaki devlet/vakıf sayıları da hem alan hem il seçimini hesaba katar" — doğru kalıyor.
Yani bu kesim, belgeyi ekrana değil, ekranı belgeye uyduruyor — CEO §2 doğrulama #9 ile
aynı sonuç. Commit mesajına tek satır yeter:
/meraklisina şeması değişmedi: 3. adım zaten yalnız devlet/vakıf olarak belgeliydi (huni-semasi.tsx SEMA düğümü C).
Tek isteğe bağlı rötuş (zorunlu değil): 3. adımın ekrandaki h3'ü "Devlet mi, vakıf mı?" olunca şemadaki "3. adım · Devlet / Vakıf" etiketiyle kelimesi kelimesine aynı dili konuşur. Şemaya dokunulmaz.
1.4 (d) Kaldırılan alan veride ve kayıtlı raporlarda ne olacak
Kural: hiçbir şey silinmez, yalnız bir kıyas durdurulur. Alan alan:
| # | Yer | Karar | Neden |
|---|---|---|---|
| 1 | types/rapor.ts:71 oncelikler?: string[] |
Kalır (zaten opsiyonel) | Kayıtlı raporlar params JSON'ı olarak duruyor (rapor-actions.ts:91); tip daraltılırsa eski kayıtlar tipten düşer. Göç yok, şema değişikliği yok. |
| 2 | sihirbaz-sabitler.ts:10-18 ONCELIKLER sabiti |
Silinmez | sihirbazDogrula (:108-124) eski localStorage profillerindeki değerleri bu listeye göre süzüyor; sabit silinirse eski profillerin seçimi sessizce düşer. Sabit kalır, yalnız ekranda render edilmez. |
| 3 | sihirbaz-sabitler.ts:132 oncelikNormalize |
Kalır | Eski "İş garantisi" adını eşleyen geriye uyum köprüsü; eski raporlar gösterilirken hâlâ gerekli. |
| 4 | tercih-farki.ts — tek zorunlu değişiklik |
"oncelikler" kıyastan çıkar |
Çıkmazsa: eski raporun params.oncelikler = ["Prestijli üniversite"], yeni profilin s.oncelikler = [] → kumeFarkli true → /listem başlığında kalıcı "Tercihlerin değişmiş" rozeti ve 3 kredilik güncelleme çağrısı, kullanıcı hiçbir şey değiştirmediği hâlde. Dosyanın kendi ilkesine aykırı (:8-12: "olmayan alan değişmiş sayılmaz"). Dokunulacak dört nokta: FarkAlani union (:22-28), FARK_ETIKET (:30-37), tercihFarklari içindeki if (kumeFarkli(params.oncelikler?…)) (:73-75), farkSatirlari içindeki case "oncelikler" (:112-114). |
| 5 | listem-govde.tsx:129-131 "Önceliklerin: …" |
Kalır | Koşullu (params.oncelikler?.length); eski raporda dolu görünür — danışmanın neyi bildiğini dürüst gösterir. Yeni raporda hiç çıkmaz. Sıfır iş. |
| 6 | sihirbaz-sabitler.ts:182-184 prompt satırı |
Kalır | Aynı koşul. Eski bir rapor yeniden üretilirse kullanıcının kaydettiği tercih korunur. |
| 7 | app/api/soru/route.ts:32,77 · lib/ai/rapor.ts:251,279 |
Değişmez | Zaten ?? [] ile null-safe. |
| 8 | tercih-degerlendirme.ts:59-66 "Kolay yerleşme" dalı |
Kalır (ölü değil, geriye uyumlu) | Dünkü raporumun eksiği: öncelikler yalnız gerekçe tonuna değil, tercih değerlendirmesindeki olumlu/çelişki satırlarına da dokunuyor ("Daha güvenli seçenek önceliğini destekliyor"). Yeni kullanıcıda hiç çalışmaz, eski profilde çalışmaya devam eder. Kayıp: güvenli dilim programlarında bir olumlu satırı — kabul edilebilir, çünkü bu satır zaten yalnız 7 çipten birini seçmiş azınlıkta çıkıyordu. |
| 9 | sihirbaz_tamamlandi olayındaki oncelik_sayisi (sihirbaz-adimlar.tsx:524) |
Olayda kalır, hep 0 olur | Alanı kaldırmak Rybbit'te geriye dönük okumayı bozar. Commit mesajına seri kırılması notu (P4'teki kalıp): "bu tarihten sonra oncelik_sayisi her zaman 0'dır." |
Özetle geri alınabilirlik: karar dönerse yalnız 3. adıma çip bloğu ve tercih-farki.ts'e
dört nokta geri konur; veride, DB'de, kayıtlı raporlarda hiçbir şey kaybolmamış olur.
CEO §5-1'deki "ucuz ve geri alınabilir" hükmü kod tarafından doğrulanıyor.
2. R7 — text-slate-400 sınıflandırması (48 kullanım / 19 dosya)
2.1 Sayılar
| Sınıf | Adet | Hüküm |
|---|---|---|
| Gerçek metin (WCAG 1.4.3, 4,5:1 borcu) | 26 | Düzeltilir |
| Placeholder metni (1.4.3 kapsamında) | 2 | Düzeltilir |
Dekoratif ikon / aria-hidden glif |
11 | Sorun değil, dokunulmaz |
| Fonksiyonel ikon (WCAG 1.4.11, 3:1 borcu) | 4 | Ayrı kural, ucuz — aynı commit'e katlanabilir |
Devre dışı durum (disabled:) |
1 | WCAG 1.4.3 muaf, dokunulmaz |
| Dev paneli (kullanıcı görmez) | 4 | Kapsam dışı |
| 48 |
Büyük punto: 0. Eşik 18,66 px kalın ya da 24 px normal. En büyük aday
katalog-arama.tsx:419 placeholder'ı (text-base sm:text-lg = 16/18 px, kalın değil) —
eşiğin altında. Yani 28'inin de borcu 4,5:1, hiçbirine 3:1 indirimi uygulanmıyor.
2.2 Gerçek metin — 26 satır (düzeltilecek)
liste-uretici.tsx:429 (üretim sırasında "sayfayı kapatma" uyarısı) ·
sihirbaz-adimlar.tsx:228 ("Adım 1/3"), :381, :406 ("Seçtiklerin:"), :442, :473 ·
universite-listesi.tsx:26 (il + program sayısı), :65, :75, :86 (başlık sayaçları) ·
giris-form.tsx:159 ("veya" ayracı) ·
katalog-arama.tsx:567 ("Keşfet"), :703 (bölüm başlığı h3), :742 (sağdaki detay, yalnız sm+) ·
bolum-listesi.tsx:21, :66 · program-netleri.tsx:176 (" / {max}" paydası) ·
bolum-program-listesi.tsx:235 ("· 4 yıl") ·
liste-cekmecesi.tsx:131 ("3/24" sayacı), :231 (kesikli "ekle" butonunun etiketi) ·
program-tablosu.tsx:217 (dilim toplamı), :278 ("20 / 1.340 program"), :349 ("· 4 yıl") ·
tercih-profili-kapisi.tsx:369 (<label htmlFor> — form etiketi) ·
secimlerim-paneli.tsx:108 ("3/24") · tercih-haritasi.tsx:525 ("Kilitli tercih" durum metni)
Placeholder (2): sihirbaz-adimlar.tsx:312 · katalog-arama.tsx:419
2.3 Dokunulmayanlar
- Dekoratif ikon (11):
liste-uretici:268·rapor-listesi:258·cta-sira-form:233·sihirbaz-adimlar:304·sayfalama:136(aria-hidden"…") ·katalog-arama:408,:600·kaydet-banner:75·liste-cekmecesi:253·tercih-profili-kapisi:376·program-liste-verileri:52("—" veri yok glifi). Bunları koyulaştırmak metin/ikon hiyerarşisini bozar, kazanç sıfır. - Fonksiyonel ikon (4):
sihirbaz-adimlar:319(aramayı temizle) ·kaydet-banner:102(banner'ı kapat) ·liste-cekmecesi:141(sil),:147(DrawerClose). Bunlar 1.4.3 değil 1.4.11 (3:1) kapsamında ve 2,56:1 ile onu da geçmiyorlar — ama bunlar zaten dünkü R10'da (dokunma hedefi < 44 px) ellenecek butonlar; ikisini aynı commit'te yapmak mantıklı. - Devre dışı (1):
giris-form.tsx:127disabled:text-slate-400— WCAG 1.4.3 devre dışı bileşenleri açıkça muaf tutuyor. Değiştirilirse "tıklanabilir" hissi verir, zarar. - Dev paneli (4):
dev-panel.tsx:185, 232, 239, 320— kullanıcı görmez.
2.4 Hesap ve hedef token
Kaynak: globals.css/Tailwind slate ölçeği, WCAG 2.x göreli parlaklık formülü.
| Renk çifti | Oran | Sonuç |
|---|---|---|
slate-400 (#94A3B8) / beyaz |
2,56:1 | ❌ |
slate-400 / slate-50 (#F8FAFC) |
2,45:1 | ❌ |
slate-500 (#64748B) / beyaz |
4,76:1 | ✅ |
slate-500 / slate-50 |
4,55:1 | ✅ (payı dar) |
slate-500 / slate-100 (#F1F5F9) |
4,34:1 | ❌ — bu zeminde slate-600 (6,92:1) gerekir |
slate-600 (#475569) / beyaz |
7,58:1 | ✅ |
Kural: hedef text-slate-500; yalnız bg-slate-100 üstünde duran satırlarda
text-slate-600. Yeni token icat edilmiyor, palet değişmiyor (palet değişikliği [BİLAL]).
2.5 Hüküm
Tek commit, 28 satır (26 metin + 2 placeholder) → text-slate-500. Fonksiyonel 4 ikon
isteğe bağlı olarak aynı commit'e (R10 ile birlikte daha mantıklı). Kör sed değil:
aynı dosyalarda dokunulmaması gereken 11 dekoratif ikon var, bu yüzden 28 hedefli satır
düzenlemesi. Yeni bileşen yok, yeni sabit yok, düzen değişmiyor, tsc/lint riski yok.
Büyüklük: S–M (~45-60 dk), tek dosyaya değil 15 dosyaya dokunduğu için inceleme yükü
küçük ama geniş → ayrı ve tek amaçlı dal şart.
Bütçe sıkışırsa düzeltilecek 9 satır (sıralı, en yüksek zarardan):
tercih-profili-kapisi.tsx:369— form etiketi; funnel'ın giriş kapısındaki alanın adı.sihirbaz-adimlar.tsx:228— "Adım 1/3"; sihirbazdaki tek yazılı ilerleme göstergesi.sihirbaz-adimlar.tsx:381ve:406— adım 1-2 alan etiketleri (:442/:473K5 ile ölüyor).liste-uretici.tsx:429— "sayfayı kapatma" uyarısı; okunmazsa kullanıcı üretimi yarıda keser, kredi yanar.program-tablosu.tsx:278— "20 / 1.340 program"; /sonuc'ta "daha var mı?" sorusunun tek cevabı.liste-cekmecesi.tsx:131+secimlerim-paneli.tsx:108— "3/24" sayacı; manuel listenin tek geri bildirimi.tercih-haritasi.tsx:525— "Kilitli tercih" durum metni.universite-listesi.tsx:26— en kalabalık hub'daki tek satır üstü bilgi (il + program sayısı).
3. URAP takasının telafisi
3.1 Dün neyi yanlış yaptım — tek cümle
Bir sayfada bilginin "zaten var" olduğunu, o sayfada o bilgiyi hiç aratmadan, farklı bir
sayfa tipindeki (karışık üniversiteli /sonuc ve /bolum listelerindeki Devlet/Vakıf
rozetlerinden) genellemeyle varsaydım — oysa tek üniversitelik detay sayfasında rozet
tekrar olacağı için hiç yok. Doğrulama tek komutmuş:
grep -n "unitur" src/features/katalog/components/universite-icerik.tsx
→ 316-319 (yalnız "Tür" kartı)
grep -n "unitur\|Devlet\|Vakıf" src/features/katalog/components/universite-program-tablosu.tsx
→ 0 satır
Kural: "X bilgisi başka yerde de var" gerekçesi, o dosyada grep'lenmeden kullanılamaz.
3.2 Yan bulgu: takas edilen kart zaten bozuktu
programs tablosunda 6 unitur değeri var: DEVLET (12.142), VAKIF (7.974),
KKTC (1.145), VAKIF MYO (121), YURTDISI KAMU (99), YURTDISI VAKIF (12).
Kart trBaslikDuzeni(uni.unitur) kullanıyor (universite-icerik.tsx:318) ve
slug.ts:56-64 tr-TR küçültmesi yapıyor → ekranda "Kktc", "Vakıf Myo", "Yurtdısı Kamu",
"Yurtdısı Vakıf" yazıyor. Yani 6 değerin 4'ünde bugünkü kart zaten hatalı metin basıyor.
Telafi metni açık bir etiket haritasıyla yazılmalı, trBaslikDuzeni ile değil.
3.3 İki alternatif
Alternatif A — özet paragrafın ilk cümlesine tek sözcük öbeği (ÖNERİLEN)
universite-icerik.tsx:262-266
390 px · /universite/[slug] · ilk ekran
Ana Sayfa › Üniversiteler › Boğaziçi Üniversitesi
[logo] Boğaziçi Üniversitesi Taban
Puanları 2026
Boğaziçi Üniversitesi (İstanbul), devlet üniversitesi; ← TEK EKLENEN ÖBEK
2026 YKS yerleştirme sonuçlarına göre 312 programda (mevcut <p> içinde)
öğrenci aldı; programlar 24 fakülte/yüksekokula
dağılıyor. En iyi taban başarı sıralaması 1.240. …
[ Sıralaman Boğaziçi tabanlarının neresinde? → ] ← ustSiraSatiri (mevcut)
┌──────────────────┐┌──────────────────┐
│ PROGRAM ││ FAKÜLTE / BİRİM │
│ 312 ││ 24 │
└──────────────────┘└──────────────────┘
┌──────────────────┐┌──────────────────┐
│ URAP TÜRKİYE ││ EN İYİ SIRALAMA │ ← ızgara 4 kart, CEO §3-P3 aynen
│ 18 / 198 ││ 1.240 │
│ 2025-2026 ││ │
└──────────────────┘└──────────────────┘
Metin (tam): "{uni.ad}{il ? (${il}) : ""}, {TUR_CUMLESI[uni.unitur]}; {SON_YIL} YKS …"
unitur |
Cümledeki öbek |
|---|---|
DEVLET |
devlet üniversitesi |
VAKIF |
vakıf üniversitesi |
VAKIF MYO |
vakıf meslek yüksekokulu |
KKTC |
KKTC üniversitesi |
YURTDISI KAMU |
yurt dışında bir kamu üniversitesi |
YURTDISI VAKIF |
yurt dışında bir vakıf üniversitesi |
null |
öbek hiç yazılmaz (virgül de yazılmaz — "—" yok, boşluk yok) |
Neden A:
- Sıfır yeni eleman, sıfır düzen değişikliği, sıfır CLS, sıfır mobil taşma riski. Izgara 4 kart kalır; P3'ün kabul kriteri (1) hiç zorlanmaz.
- En çok okunan konumda: cümlenin ilk 6 kelimesi, ad ve ilin hemen yanında. Dün paragrafı "taranabilir değil" diye reddettiğim şey bir sayıydı (18/198 — okuyucunun kafasında ölçeklemesi gereken, gözle aranan bir değer); devlet/vakıf kategorik tek sözcük ve zaten cümlenin öznesine yapışık — aranmıyor, okunuyor.
- Ekran okuyucu tarafı kazanıyor: bugün
dt/ddçiftinde tek başına duran "Tür" yerine, bilgiyi bağlamıyla birlikte veren bir cümle. - Ücret sinyali doğru kullanıcıya gidiyor: Boğaziçi'nde kimse "devlet mi?" diye sormaz; asıl muhatap az bilinen vakıf üniversitesinin sayfasına Google'dan inen öğrenci ve o sayfada ilk okuduğu satır bu cümle.
Alternatif B — "Program" kartının değerinin altına ikinci satır
┌──────────────────┐┌──────────────────┐
│ PROGRAM ││ FAKÜLTE / BİRİM │
│ 312 ││ 24 │
│ Devlet üniv. ││ │ ← eklenen satır
└──────────────────┘└──────────────────┘
Artısı: taranabilir, kart sayısı yine 4. Eksileri: (a) kartın başlığı "PROGRAM", altındaki
satır programla ilgili değil — dt/dd anlamı bozulur; (b) 390 px'te 2 sütunlu ızgarada
kartlar eşit yükseklik aldığı için dört kartın hepsi birer satır uzar, ilk ekrandan
~28 px daha gider; (c) "Vakıf meslek yüksekokulu" 190 px'lik karta sığmaz, kısaltma
uydurmak gerekir. Reddediliyor.
3.4 Öneri
A. Büyüklük XS (tek <p> + bir etiket haritası sabiti, ~12 satır), P3 dalının
aynı commit'ine girmeli — takas ile telafi ayrı commit'lerde giderse arada 198 sayfa
bilgisiz kalır. Kabul kriteri ekle: "/universite/[slug] çıktısında üniversitenin türü
(devlet/vakıf/KKTC/…) tam olarak bir kez, özet paragrafın ilk cümlesinde geçer;
unitur NULL olan kurumda hiç geçmez ve cümlede boşluk/kopuk virgül kalmaz."
Dumandan doğrulaması ucuz: bogazici-universitesi.html'de "devlet üniversitesi" = 1,
koc-universitesi.html'de "vakıf üniversitesi" = 1.
Bilal'in gözle kontrol etmesi gerekenler (375-390 px)
- Sihirbaz, 2. adımdan 3. adıma geçiş — "Devam"a bastıktan sonra modal ne kadar
kısalıyor, "Listemi oluştur" parmağın kaldığı yere geliyor mu? (§1.1,
min-hkararı buna bağlı) - Sihirbaz 3. adım bugünkü hâli — "Senin için önemli olan" çipleri 375 px'te kaç satıra sarıyor?
/universitelerhub'ı — üniversite adının altındaki gri "İstanbul · 312 program" satırı gün ışığında okunuyor mu? (R7'nin en kalabalık yüzeydeki örneği)- Liste üretimi sırasında — "Bu işlem yarım dakika kadar sürebilir, sayfayı kapatma." cümlesi görünüyor mu, yoksa gri mi kayboluyor? (R7 · kredi yakma riski)
/universite/koc-universitesi— bugün "Tür" kartında ne yazıyor; sayfada başka hiçbir yerde "Vakıf" geçmediğini gözle doğrula (§3.1'in görsel karşılığı).
Bilal'den istenen (2 madde)
- CEO §5 soru 1'i cevapla (sihirbazın son adımındaki 7 öncelik çipi kalksın mı).
"Evet" ise uygulanacak her şey yukarıda hazır: tek ekran taslağı, 3 adım hükmü,
/meraklisinaiçin "şema değişmiyor" kanıtı vetercih-farki.ts'teki tek zorunlu düzeltme. ~3 dk. - R7 için bütçe seç: tam iş (28 satır, tek dal, ~45-60 dk, geniş ama sığ inceleme) mi, yoksa §2.5'teki 9 satırlık kısa liste mi. ~2 dk.