- 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>
12 KiB
QA — Geri bildirim 10 madde uçtan uca testi
Dal v2, HEAD 129c839, lokal dev sunucusu dev-3100 (localhost:3100), 8 Eki 2026 gecesi. Bilal'in sunucusuna dokunulmadı; sunucu kapatılmadı.
Özet
- 9 madde geçti (1, 2-3, 4, 5, 8-9, 10 + ek kontroller), 1 madde kısmen (6): madde 6 (revizyon sınırı yok / "kalan hak" yok / paketsizde red) kodda ve akışta geçti, ama gerçek modelle revizyon isteklerinin yaklaşık yarısında model aracı hiç çağırmadı (aşağıda B1). Kullanıcıya zarar yok (güvenlik notu devreye giriyor) ama "3+ revizyon arka arkaya" sözü modele bağlı.
- Gerçek yapay zekâ çalıştı:
.env.local'da OpenRouter anahtarı var; liste üretimikaynak:"model"(sağlayıcı Baidu, 11,5 sn). Dev mock yolu kullanılmadı. - Otomatik kontroller:
baglanti-denetim.ts44/44 çıkış 0;akis-denetim.ts9/9 çıkış 0;revizyon-denetim.ts5/5 çıkış 0;pnpm exec tsc --noEmitçıkış 0;pnpm lintçıkış 0 (tasarım denetimi 0 hata, 12 uyarı);grep -rn "kalan hak\|revizyon hakk" src0 satır. Bu üç eval betiği sahte model uçlarıyla koşar, gerçek model davranışını ölçmez. - En önemli bulgular: B1 (model revizyon aracını atlıyor), B2 (giriş lokalde 3100 portunda çalışmıyor — ortam), B3 (danışman metninde iç içe bozuk /paket bağlantısı).
- Konsolda uygulama kaynaklı hata yok (tek kayıt: B2'deki 403).
Ortam notları (test koşulları)
- Port 3000'de başka bir proje (
kolaytercih-v1) çalışıyor; testidev-3100ile yaptım. - B2 (ortam, ürün hatası değil):
.env.localBETTER_AUTH_URL=http://localhost:3000. Tarayıcıdan 3100'e gidincePOST /api/auth/sign-in/magic-link403 "Invalid origin: http://localhost:3100" döner; giriş formu "Bağlantı gönderilemedi" der. Çözümüm:curlile (Origin başlığı olmadan) bağlantıyı istedim, e-postayı mail.tm'den alıp linkin3000adresini3100yapıp açtım. Magic link uçtan uca çalışıyor (e-posta Resend ile gerçekten geldi, gönderengiris@mail.kolaytercih.com, onay sayfası + "Giriş yap" düğmesi + oturum açıldı). Yan etki: çerezlocalhostiçin port bağımsız olduğundan Bilal'in v1 (3000) geliştirme oturumu bu hesapla değişmiş olabilir. - Pane başka bir ajanla (tasarımcı) paylaşılıyor: tema/viewport sürekli değişti ve pane gizliyken
requestAnimationFramedurduğu için React akış (Suspense) içeriği açılmadı (document.visibilityState = hidden). Görsel kanıt yerine DOM/animasyon örnekleme kullandım; ekran görüntüleri birkaç kez boş geldi (scroll kilidi + pane gizli), ürün hatası değil. - Yerel
data/app.db'ye test verisi girdi (aşağıda hesap listesi). Ödeme yapılmadı; paket durumunu ve krediyi test hesabı için doğrudan lokal DB'deUPDATEile verdim (has_paket=1, kredi 40).
Madde madde sonuç
1. Danışman rehber bağlantısı — GEÇTİ
- Adım:
/listemdanışman sohbetinde "/rehber/sanal-gerceklik-bolumleri yazısı ne diyor?" - Beklenen: var olmayan /rehber/ linki çıkmaz. Gözlenen: "Rehberde 'Sanal Gerçeklik Bölümleri' diye ayrı bir yazı bulunmuyor" dedi, 4 gerçek yazıyı kart olarak verdi (
hangi-bolumlerin-kontenjani-azaldi,kac-net-ile-hangi-bolum,kac-siralama-ile-hangi-bolume-girebilirim,siralama-sartlari-2026);content/rehber/*.mddosyalarının hepsi var. - Gerçek yazı: "Rehberdeki 'Devlet mi vakıf mı' yazısı ne diyor, linkini ver" →
[...](/rehber/devlet-mi-vakif-mi); sayfa<title>'ı "Devlet mi Vakıf mı? ... — KolayTercih" ve h1 var (gerçek içerik). - Not: dev'de olmayan bir rehber adresi de HTTP 200 + noindex "Böyle bir sayfa yok" sayfası döner (
/rehber/sanal-gerceklik-bolumleri→ 200). Durum kodu kontrolü dev'de anlamsız; üretimde 404 olduğu doğrulanmadı (koddan çıkarım). - Betikler:
baglantı-denetim44/44 (çıkış 0),akis-denetim9/9 (çıkış 0).
2-3. Varyant çipleri — GEÇTİ
/sonuc?sira=85000&tur=sayDengeli sekmesi, 300 satır yüklenip aynı üniversite+bölüm 14 grup tarandı: hepsinde çipler farklı ve boş değil (ör. Fenerbahçe Eczacılık "%50 İndirimli" / "%50 İndirimli · İngilizce"; Başkent Hemşirelik "Burslu" / "Burslu · İngilizce"; İTÜ Şehir ve Bölge Planlama "İngilizce" / "İngilizce (%30)"). "Açık Öğretim" etiketi Anadolu Üniversitesi sayfasında görünüyor.- Katalog:
/universite/baskent-universitesi/sayfa/5sunucu HTML'inde Tıp 6 satır: Burslu, Burslu · İngilizce, %50 İndirimli, %50 İndirimli · İngilizce, Ücretli, Ücretli · İngilizce — hepsi ayrı. (Üniversite sayfası sayfalı: ilk sayfa 50 program gösterir, Tıp 5. sayfada.) /listemçekmecesi ("Kendi Listem"): katalogdan Başkent Tıp'tan 3 varyant eklendi, çekmecede "· Burslu", "· Burslu · İngilizce", "· %50 İndirimli" ayrı satırlar. Yapay zekâ listesinde (/listemtablosu) "Burslu · İngilizce" çipi görünüyor.
4. "İlk 5'i İstanbul'a göre güncelle" — GEÇTİ
- Sihirbaz: sıra 85.000 Sayısal, alan Mühendislik, iller Ankara + İzmir + Bursa, devlet/vakıf fark etmez, 3 kredi.
- Başlangıç liste: Ankara 17, Bursa 4, İzmir 3. Sohbette "İlk 5'i İstanbul'a göre güncelle" → revizyon sonrası (DB'den
reports.result): ilk 5 satır İstanbul (Doğuş, Işık, Altınbaş, İstanbul Aydın, Nişantaşı), kalan 19 satırın hepsi sihirbaz illerinde (Ankara 15, İzmir 2, Bursa 2).revision_count1. revizyon-denetim.ts5/5, çıkış 0.
5. Soru formu shimmer ve avatar — GEÇTİ (avatar kısmı koddan)
- "Bana birkaç soru sor..." → araç çalışırken sohbette "Soruları hazırlıyorum…" satırı
class="shimmer font-medium text-xs px-0.5 text-slate-600"ile göründü (MutationObserver: yaklaşık 4,4 sn), form gelince kalktı.tw-shimmerkeyframe'i ve.shimmerkuralı sayfada yüklü. - Avatar:
sohbet-client.tsx:308canli && aracta ? "rota" : "nabiz"; gözle karşılaştırma yapılamadı (görsel kanıt alınamadı).
6. Revizyon sınırı yok — KISMEN (bkz. B1)
grep -rn "kalan hak\|revizyon hakk" src→ 0.- Paketsiz hesap (3 kredi): "İlk 5'i İstanbul'a göre güncelle" → danışman revizyon yapmadı, "Tercih Dönemi Paketi (299 TL) ile listenin açılması gerekiyor" dedi; liste değişmedi. GEÇTİ.
- Paketli hesap: 3 revizyon arka arkaya yapıldı (
revision_count3; kredi defterinde 3 satırreport_revision, 0 kredi; her sohbet mesajı 1 kredi düştü; 40 → 34). Sınır mesajı çıkmadı. Ancak bkz. B1.
8-9. Program ayrıntı çekmecesi — GEÇTİ (ölçümle)
- Katalogda Başkent Tıp "program ayrıntısı" açıldı. Çekmece 70 ms aralıkla örneklendi:
top647 → 62 px yaklaşık 0,6 sn, yükseklik sabit 707 px (boy sıçraması yok), sayfa kaydırması sabit (scrollY3797 → 3797). Logo kareleri 0,2-0,9 sn belirip 1,0 sn civarı sönüyor, içerik blokları (data-sonra) 1,0-1,4 sn arasında opaklık 0 → 1 (logo → içerik açılışı oynuyor). - "Yıllara göre" metni çekmecede ve sayfada yok. Konsolda yeni hata yok. Gözle görsel doğrulama alınamadı (ekran görüntüsü boş geldi, bkz. ortam notu).
10. Soru formu geçişi — GEÇTİ
- 3 soruluk form: "İleri" ile geçişte 1. soru sola çıkıp 2. soru sağdan geliyor (opaklık/x örneklemesi: 0,06 s'de 0,66@-47 / 0,34@+196; 0,3 s'de tamam), pasif sorular
inert. "Geri" önceki soruya dönüyor, işaretli cevap korunuyor. FormData:dilim=hayal-agirlikli, vakif-durumu=devlet, ekleme=istanbul. "Cevapları gönder" isteği/api/sorugövdesindeanketCevabi.cevaplarolarak üçü de gitti.
Ek
- Konsol hatası yok (tek
[error]403, B2'nin giriş denemesi).pnpm lintvepnpm exec tsc --noEmittemiz.
Hata ve gözlemler
B1 (Orta) — Model, revizyon isteğinde liste_revize aracını sık atlıyor. Paketli hesapta 7 revizyon isteğinin 3'ünde araç çağrıldı (liste gerçekten değişti); 4'ünde model "listen güncellendi/yeniden kurdum" yazıp aracı çağırmadı. Sunucu logu: [soru] revizyon beyanı var, başarılı liste_revize yok → not eklendi; ekranda "Düzeltme: Bu cevapta listen YENİDEN KURULMADI..." notu çıktı (güvenlik ağı çalışıyor, yani yalan beyan gizli kalmadı), liste değişmedi, kredi yine düştü.
- Yeniden üretme: paketli hesapta
/listemsohbetine sırayla "Listeyi güncelle: ilk 3 tercih İzmir'de olsun." → "İlk 3'ü İzmir'e göre güncelle." → "İlk 5'i Ankara'ya göre güncelle." (hepsi araçsız). "Sohbeti temizle"den sonra "İlk 5'i Ankara'ya göre güncelle." ve "İlk 5'i İzmir'e göre güncelle." araçla çalıştı. Soru formu cevaplarından sonra ("Cevaplarına göre listeyi revize ediyorum") yine araçsız. - Kök neden tahminim: sunucu kodu sağlam (
liste-revizyon.tspaket dışında kapı yok, sayı sınırı yok); sorun model uyumu. Geçmişe yazılan sahte "yeniden kurdum" cevapları sonraki turlarda örnek oluyor olabilir; ayrıca dilim/ilk-N ifadesi serbest metin ve araç zorunlu değil. İncelenecek yer:src/lib/ai/sohbet-akisi.ts(araç seçimi), danışman prompt'u,src/lib/ai/cikti-denetimi.ts(revizyon beyanı denetimi). Öneri: revizyon niyeti algılanıncatoolChoiceile aracı zorlamak ya da eval setine "revizyon çağrısı oranı" ölçümü eklemek (yapay-zeka-muhendisi). Not: gerçek modelle ölçülen tek yer burası; eval betikleri bunu yakalamaz. - Önem: Orta (kullanıcı "revize ettim" yazısını görmüyor ama kredi harcayıp istediği sonucu alamayabilir).
B2 (Düşük, ortam) — Lokal giriş 3100 portunda çalışmıyor. Bkz. ortam notu. Öneri: dev-3100 yapılandırmasına BETTER_AUTH_URL/NEXT_PUBLIC_APP_URL geçilmesi ya da better-auth trustedOrigins'e localhost portlarının eklenmesi (kod değiştirmedim).
B3 (Düşük) — Danışman metninde bozuk bağlantı biçimi. Paketsiz yanıtında "(299 TL, [/paket](/paket))" biçiminde iç içe markdown çıktı; arayüzde köşeli parantezler ve "Paket (Paket)" kartı olarak göründü. rehberBaglantilariniDuzelt yalnız /rehber/ bağlantılarına bakıyor (src/lib/ai/baglanti-denetimi.ts), /paket gibi dahili adresler denetlenmiyor.
B4 (Düşük) — Soru formu metinlerinde Türkçe karakter eksik. Model üretimi: "Vakif üniversiteleri listende kalsin mi?", "baska bir sehr var mi?", "Istanbul da olsun", "A/B/C" seçenek harfleri satır başında ayrı görünüyor. Prompt'a "Türkçe karakter kullan" kuralı gerek (yapay-zeka-muhendisi).
B5 (Çok düşük) — Yeniden yüklemede eski sohbet mesajları önce ham markdown (**kalın**, [a](/b)) gösterip sonra biçimleniyor (markdown parçası tembel yükleniyor, markdown-lazy). Pane gizliyken 7+ sn sürdü; normal pencerede kısa süreli olabilir, doğrulanmadı.
Test EDİLEMEYENLER
- Madde 5'te avatar animasyonunun header logosuyla gözle eşliği ve madde 8-9'daki gerçek görünüm (boş ekran görüntüsü; pane paylaşımı).
- Mobil genişlik (390 px) bu turda bakılmadı (pane başka ajanın viewport'una kilitliydi).
- Üretimde (kolaytercih.com) hiçbir şey denenmedi.
Açılan test hesapları (silinebilir)
qa-gb1791491465@maxxspace.com(mail.tm) — lokaldata/app.db: paketli, kredi 34, 1 rapor + sohbet geçmişi. Eskiqa-gb1@example.comkayıt oluşmadı (Resend reddetti).
Bilal'in elle yapacakları
- Lokalde giriş denerken 3000 portunu kullanın ya da
BETTER_AUTH_URL'i test portuna çekin (B2) — 2 dk. - v1 (3000) geliştirme oturumunuzu kontrol edin; çerez paylaşıldığı için bu test hesabı oturumu açık olabilir — 1 dk.
- B1 için yapay zekâ mühendisine "revizyon aracı çağrı oranı" ölçümü (gerçek modelle) verilmesi — karar.
Yeni hile
- Gizli/arka plandaki Browser pane'de
requestAnimationFramedurur: React akış içeriği (div[hidden]+template[id^="B:"]) açılmaz, sayfa yarım görünür. Her adımdan öncecomputer screenshotalmak pane'i canlandırır;visibilityStateile teşhis edilir. - Lokal 3100'de giriş:
curl -X POST localhost:3100/api/auth/sign-in/magic-link(Origin yok) → mail.tm'den link → host'u 3100'e çevirip aç. - Sohbet yanıtı beklerken
javascript_tool45 sn'de zaman aşımına uğrar; gönder ve bekle ayrı çağrılarda yapılmalı.