Files
kolaytercih/docs/ekip-raporlari/2026-10-07/tasarimci-gorsel-dogrulama.md
bilalgursen da0e9dff7a docs(ekip): 7–10 Ekim raporları, eval sonuçları, seslendirme betiği
- docs/ekip-raporlari/2026-10-07, 2026-10-09, 2026-10-10 raporları ve ekran görüntüleri
  (ses/ altındaki mp3 dosyaları depoya alınmadı, 38 MB)
- BACKLOG #38: rehber yazılarına "Dinle" düğmesi adayı
- scripts/seslendir.py (Türkçe TTS) ve .gitignore'a .venv-tts/
- scripts/eval/sonuc: 8–10 Ekim revizyon eval çıktıları

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-11 00:33:39 +03:00

12 KiB
Raw Blame History

Tasarımcı raporu — Görsel doğrulama · Paket D2 (çekmece), C (varyant çipi), D1 (sohbet)

Dal v2, HEAD 129c839. Tarayıcı: Claude Browser paneli, http://localhost:3100 (bu checkout'un dev sunucusu; 3000'deki sunucu kolaytercih-v1 klasörünü sunuyordu, kullanılmadı). Sunucuyu ben başlatmadım, kapatmadım — QA sekmesi (tab-1, /giris) aynı panelde açık. Ekran görüntüleri docs/ekip-raporlari/2026-10-07/ekran-tasarimci/ altında (26 dosya, numaralı; aşağıda [NN] ile atıf).

Gerekçe (AGENTS.md tarayıcı istisnası): açılış koreografisi, boy sıçraması, logo kabı kapanırken içerik kayması ve 375'te meta satırının sarması koddan görülemez; bakıldı.

Engel: D1 (sohbet) adımında panel gizlendi (QA sekmesi aktif, "Browser pane is not displayed") — ekran görüntüsü ve tıklama alamadım; ~2 dakika denedim. Sohbette görsel doğrulama yapılamadı; DOM (erişilebilirlik ağacı) ve kod okuması var. Yan etki: tema seçiciyi Koyu'ya aldım (kt-tema localStorage), panel gizli olduğu için geri alamadım — QA koyu temada görüyorsa sebebi bu.

Özet (5 madde)

  1. D2 çekmece — geçti, bir sapmayla. 375/768/1280, açık+koyu: açılışta boy sıçraması yok (iskelet min-h-[70dvh] işe yarıyor), "Yıllara göre" yok, akademik göstergeler çekmecesi (kartlı mod) değişmemiş. Sapma: veri önbellekteyken (2. ve sonraki açılış) logo kareleri hiç görünmüyor, gövde ~0,7–1 s boş kalıp sonra içerik bulanıktan geliyor [07][11][20]. İlk açılışta kareler görünüyor [04][05].
  2. Logo kabı kapanışı (~60 px kayma): gözle rahatsız edici değil — kareler sönerken içerik bulanık (opacity 0 → 1, blur 10 px), kayma bulanıklığın içinde kayboluyor. Karar: mevcut davranış kalsın, crossfade gerekmiyor. Asıl sorun 1. madde (kareler zaten görünmüyorsa koreografi yarım).
  3. C varyant çipi — geçti. "Burslu", "İngilizce", "Burslu · İngilizce", "Burslu · İngilizce (%30)" çipleri üç genişlikte de SATIR_CIP ile tür çipinin ardında; 375'te meta satırı sarıyor, yatay taşma yok [02][13][17][19]. Başkent Tıp satırları artık ayırt ediliyor.
  4. D1 sohbet — görsel doğrulanamadı (panel gizli). DOM'dan: senaryo akışında form geldi, iki soru da DOM'da, aktif soru data-active; role="status" shimmer satırı kodda var. Bulgu: ilerleme göstergesi ekran okuyucuya İngilizce "Questionnaire progress" diyor (ilkelden sızıyor). Shimmer, rota ve geçiş hissi için Bilal'in bakması gerekiyor (aşağıda liste).
  5. pnpm tasarim:denetim: 0 hata, 12 uyarı (hepsi secimlerim-paneli.tsx:236, meraklisina-demo.tsx — bu paketlerin dışı, önceden vardı).

