Files
kolaytercih/docs/gece-vardiyasi/2026-09-23/02-tasarim-acik-sorular.md
bilalgursen a42a1a9920
All checks were successful
Deploy / deploy (push) Successful in 17s
docs(ekip): 22-23 Eylül vardiya raporları, BACKLOG/KARARLAR/PROTOKOL güncellemeleri
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-23 11:43:11 +03:00

24 KiB
Raw Blame History

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

  1. Ö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_adim serisini birden bozar. Hüküm §1.2.
  2. /meraklisina şemasında değiştirilecek tek karakter yok. Ne SEMA, ne aria-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.
  3. Kaldırma "veri kaybı" değil ama bir yerde sessiz regresyon üretir: tercih-farki.ts oncelikler'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.
  4. 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.
  5. 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 unitur değerinin 4'ünde bozuk metin basıyor ("Kktc", "Vakıf Myo", "Yurtdısı Kamu" — trBaslikDuzeni tr-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ü. TransitionPanel panel 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 paneline min-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-motion dalı (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.tsx SEMA: 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:127 disabled: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):

  1. tercih-profili-kapisi.tsx:369 — form etiketi; funnel'ın giriş kapısındaki alanın adı.
  2. sihirbaz-adimlar.tsx:228 — "Adım 1/3"; sihirbazdaki tek yazılı ilerleme göstergesi.
  3. sihirbaz-adimlar.tsx:381 ve :406 — adım 1-2 alan etiketleri (:442/:473 K5 ile ölüyor).
  4. liste-uretici.tsx:429 — "sayfayı kapatma" uyarısı; okunmazsa kullanıcı üretimi yarıda keser, kredi yanar.
  5. program-tablosu.tsx:278 — "20 / 1.340 program"; /sonuc'ta "daha var mı?" sorusunun tek cevabı.
  6. liste-cekmecesi.tsx:131 + secimlerim-paneli.tsx:108 — "3/24" sayacı; manuel listenin tek geri bildirimi.
  7. tercih-haritasi.tsx:525 — "Kilitli tercih" durum metni.
  8. 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)

  1. 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-h kararı buna bağlı)
  2. Sihirbaz 3. adım bugünkü hâli — "Senin için önemli olan" çipleri 375 px'te kaç satıra sarıyor?
  3. /universiteler hub'ı — ü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)
  4. 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)
  5. /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)

  1. 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ü, /meraklisina için "şema değişmiyor" kanıtı ve tercih-farki.ts'teki tek zorunlu düzeltme. ~3 dk.
  2. 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.