Bilal (24 Eyl 2026): ana sayfa CTA'sında doku hiç görünmüyordu, bazı
kartlarda çok azdı; sonra "çok fazla piksel, küçük olanlar hiç olmasın"
ve "/sonuc'taki kartın arkasına da piksel koymuşsun; pikseller CTA'larda
olacak sadece".
- Kök neden: PixelMasonry sabit 420×120 çizimi kaplayacak şekilde
ölçekleniyordu; yüksek kartlarda görünen kısım boş banda düşüyordu.
Artık kabın gerçek ölçüsüne göre üretiliyor (ResizeObserver), yalnız
kenar çerçevesinde, orta boş; `haric` verilen öğenin (24'lük piksel
tablosu) çevresi her genişlikte boş. Sunucuda boş, ölçülünce belirir.
- Küçük (tek hücre) kare yok: 4×4 makro hücrede 2–4 hücrelik kareler,
iri olan seyrek ve silik. Ölçüm: kapanış kartı 1280 px'te 58 kare
(tabloya binen 0), 375 px'te 27 kare.
- Beyaz içerik kartlarından zemin geri alındı (tadımlık, /listem üretim
ve kilit kartları, boş durum, sıralama-yok, meraklısına, paket kartları,
kaydet bandı, katalog üstü kompakt satır, /sonuc "listen hazır").
Kalanlar: CtaBandi, PikselCtaYuzeyi, arama penceresi kartı.
PikselZemin'in açık tonu kaldırıldı. DESIGN.md §10.8 güncellendi.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Bilal (24 Eyl 2026): ana sayfadaki piksel tablosunun arkasına çok piksel
yığılmıştı. PixelMasonry/PikselZemin boş bant ve yoğunluk alıyor;
kapanış kartı lg'de doku yalnız sol %16'da ve seyrek, altında liste
üstte ortada boş bantta. DESIGN.md §10.8: kreatif ile doku üst üste binmez.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Bilal'in isteği (24 Eyl 2026): piksel arka planı her CTA benzeri kısmın
arkasında, büyüklü küçüklü masonry. Tek kaynak PikselZemin (açık kartta
silik mavi, koyu/mavi yüzeyde beyaz); CtaBandi ve PikselCtaYuzeyi de
onu kullanır. Eklenen yüzeyler: /sonuc "listen hazır" kartı, /listem
dört üretim kartı + boş durum + kilit kartı, tadımlık kartı, sıralama-yok
sayfası, meraklısına kapanış kartı, ana sayfa ve /paket ana paket kartı,
kaydet bandı, katalog üstü kompakt satır, arama penceresi kartı.
Kapsam dışı (form, durum kartı, modal düğmesi, 404) DESIGN.md §10.8'de.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Bilal'in isteği (24 Eyl 2026): CTA'ların arkasındaki pikseller üzerine
gelindiğinde bir şey olmasın. PixelMasonry ısı fırçasına kaydolmuyor
(data-px yok, usePixelHeat yok); yalnız seyrek turuncu vurgu kareleri
kendi kendine nefes alıyor. DESIGN.md §10.8 güncellendi.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
- Input/Select/Textarea: shadcn'in ince varsayılanı yerine üst çubuk
haplarıyla aynı kalıp (h-12, rounded-full, slate-200, 16 px; md:text-sm
yok); kullanım yerleri yalnız yerleşim sınıfı taşır. DESIGN.md §4.6
tam sınıf dizisi; denetime ince-form-alani (hata) ve ham-input (uyarı)
- CtaBandi (mavi zemin + piksel doku) tek kaynak: /sonuc iki panel, katalog
altı kart, "Kendi Listem" çekmecesi altı. Ana sayfa kapanışı koyu
PikselCtaYuzeyi + 24'lük piksel liste kreatifiyle kalır (Bilal: "orası
bayağı iyiydi"); yazılıp silinen satır kaldırıldı
- PixelMasonry: CTA arka planları büyüklü küçüklü, hafif kaymış kareler;
eşit ızgaralı PixelField kaldırıldı
- Çekmece başlığındaki 12×2 piksel liste kaldırıldı (çok dolu); sayı +
ilerleme çubuğu + risk dağılımı geri geldi
- "Saniyede gör" çekmecesi §4.10 düzeninde: ortalı DrawerTitle + bağlam,
rozet ve çizgili "neler alacaksın" listesi yok; kapı modalındaki iki
rozet kalktı; denetime modal-rozet (hata)
- Kapı panelinde 3 px odak halkası kırpılmıyor (px-px → p-1)
- Liste satırı: üniversite adı + tür/il/süre adın altında tek akan satır,
telefonda text-xs (SATIR_ALT_GRUP); katalog listelerinde ad kendi
satırında (SATIR_GRUP space-y-2). Ölçüm 375 px canlı bölüm sayfası:
satır yüksekliğini metin değil alt alta iki 44 px düğme belirliyor
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
- PikselCtaYuzeyi: koyu slate-950 yüzey, yazılıp silinen satırlar, tek
turuncu CTA (arama penceresindeki kartın dili); ana sayfa kapanışı ve
/sonuc'taki iki panelde köşeye kümelenen PixelField'in yerine
- PikselListe: 24 kare = 24 tercih; kendini kurar (5 hayal · 13 dengeli ·
6 güvenli), imlece tepki verir, CTA'ya gelince tamamı dolar, dokunmada
nabız; hareketi azalt'ta durağan; renk hep metinle
- Liste çekmecesi: ilerleme çubuğunun yerinde öğrencinin kendi listesi
pikselde (her kare o tercihin riski); başlık yan yana dizildi, liste
alanı 150 → 234 px (375 px ölçümü)
- Funnel metinleri src/lib/funnel-metinleri.ts'e taşındı
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Ana sayfa karşılaştırması telefonda/tablette yana kayıyordu: lg altında
özellik başına satır + üç sütun, sütun adları yapışık (96/128 px, ölçüldü);
lg'de tablo, taşma yok
- Liste çekmecesinde kapatma çarpısı ile satır çıkarma çarpısı aynı
görünüyordu: satırda çerçevesiz "−" (CircleMinus)
- Bildirim (toast) görünümündeki değişiklik geri alındı (uyumsuzdu)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Tür/il/süre satırı sm'den itibaren adla aynı satırda (SATIR_GRUP)
- lg'de hücre dolgusu bir kademe az, satır düğmeleri 36 px (§8)
- 1280 px ölçüm: bölüm listesi 83 → 61 px; /sonuc 68 px (uzun adda 92)
- Telefonda değişiklik yok (44 px düğme, alt alta düzen)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- /listem ve üretim ekranındaki ızgaranın telefonda sütun tanımı yoktu;
en geniş çocuk sayfayı 434 px'e itiyordu (375 px'te yatay kaydırma).
grid-cols-[minmax(0,1fr)] ile düzeldi (ölçüldü: 375)
- /listem h1: pazarlama cümlesi yerine "Tercih listen" + "24 tercih:
5 hayal · 13 dengeli · 6 güvenli"; paketsizde eski cümle alt satırda
- Başlık düğmeleri 44 px, hover tek turuncu
- "Listen yalnızca bu tarayıcıda" bandı telefonda başlığı kelime kelime
kırıyordu: metin üstte, düğme altta tam genişlik; kanonik çarpı
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Site geneli "İçeriğe geç" linki (klavyede ilk durak, WCAG 2.4.1)
- Sıralama yok sayfası: "Geçerli bir sıralama gerekli" yerine "Önce
sıralamanı gir" ve ne işe yaradığı; CTA ok sonda, 48 px
- Rapor satırı aç/kapa düğmesi açtığı bölgeye bağlandı (aria-controls)
- Liste hazırlanırken "sayfayı kapatma" uyarısı 12 px griden okunur
boya; bekleme metinleri "…" ile; başlık iri
- /sonuc başlığında dengeli satır kırılımı (text-balance)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Çekmecede "Listeyi temizle" ve satır çıkarma (düğme ve kaydırma)
anında siliyordu, geri dönüş yoktu. Artık 8 sn "Geri al" bildirimi;
çıkanlar eski sıralarına döner, arada eklenenler korunur
- Çekmece kaydırması sayfaya taşmıyor (overscroll-contain)
- .claude/skills/better-ui: Jakub Krehel'in UI cilası skill'i (ui-skills.com);
başına DESIGN.md önceliği ve çakışan iki değer notu eklendi
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Adım göstergesi: Alan · Şehir · Öncelik; dolum transform ile soldan,
güçlü ease-out 300 ms; adım değişimi ekran okuyucuya duyurulur
- Çekmecede "Listen tamam" satırı @starting-style ile küçük giriş
(scale 0.95 + opaklık); hareketi azalt'ta yalnız opaklık
- Dilim sekmesindeki kayan hapta sekme kaldırıldı (bounce 0, 0.35 sn)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Sayfanın h1'i yoktu: "Sıralamanla açılan programlar" + "85.000.
sıradasın (Sayısal). 4.760 program sana açık" başlığı en üstte;
tadımlık altında (375 px'te hâlâ ilk ekranda, 474 px)
- Başlık altında liste durumu: boşsa + ipucu, doluysa "Listende 3/24
program · 21 yer kaldı" düğmesi çekmeceyi açar
- + ile ilk programda ve 24/24'te tek seferlik sakin onay; liste
doluyken ne yapılacağını söyleyen mesaj
- Bildirimler 16 px başlık, okunur açıklama, sitenin köşesiyle
- Başlık ve tablo aynı sorguyu React cache ile paylaşıyor
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Türkiye sıralaması satırı §4.15: ad sarar, 16 px; satır hover'ı
turuncu; Cal Sans sırada tabular-nums kalktı
- Rehber yol satırı 14 px ve turuncu hover; üniversite dizini hover
- Logo monogramı 10 → 12 px; arama kartındaki elle hex → slate-950
- Denetim: satırın tamamı link olduğunda group-hover mavi ad çifti de
istisna sayılıyor
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Landing kartlarının hover'ı tek turuncu (§4.4)
- Güven bandında sayı üstte ve iri, etiket altında (§1.1)
- "Dürüstlük notu", alt bilgi başlıkları, arama penceresi başlıkları
büyük harften çıktı; 10-11 px yazılar 12 px'e
- Alt bilgi linklerinin hover'ı turuncu
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Çipler 44 px (il çipleri 40 px), yarı kalın, hover tek turuncu,
basınca küçülür; seçili il çipleri turuncu yerine mavi (tek turuncu
ekranın CTA'sında)
- Büyük harfli minik etiketler ve 10 px sayaçlar kalktı; başlıklar 20 px
- İl arama kutusu 44 px, 16 px yazı (iOS yakınlaştırmasın)
- 3. adım 375 px'te pencereden taşıyordu: öncelikler telefonda iki
sütun, alt düğmeler h-11 (ölçüm: 771 → 740 px, kaydırmasız)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Risk etiketi src/components/risk-etiketi.tsx'e çıkarıldı; /sonuc,
çekmece ve rapor listesi oradan kullanıyor
- Rapor satırı §4.15: ad sarar, üniversite adı ayrı satırda, telefonda
risk + taban sıra adın altında, logo gizli (satır 214 → 152 px),
aç/kapa düğmesi 44 px, hover tek turuncu
- Açılan ayrıntı: 16 px metin, 14 px koyu etiket, rounded-xl iç kutular
- Tadımlık satırı aynı satır düzenine geçti
- Tercih değişti penceresi, liste gövdesi ve yazdırma sayfasında
10-11 px / büyük harfli etiketler kalktı
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Başlık ortalı (§4.10), çarpı ve temizle düğmesi kanonik size-9
- Satırlar çerçevesiz liste satırı; ad sarar, üniversite adı ayrı
satırda, risk etiketi metin + renkle adın altında, çıkar düğmesi 44 px
- Alt bant telefonda alt alta: başlık üç satıra kırılıp listenin yerini
yiyordu (liste 232 → 279 px, 375 px ölçümü)
- 10-11 px yazılar ve mavi hover'lar kalktı; navbar sayaç rozeti 12 px
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Liste satırı sınıfları src/components/liste-satiri.ts'e çıkarıldı;
üniversite, bölüm ve /sonuc tabloları oradan okuyor
- /sonuc satırı: ad sarar, üniversite adı ayrı satırda ve düzgün
harfle, telefonda risk + taban sıra adın altında, 44 px butonlar,
"boş kaldı" 12 px altından çıktı
- Dilim sekmeleri 375 px'te taşıyordu (418 px); telefonda üç eşit hap
- Tercih kapısında büyük harfli etiketler SectionEyebrow'a, harita
şeridinde 10 px yazılar 12 px'e
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Başlık bloğu lg altında ortalı, kimlik hapları (düzey + puan türü),
dört özet kartı (Program, Devlet, Vakıf, En iyi sıralama), piksel ayraç
- OzetKart src/components/ozet-kart.tsx'e çıkarıldı; üniversite ve bölüm
sayfası oradan kullanıyor. 6-7 haneli sayı birimle kısalıyor (ölçüldü)
- Program listesi §4.15: ad sarar, varyant ayrı satırda, 44 px butonlar,
telefonda taban sıra adın altında, butonlar alt alta
- Sayfalama 44 px, telefonda tek satır; hover'lar tek turuncu
- Denetim: kanonik liste satırı adının mavi hover'ı artık uyarı vermiyor
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Üniversite sayfası (canlı referans ekran /universite/ankara-universitesi):
- Program listesi: ad kesilmez/sarar, telefonda taban sıra alt satıra iner,
satır butonları 44 px, tür çipi okunur boyda
- Başlık bloğu lg altında ortalı (logo başlığın üstünde), kimlik hapları
(Devlet/Ankara) navbar ölçüsünde, ikon + metin
- Harita yanında 4 özet kartı (OzetKart): sayı solda iri, ikon sağda;
4. kart URAP Türkiye sırası + piksel sıra şeridi (PixelSira)
- Akademik göstergeler (URAP + YÖK İstatistik) sayfadan "Akademik
göstergeler ›" satırının açtığı alt sayfaya taşındı: kartsız, ortalı,
masonry gösterge kareleri, tek ekrana sığar
- Hover tek turuncu (orange-500); liste satırı adı mavi kalır
- Üst çubuk başlık geçişi (NavBaslik): h1 kaydırılınca üst çubukta logo +
ad belirir; bölüm sayfasında da (yalnız ad)
Tasarım dili:
- DESIGN.md: temel his (§1.1), hover kuralı (§2.1), yazı alt sınırları,
yeni tek kaynak parçalar (§4.8–4.15), lg altı ortala (§5.2), reddedilen
denemeler (§7), ölç-tahmin-etme ve tuzaklar (§9)
- Denetim: gösterge karesi renk istisnası (bg-indigo-500, bg-green-600) ve
site taraması için dört uyarı (minik-yazi, buyuk-harf-etiket, mavi-hover,
iri-sayi-tabular)
Not: universite-icerik.tsx'teki akademik göstergeler bölümü (URAP/YÖK
kartları) Bilal'in commit'lenmemiş işiydi; tasarım değişiklikleriyle aynı
dosyada iç içe olduğu için bu commit'e girdi.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- src/lib/yok-istatistik.ts (scripts/yok-istatistik-uret.py ile üretilir):
üniversite başına örgün öğrenci ve öğretim üyesi, öğrenci/üye oranı ve
Türkiye medyanı; katalog detayına `istatistik` alanı
- /universite-siralamasi: URAP Türkiye sıralaması sayfası (URAP logosu ve
zorunlu urapcenter.org atfıyla), sitemap'e eklendi
- /sonuc: kayıtlı listesi olan ziyaretçide harita ile ekleme tablosu arasına
tadımlık CTA'sı girmez, tablonun altına iner (karar sunucudaki liste sayısı
çerezinden, hidrasyonda zıplamaz)
- Liste çekmecesi: risk noktası tek başına değil RISK_ETIKET metniyle
- Sıralama formu: kompakt başlık düzeni
- giris-form / odeme-sonuc-karti: emoji yerine lucide ikon ya da düz metin (DESIGN.md §4.7)
- tasarim-denetim: rehber kapak görseli hex kuralından muaf (OG ile ortak sabit palet)
- analitik, seo-geo, marka, rehber-editoru, qa-muhendisi: model: sonnet (kod yazmayan,
bulgu üreten ajanlar); QA'da deneme bütçesi (en fazla iki e-posta servisi, üç deneme,
yeniden üretim yalnızca şüpheli sonuçta)
- kolaytercih-tasarim/evals.md: skill kapalı/açık karşılaştırması için üç istek + kontrol listesi
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Izgara 5 karta çıkamıyor: lg:grid-cols-[1fr_1fr_1.35fr] + lg:grid-rows-2
şablonunda harita 3. sütunu iki satır kaplıyor, kartlara tam 4 hücre kalıyor.
Tür zaten bir metrik değil kategori; sitenin geri kalanında (program tablosu,
rapor listesi, tadımlık, bölüm listesi) başlığın altında çip olarak yaşıyor,
detay sayfası bunu taşımayan tek yüzeydi.
- Tür çipi H1'in altına girdi; sınıf seti program-tablosu.tsx:329-333'ten
birebir kopya (yeni varyant yok). Sayfalama sayfalarında da yazar.
- URAP'ı olmayan 31 sayfada ızgaranın 4. hücresi "Tür" yerine "Toplam
kontenjan" oldu; toplam kontenjanı 0 olan üniversite yok, o hücrede "—"
çıkmıyor.
- UNITUR_ETIKET bileşenin içinden src/lib/unitur.ts'e çıktı (DILIM_ETIKET'in
lib/risk.ts'te durması gibi tek kaynak) ve bölüm listesi rozetleri de buna
bağlandı: "Kktc" → "KKTC", "Vakıf Myo" → "Vakıf MYO".
- Özet cümledeki "…, devlet üniversitesi, …" telafisi kalıyor: tür bir kez
taranabilir çip, bir kez okunabilir cümle olarak geçiyor.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Manuel listenin haritası /sonuc'ta tablonun altından sayfanın en üstüne
alındı: listesini kurmuş ziyaretçi ekranda önce kendi listesini görür.
Liste boşken harita DOM'a hiç girmez — yer tutucu da çizilmez, tadımlık
main'in ilk çocuğu kalır ve first:mt-0 çalışmayı sürdürür. Yani ürünü ilk
kez gören ziyaretçide sayfa sırası hiç değişmiyor.
Çerez neden gerekti: manuel liste localStorage'ta yaşıyor, store'un sunucu
snapshot'ı her zaman boş liste dönüyor. Harita yukarıdayken kayıtlı liste
ancak hidrasyondan sonra okunabildiği için harita sonradan belirip sayfayı
itiyordu (mobilde ~146 px, masaüstünde ~368 px; CLS ~0,13 / ~0,35). Client
artık listenin yalnızca UZUNLUĞUNU kolaytercih.liste-sayi çerezine aynalıyor
(kişisel veri ya da program kimliği yok, öznitelikleri kolaytercih.profil ile
birebir aynı); sunucu bunu okuyup haritaya ilk boyada tam ölçülü yer ayırıyor,
chunk inince kutunun yalnızca içi doluyor. Çerez hidrasyona kadar geçerli:
store okunduktan sonra tek doğru kaynak listenin kendisi, böylece bayat çerez
ya da çekmeceden boşaltılan liste durumunda boş harita ekranda kalmıyor.
Yanında: harita iskeletine motion-reduce:animate-none (artık katlamanın
üstünde, durdurulamaz nabız gösterilmemeli), yurt dışı şeridine sabit
yükseklikli loading yer tutucu (ssr:false + loading'siz dynamic, yoktan
beliren ~104 px). Kararın tersini belgeleyen üç yorum bloğu da güncellendi.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Dün gece bu dalda URAP sırası "Tür" kartının yerini alırken devlet/vakıf
bilgisi URAP'ta yer alan 198 üniversite sayfasından tamamen düştü — gerekçe
"bilgi sayfanın başka yerinde zaten var" idi, doğrulandı ki değil
(bogazici-universitesi.html'de "Devlet" 0 kez, koc-universitesi.html'de
"Vakıf" 0 kez geçiyordu). Bu commit o bilgi kaybının telafisi.
Telafi özet paragrafın ilk virgülünde duruyor: "… (İstanbul), devlet
üniversitesi; 2026 YKS yerleştirme sonuçlarına göre …". Yeni kutu, yeni
bileşen, yeni rozet yok; ızgara 4 kart kalıyor.
Metin `trBaslikDuzeni` ile değil, dünkü commit'te eklenen `UNITUR_ETIKET`
haritasıyla üretiliyor; harita cümle biçimini de taşıyacak şekilde
genişletildi (kart etiketi + cümle öbeği tek kaynakta). `trBaslikDuzeni`
tr-TR küçültmesi yaptığı için 6 `unitur` değerinin 4'ünde bozuk metin
üretiyordu ("Kktc", "Yurtdısı Kamu"). Haritada olmayan ya da NULL bir
değerde öbek hiç yazılmaz, cümlede kopuk virgül kalmaz.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
`npx tsx scripts/unitur-onar.ts` çıktısı:
Aşama D (yanlış kurum alanı) programs: unitur 0 satır, il 0 satır
Aşama D (yanlış kurum alanı) programs_arsiv: unitur 61 satır, il 24 satır
Aşama A/B/C: 0 / 0 / 0 satır · Kalan NULL unitur: 0
unitur: ULUSLARARASI BALKAN 31 + ULUSLARARASI SARAYBOSNA 30 = 61
DEVLET → YURTDISI KAMU
il : ULUSLARARASI BALKAN 24 satır
SARAYBOSNA - BOSNA - HERSEK → ÜSKÜP-MAKEDONYA
(Saraybosna Ü.'nin ili değişmedi — kurum gerçekten Saraybosna'da.
Kıbrıs Amerikan'ın arşivde hiç satırı yok.)
Fark raporu — düzeltme öncesi DB `sqlite3 .backup` ile alındı, ATTACH ile
her tablonun HER kolonu id üzerinden karşılaştırıldı:
programs: eski 21493 → yeni 21493 | 45 kolon | kayıp/yeni id 0 | DEĞİŞEN: yok
programs_arsiv: eski 3735 → yeni 3735 | 45 kolon | kayıp/yeni id 0 | DEĞİŞEN: unitur=61, il=24
netler: eski 62975 → yeni 62975
veri_meta: eski 37 → yeni 37
her iki tabloda 34 yıl/ölçü kolonu (sıra/puan/kontenjan/yerleşen +
2025 ek kontenjanları, 2021-2026) Σ sağlaması BİREBİR AYNI ✓
Yani puan/sıra/kontenjan/yerleşen kolonlarında değişen satır: 0.
Doğrulama:
- `pnpm veri-kalite --yil 2026 --db data/yokatlas.db` → 0 ZORUNLU kontrol kaldı,
3 uyarı. Üç uyarı düzeltme öncesiyle birebir aynı, hiçbiri bu işten doğmadı
(il boş 110, kimlik ATLANDI, yetim netler 2066).
- `programs_arsiv` ile `programs` arasında `unitur` farkı olan kurum: 0 (önce 2).
- Betik ikinci kez koşuldu: her aşamada 0 satır (idempotent).
- Dosya 4 KB büyüdü (bir sayfa, WAL checkpoint); satır sayıları sabit.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Dün Aşama D yalnız `programs`'a uygulanmıştı; `programs_arsiv`'de aynı yanlış
etiket duruyordu (31 ULUSLARARASI BALKAN + 30 ULUSLARARASI SARAYBOSNA
`unitur='DEVLET'`, Balkan'ın 24 satırında il Saraybosna). Kapanan programlar
arşive `programs`'tan olduğu gibi taşındığı için etiket oraya da yazılmış.
- `unitur-onar.ts` Aşama D iki tabloyu da tarar (`programs_arsiv` varsa).
Dokunulan kolon yalnız `unitur` ve `il`; A/B/C aşamaları `programs`'ta kalır.
- `veri-kalite.ts` kontrol 13 ve 14 arşivi de tarar. Genişletme olmadan iki
tablo ayrışabilir ve denetim bunu görmez.
- Yanlış etiket duran DB'de iki kontrol de KALDI veriyor (çıkış kodu 1):
`baz ad başına tek unitur — … BALKAN/YURTDISI KAMU,DEVLET/81 ; … SARAYBOSNA/68`
`DEVLET etiketi Türkiye ili ile destekli — … /SARAYBOSNA - BOSNA - HERSEK/31 ; /30`
Kullanıcıya bugün yansımıyor: `src/` tarafında `programs_arsiv`'i okuyan SQL
yok. Düzeltme tablo ileride okunduğunda sızıntının geri gelmemesi içindir.
Dünkü veri commit'inin (1df86cf) gövdesindeki rakam düzeltmesi: "/universiteler
hub'ında Devlet listesi 170 → 166" YANLIŞTIR. 170/166 ham `programs.universite`
ad sayısıdır, hub satırı değil; `uniAdiNormalize` parantezli eki attığı için
Kıbrıs Amerikan'ın iki yazımı tek slug. Hub'daki doğru değişim 132 → 129 kurum
(3 kurum). Kaynak: `12-kod-denetimi.md` O1, dalın kendi build HTML'i.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Denetim O3: P2 üç kurumun `unitur`'ünü düzeltince (DEVLET → KKTC /
YURTDISI KAMU) ve P3 "Tür" kartını yalnız URAP dışındaki 31 kurumda
bırakınca, `trBaslikDuzeni`nin tr-TR küçültmesi ("I" → "ı") ekrana
Türkçede olmayan kelimeler bastı: "YURTDISI KAMU" → "Yurtdısı Kamu"
(6 sayfa), "KKTC" → "Kktc" (16 sayfa). Dün bu sayfalar "Devlet"
diyordu; yani kullanıcıya görünen bir gerileme.
Karta özel bir görüntüleme haritası (UNITUR_ETIKET) eklendi:
Devlet / Vakıf / Vakıf MYO / KKTC / Yurt dışı (kamu) / Yurt dışı (vakıf).
Haritada olmayan bir değer için mevcut davranış (`trBaslikDuzeni`) yedek
kalır. `src/lib/slug.ts`'teki `trBaslikDuzeni`ye dokunulmadı — il
adlarında da kullanılıyor ve oradaki davranışı doğru.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>