Geçti / geçmedi

Madde Sonuç Genişlik / tema
D2 açılışta boy sıçraması Geçti 375 açık+koyu, 768, 1280
D2 logo kareleri belirip sönüyor (ilk açılış) Geçti 375 açık [04][05]
D2 logo kareleri (önbellekli yeniden açılış) Geçmedi 375 açık ×2, 375 koyu [07][11][20]
D2 içerik bloklarının netleşmesi Geçti hepsi [06][12][15]
D2 kap kapanırken kayma rahatsız mı Hayır — kalsın 375, 768
D2 "Yıllara göre" gitti Geçti 375 [10], koyu [22]
D2 akademik göstergeler çekmecesi değişmedi Geçti 375 koyu [23][24][25]
C varyant çipi görünüyor Geçti 375/768/1280, koyu [02][13][17][19]
C 375'te meta satırı taşıyor mu Taşmıyor, sarıyor 375 [02][19]
C stil §4.15/§4.17 Geçti (kod: SATIR_CIP) —
D1 shimmer akıyor mu Doğrulanamadı (koddan: tw-shimmer keyframe artık tanımlı) —
D1 avatar "rota" Doğrulanamadı (koddan: varyant={canli && aracta ? "rota" : "nabiz"}, sohbet-client.tsx:308) —
D1 soru geçişi sihirbazla aynı Doğrulanamadı (koddan: tek kaynak adim-gecisi.ts) —
D1 375 boy sıçraması / odak halkası Doğrulanamadı (koddan: -m-1 kap + p-1 fieldset, ring-3 = 3 px < 4 px, sığar) —
Reduced-motion Doğrulanamadı (araç emüle edemiyor; koddan aşağıda) —

Bulgular

B1 — Çekmece yeniden açılınca logo sahnesi görünmüyor, gövde ~1 s boş

  • Nerede: src/features/katalog/components/program-ayrinti.tsx:199-204 + src/components/ui/acilis-sahnesi.tsx:95-140 (useLayoutEffect, hazir bağımlılığı).
  • Gördüğüm: 375 açık, Başkent Tıp satırı. İlk açılış: 0,5 s'de mavi kare, 0,8 s'de iki kare, 1,5 s'de içerik üstte net altta bulanık [03]–[06]. Aynı satırı kapatıp yeniden açınca (veri durum === "hazir", fetch yok): 0,3 / 0,6 / 0,9 s karelerinde gövde bembeyaz — ne iskelet ne logo karesi [07][11]; ~1 s'de künye bulanık geliyor [12], sonra içerik. Koyu temada da aynı [20]. 7 kare × 0,3 s'lik üç ayrı denemede kareler hiç yakalanmadı; ilk açılışta 2 karede yakalandı.
  • Olası sebep (koddan çıkarım): yeniden açılışta AcilisSahnesi hazir=true ile monte oluyor; useLayoutEffect içerik portal'a girdiği anda koşuyor, yani çekmece daha ekrana kaymadan (AltSayfa'nın yukarı kayma süresi) logo fazı (0,1–0,86 s) ekran dışında oynuyor; kullanıcıya kalan kısım "kap kapanıyor + içerik bulanık geliyor". D2 raporu bunu "tekrar açılışta sahne yeniden oynar" diye yazmış ama gözle böyle görünmüyor.
  • Kullanıcıya etkisi: her yeniden açılışta 1 s boş beyaz sayfa; "yüklenmiyor mu?" hissi. Çekmece listede çok sık açılıp kapanan bir şey (sıra sıra programlara bakmak).
  • Öneri (yazılımcı): önbellekli açılışta sahneyi hiç oynatma — hazir prop'u yalnız false → true geçişinde sahneyi tetiklesin (ilk render'da true geliyorsa azHareket dalındaki 0,25 s solma yeterli). Alternatif: sahneyi AltSayfa'nın "açıldı" olayına bağlamak. DESIGN.md §4.19 "7 Eki" maddesine "sahne yalnız veri ilk geldiğinde oynar; önbellekli açılış 0,25 s solma" cümlesi.
  • Büyüklük: küçük (tek bileşende koşul).

B2 — Logo kabı kapanırken içerik kayması: kabul

  • Nerede: acilis-sahnesi.tsx kartsız dal (kapat = animate(logo, { height: [.., 0] })).
  • Gördüğüm: 768'de 0,4 → 0,9 s karelerinde çekmece başlığı 16 px yukarı çıktı, künye o sırada blur 10 px'ten geliyordu [14][15]; 375'te benzer. Kayma bulanık içeriğin altında kalıyor, göz "yerleşme" olarak okuyor, zıplama değil.
  • Karar: mevcut davranış kalsın; crossfade (kap absolute) için gerekçe yok. B1 çözülünce bu faz zaten yalnız ilk açılışta oynayacak.

B3 — Sahne toplam süresi ≈ 2 s, belge "≈ 1 s" diyor

  • Nerede: acilis-sahnesi.tsx (ICERIK_BASI 0,95 + 8 blok × 0,08 + 0,5 s netleşme = son blok 2,0 s'de biter); docs/tasarim/DESIGN.md §4.19 "toplam ≈ 1 s".
  • Gördüğüm: 375 ilk açılışta 1,5 s'de "Son yerleşenin netleri" başlığı hâlâ bulanık [06].
  • Etki: üstteki içerik okunurken alt kısım bulanık; küçük ama belgeyle çelişiyor.
  • Öneri: ya belgeye gerçek sayı ("≈ 2 s; ilk blok 1 s'de net") ya da blok arası 0,08 → 0,05 ve netleşme 0,5 → 0,35. Büyüklük: küçük.

B4 — Çekmece gövdesi tutamaç ve çarpının altından maskesiz geçiyor

  • Nerede: src/components/ui/alt-sayfa.tsx:624-631 (AltSayfaGovde overflow-y-auto), çarpı program-ayrinti.tsx:181 (absolute top-3 right-3 z-10).
  • Gördüğüm: 375 açık ve koyu, gövde kaydırılınca "AYT Matematik / 40 · 35 · 31,75 · 36" satırı tutamacın ve çarpının altından geçiyor, üçüncü sütunun son rakamı çarpının arkasında [09][22].
  • Etki: üst satır okunmaz, çarpıya basınca tablo hücresine basılmış hissi. D2'ye özgü değil (liste çekmecesi de aynı), ama içerik uzadığı için burada ilk kez belirgin.
  • Öneri: AltSayfaGovde üstüne 48 px bg-card → saydam mask-image ya da tutamaç şeridine bg-card zemin; çarpı kutusu zaten bg-popover. Tek kaynak alt-sayfa.tsx; tüm çekmeceler kazanır. Büyüklük: küçük-orta.

B5 — "Mezun istihdamı" paragrafı küçük harfle başlıyor

  • Nerede: program-ayrinti.tsx:471 — `mezunların %${…}'i kayıtlı çalışıyor`.
  • Gördüğüm: 375 açık ve koyu: "mezunların %95,5'i kayıtlı çalışıyor, ilk iş ortalama…" [09][22].
  • Etki: metin kuralı (§10.4, cümle başı büyük); özensiz görünüyor.
  • Öneri: parçalar birleştikten sonra ilk harfi toLocaleUpperCase("tr") ile büyüt (ya da "Mezunların" yaz). Büyüklük: trivial.

B6 — Soru formu ilerleme göstergesi ekran okuyucuya İngilizce

  • Nerede: src/features/rapor/components/sohbet-anketi.tsx:124-130 — QuestionnaireProgress render={(props, state) => <div {...props}>…}; props içinde ilkelin aria-label="Questionnaire progress"i geliyor (node_modules/@shadcn/react/dist/questionnaire/index.js). DOM'da doğrulandı: progressbar "Questionnaire progress".
  • Etki: VoiceOver/TalkBack Türkçe akışta İngilizce etiket okuyor (arayüz metni kuralı; WCAG 3.1.2).
  • Öneri: <div {...props} aria-label="Soru ilerlemesi"> (spread'den sonra). Büyüklük: trivial.

B7 — Soru formunun başlığı başlık elemanı değil

  • Nerede: sohbet-anketi.tsx:121 — "Listeni nasıl değiştirelim?" p içinde; form aria-labelledby ile ona bağlı (iyi), ama soru metinleri (QuestionnaireTitle → legend) DOM'da generic görünüyor.
  • Etki: küçük; form adı doğru okunuyor. Not olarak; düzeltme istemiyorum.

B8 — Reduced-motion (koddan çıkarım, araç emüle edemiyor)

  • Çekmece: acilis-sahnesi.tsx useReducedMotion → logo display:none, 0,25 s solma. Uygun (§6).
  • Soru geçişi: adim-gecisi.ts hareketiAzalt → x/height 0 s, opaklık 0,12 s. Uygun.
  • Shimmer: shadcn @utility shimmer içinde @media (prefers-reduced-motion: reduce) bloğu var (node_modules/shadcn/dist/tailwind.css:623) → animasyon yok, düz metin. Uygun.
  • Avatar rota: animasyonlu-mark.tsx:195,240 matchMedia ile durur. Uygun.
  • Araç hapları: §4.20'ye göre yalnız opaklık; bu turda bakılmadı.

Gözlem (bulgu değil)

  • [01] 375 açık, üniversite sayfası scroll_to sonrası: üst çubukta "Başkent Üniversitesi" başlık geçişi (NavBaslik) logo ile üst üste yarı saydam yakalandı — geçiş ortası kare; sonraki karelerde düzgün. Bilal kaydırırken gözüyle baksın.
  • Tema seçici hapları (secim-haplari.tsx:68) erişilebilirlik ağacında adsız radio görünüyor; metin span içinde (satır 98) olduğu için muhtemelen araç sınırı. Doğrulanmalı (VoiceOver'da "Açık / Koyu / Sistem" okunuyor mu).

Bilal'in gözle kontrol etmesi gerekenler (panel gizli kaldığı için)

  1. /dev/sohbet → "Soru formu + revizyon" → kutuya herhangi bir şey yaz, Enter. 375'te: (a) "Soruları hazırlıyorum…" satırında parıltı soldan sağa akıyor mu; (b) o sırada avatar header logosu gibi "rota" oynuyor mu; (c) form gelince "İlk 5" seç → İleri: soru sağdan kayarak geliyor mu, kutu boyu yayla uzuyor mu, kırpılma yok mu; Geri → soldan; (d) Tab ile seçeneklere gel: odak halkası dört kenarda tam mı. Ardından aynısı koyu temada. ~4 dk.
  2. /bolum/tip → Başkent satırı → bilgi düğmesi, kapat, tekrar aç: ikinci açılışta logo kareleri görünüyor mu, gövde boş kalıyor mu (B1). ~1 dk.
  3. Sistem ayarından "Hareketi azalt" açıkken 2. adım: logo yok, 0,25 s solma; sohbet formu geçişi kaymasız. ~2 dk.

Bilal'den istenen

  1. B1 için karar: önbellekli açılışta sahne atlansın mı (önerim: evet, 0,25 s solma) — 1 dk.
  2. B2 kararı: logo kabı kapanışı kalsın (crossfade yok) — onay, 30 sn.
  3. Tema seçici tarayıcıda Koyu'da kaldı; QA tamamlanınca Açık'a alınsın (footer) — 10 sn.