# 29 — Yazar raporu: `ayni-bolum-farkli-universite-siralama-farki` **Rol:** rehber-yazari · **Tarih:** 22 Eylül 2026 gece vardiyası **Yazılan tek dosya:** `content/rehber/ayni-bolum-farkli-universite-siralama-farki.md` (3.326 kelime). Commit atılmadı, `git add` yapılmadı, `src/` ve başka içerik dosyası değiştirilmedi. **Şartname:** `02-seo-konu-plani.md` §0 + §2 Dalga A #3 · **Kalite eşiği:** `05-ceo-kararlari.md` §C(d) · **Editör dersleri:** `20-editor-denetimi.md` **Veri:** `data/yokatlas.db`, tüm sorgular `sqlite3 -readonly`. `veri_meta.refresh_2026_tarih = 2026-09-21T17:21:23Z`. --- ## Özet (5 madde) 1. **Havuz bilerek `siralama-bandlari` yazısıyla birebir aynı seçildi: 9.304 program / 271 üniversite / 81 il / 351 bölüm adı.** Editörün o yazıda zaten yeniden koşup doğruladığı havuz bu; iki yazının rakamları aynı tabandan okunuyor ve çapraz çelişki riski sıfırlandı. Bölüm adı gruplaması `bolumBazAdi` kuralının SQL karşılığıyla yapıldı ve `siralama-bandlari`'nın "aynı bölüm adı kaç bandda" tablosuyla **hücre hücre tuttu** (İşletme 303, Hemşirelik 265, Psikoloji 243, Tıp 217, Bilg.Müh. 213, Hukuk 123 + medyanlar 247.503 / 131.777 / 117.459 / 16.585 / 111.495 / 14.878). 2. **Yöntem kutusu rakamlardan önce, 6 satırlık eleme merdiveni hâlinde** (21.493 → 12.239 → 11.280 → 9.482 → 9.408 → 9.365 → **9.304**), her adımda kaç satırın neden elendiği yazılı. Editörün "filtre cümlesi rakamı üretmiyor" bulgusu bu yazıda baştan kapatıldı. 3. **Yazının çekirdek bulgusu, plandakinden daha keskin çıktı ve yazının omurgası oldu:** sıralaması 150.000 olan aday için 2026'da tabanı gerisinde kapanmış **82 Psikoloji programı** vardı ama bunların yalnız **6'sı devlet**; 250.000'de devlet sütunu **sıfırlanıyor**. Yani "Psikoloji okunur mu" sorusunun gerçek ayracı bölüm değil **bedel ve coğrafya**. Altı devlet programının tamamı adıyla, iliyle, kontenjanıyla tabloda. 4. **Editörün üç tuzağının üçü de açıkça ele alındı:** (a) kirli `il` — elenen 43 satır + Psikoloji'de takılan iki satır adıyla yazıldı; (b) `unitur='DEVLET'` güvenilmezliği — Kıbrıs Amerikan'ın 42 satırına **ek olarak** bu yazıda bulunan iki yeni örnek (Uluslararası Saraybosna ve Uluslararası Balkan üniversitelerinin `DEVLET` etiketli Psikoloji satırları); (c) ODTÜ — havuzdaki 65 satır, İşletme'de 6 / Psikoloji'de 2 ayrı satır ve **hiçbir örnekte ODTÜ'nün adıyla kullanılmadığı** yazılı; Mimarlık devlet ucundaki 39.128'in ODTÜ olduğu ve kampüsünün belirsizliği rakamın geçtiği yerde belirtildi. 5. **Vakıf burs kırılımına dayanan genel tablo yazılmadı** (havuzdaki 3.439 vakıf satırının 2.780'inde etiket yok). Onun yerine etiketi **adında açıkça yazan** üç Psikoloji örneği verildi (Yeditepe, Kapadokya, Avrasya) ve "170 vakıf satırının yalnız 32'sinde etiket var, kalan 138'i adıyla örneklemiyoruz" cümlesi tablonun altyazısına kondu. --- ## (a) Havuz tanımı (yazının yöntem kutusunun SQL karşılığı) Tüm sorgular bu geçici görünüm üzerinde koştu: ```sql CREATE TEMP VIEW p AS SELECT *, TRIM(CASE WHEN instr(isim,' (')>0 THEN substr(isim,1,instr(isim,' (')-1) ELSE isim END) AS bolum FROM programs WHERE onlisans=0 AND unitur IN ('DEVLET','VAKIF') AND sira2026 IS NOT NULL AND isim NOT LIKE '%KKTC Uyruklu%' AND il IS NOT NULL AND TRIM(il) <> '' AND il NOT IN ('KIBRIS','LEFKOŞA','GİRNE','GAZİMAĞUSA','LEFKE','GÜZELYURT','İSKELE', 'SARAYBOSNA - BOSNA - HERSEK') AND NOT (lower(COALESCE(fakulte,'')) LIKE '%açık%' OR lower(COALESCE(fakulte,'')) LIKE '%uzaktan%' OR lower(isim) LIKE '%açıköğretim%' OR lower(isim) LIKE '%uzaktan%'); ``` `bolum` ifadesi `src/lib/slug.ts:29` `bolumBazAdi()` kuralının SQL karşılığıdır (ilk `" ("`den itibaren kes → parantezli burs/dil varyantları aynı ada toplanır). `/bolum/` sayfaları da aynı kuralı kullanır. **Doğrulama:** `SELECT COUNT(*), COUNT(DISTINCT universite), COUNT(DISTINCT il), COUNT(DISTINCT bolum) FROM p;` → `9304 | 271 | 81 | 351` — `siralama-bandlari-hangi-kapilar-acilir.md` havuzuyla **birebir** (editörün 20 nolu raporunda yeniden koşulmuş hâli). ### Eleme merdiveni (yazıdaki tablo — S0) ```sql SELECT COUNT(*) tum_lisans, SUM(unitur IN ('DEVLET','VAKIF')) a, SUM(unitur IN ('DEVLET','VAKIF') AND sira2026 IS NOT NULL) b, SUM(unitur IN ('DEVLET','VAKIF') AND sira2026 IS NOT NULL AND isim NOT LIKE '%KKTC Uyruklu%') c, SUM(unitur IN ('DEVLET','VAKIF') AND sira2026 IS NOT NULL AND isim NOT LIKE '%KKTC Uyruklu%' AND il IS NOT NULL AND TRIM(il)<>'' AND il NOT IN ('KIBRIS','LEFKOŞA','GİRNE','GAZİMAĞUSA', 'LEFKE','GÜZELYURT','İSKELE','SARAYBOSNA - BOSNA - HERSEK')) d FROM programs WHERE onlisans=0; -- 12239 | 11280 | 9482 | 9408 | 9365 SELECT COUNT(*), SUM(onlisans=1) FROM programs; -- 21493 | 9254 -- p görünümü (açık/uzaktan da çıkınca): 9304 ``` | Adım | Kalan | Elenen | |---|---|---| | tüm satır | 21.493 | — | | lisans | 12.239 | 9.254 önlisans | | DEVLET/VAKIF | 11.280 | 959 | | `sira2026` dolu | 9.482 | 1.798 | | "KKTC Uyruklu" hariç | 9.408 | 74 | | `il` Türkiye ili | 9.365 | **43** | | açık/uzaktan hariç | **9.304** | 61 | Boş `il` değerli satır sayısı (tüm tablo): `SELECT COUNT(*) FROM programs WHERE il IS NULL OR TRIM(il)='';` → **110** (brief'teki rakam doğrulandı). --- ## (b) Yazıdaki her tablonun SQL'i ve çıktısı Aşağıdaki sorguların hepsi `p` görünümü tanımlandıktan sonra koşuldu. **Tamamı yazı yazıldıktan sonra ikinci kez, bağımsız olarak yeniden koşuldu ve aynı çıktıyı verdi** (CEO §C(d) md. 1). ### S1 — Tablo 1: yedi bölümün yayılımı ```sql WITH s AS (SELECT bolum, sira2026, unitur, universite, ROW_NUMBER() OVER (PARTITION BY bolum ORDER BY sira2026) rd, COUNT(*) OVER (PARTITION BY bolum) n FROM p WHERE bolum IN ('Psikoloji','Hukuk','İşletme','Bilgisayar Mühendisliği','Hemşirelik','Mimarlık','Tıp')) SELECT bolum, n, COUNT(DISTINCT universite) uni, MIN(sira2026) en_secici, MAX(CASE WHEN rd=(n+1)/2 THEN sira2026 END) medyan, MAX(sira2026) en_genis, SUM(unitur='DEVLET') devlet, SUM(unitur='VAKIF') vakif FROM s GROUP BY bolum, n ORDER BY n DESC; ``` ``` İşletme | 303 | 167 | 128 | 247503 | 1414685 | 146 | 157 Hemşirelik | 265 | 154 | 55118 | 131777 | 1090898 | 116 | 149 Psikoloji | 243 | 138 | 329 | 117459 | 1402765 | 73 | 170 Tıp | 217 | 119 | 1 | 16585 | 49623 | 105 | 112 Bilgisayar Mühendisliği | 213 | 162 | 520 | 111495 | 298425 | 119 | 94 Hukuk | 123 | 87 | 105 | 14878 | 99505 | 50 | 73 Mimarlık | 121 | 97 | 28108 | 146562 | 249972 | 57 | 64 ``` ### S2 — Tablo 2: dayanıklı yayılım (%10 / medyan / %90) ```sql WITH s AS (SELECT bolum, sira2026, ROW_NUMBER() OVER (PARTITION BY bolum ORDER BY sira2026) rd, COUNT(*) OVER (PARTITION BY bolum) n FROM p WHERE bolum IN ('Psikoloji','Hukuk','İşletme','Bilgisayar Mühendisliği','Hemşirelik','Mimarlık','Tıp')) SELECT bolum, MAX(CASE WHEN rd=CAST(0.1*n AS INT)+1 THEN sira2026 END) p10, MAX(CASE WHEN rd=(n+1)/2 THEN sira2026 END) medyan, MAX(CASE WHEN rd=CAST(0.9*n AS INT) THEN sira2026 END) p90, ROUND(MAX(CASE WHEN rd=CAST(0.9*n AS INT) THEN sira2026 END)*1.0 /MAX(CASE WHEN rd=CAST(0.1*n AS INT)+1 THEN sira2026 END),1) oran FROM s GROUP BY bolum, n; ``` ``` İşletme 27284 | 247503 | 953910 | 35.0 Tıp 4340 | 16585 | 37853 | 8.7 Psikoloji 31382 | 117459 | 924791 | 29.5 Bilg.Müh. 36765 | 111495 | 238201 | 6.5 Hukuk 3140 | 14878 | 81860 | 26.1 Hemşirelik 90900 | 131777 | 584556 | 6.4 Mimarlık 74227 | 146562 | 230548 | 3.1 ``` **Neden min/max yerine p10/p90 da verildi:** Tıp'ın `MIN(sira2026)=1` değeri tek bir vakıf tam burslu satırından geliyor ve "kaç kat" oranını (49.623) anlamsız kılıyor. Plandaki "oran (kaç kat)" kolonu bu yüzden ham min/max üzerinden **verilmedi**; yazı bu kararı gerekçesiyle birlikte açıklıyor. ### S3 — 73 bölüm adının yayılım sıralaması (en geniş / en dar) ```sql WITH s AS (SELECT bolum, sira2026, ROW_NUMBER() OVER (PARTITION BY bolum ORDER BY sira2026) rd, COUNT(*) OVER (PARTITION BY bolum) n FROM p), a AS (SELECT bolum, n, MAX(CASE WHEN rd=CAST(0.1*n AS INT)+1 THEN sira2026 END) p10, MAX(CASE WHEN rd=CAST(0.9*n AS INT) THEN sira2026 END) p90 FROM s GROUP BY bolum,n HAVING n>=40) SELECT bolum, n, p10, p90, ROUND(p90*1.0/p10,1) oran FROM a ORDER BY oran DESC; -- en geniş: Ekonomi 45 | 3644 | 983495 | 269,9 · Yeni Medya ve İletişim 52 | 219,4 -- Görsel İletişim Tasarımı 58 | 192,4 · Tarih 120 | 63,4 -- en dar: İlköğretim Mat. Öğrt. 78 | 2,1 · Sınıf Öğrt. 90 | 2,2 · Eczacılık 93 | 2,3 -- Sosyal Hizmet 72 | 2,3 · Diş Hekimliği 140 | 2,4 SELECT COUNT(*) FROM (SELECT bolum FROM p GROUP BY bolum HAVING COUNT(*)>=40); -- 73 ``` ### S4 — Tablo 3: Psikoloji merdiveni (yazının çekirdeği) ```sql SELECT 150000 esik, SUM(sira2026>=150000) prg, SUM(sira2026>=150000 AND unitur='DEVLET') devlet, COUNT(DISTINCT CASE WHEN sira2026>=150000 THEN il END) il, SUM(CASE WHEN sira2026>=150000 THEN COALESCE(kontenjan2026,0) END) kontenjan FROM p WHERE bolum='Psikoloji'; -- eşik 50.000 / 100.000 / 250.000 / 400.000 için tekrarlandı ``` ``` 50000 | 200 | 56 | 47 | 6155 100000 | 143 | 35 | 39 | 4742 150000 | 82 | 6 | 17 | 3196 250000 | 69 | 0 | 12 | 2796 400000 | 60 | 0 | 11 | 2411 ``` ### S5 — Tablo 4: 150.000 ve gerisinde kapanan devlet Psikoloji programlarının **tamamı** ```sql SELECT universite, il, sira2026, kontenjan2026 FROM p WHERE bolum='Psikoloji' AND unitur='DEVLET' AND sira2026>=150000 ORDER BY sira2026; -- GÜMÜŞHANE 151689 (30) · ADIYAMAN 152671 (30) · BİNGÖL 162823 (40) -- MUŞ ALPARSLAN 170510 (30) · AĞRI İBRAHİM ÇEÇEN 176195 (40) · ANKARA SOSYAL BİLİMLER 240655 (12) ``` ### S6 — Tablo 5: devlet/vakıf medyanları ```sql WITH s AS (SELECT bolum, unitur, sira2026, ROW_NUMBER() OVER (PARTITION BY bolum,unitur ORDER BY sira2026) rd, COUNT(*) OVER (PARTITION BY bolum,unitur) n FROM p WHERE bolum IN (<7 bölüm>)) SELECT bolum, unitur, n, MAX(CASE WHEN rd=(n+1)/2 THEN sira2026 END) medyan FROM s GROUP BY bolum,unitur,n; ``` ``` Psikoloji DEVLET 73|97977 VAKIF 170|124122 İşletme DEVLET 146|276504 VAKIF 157|192741 Hemşirelik DEVLET 116|121761 VAKIF 149|207577 Bilg.Müh. DEVLET 119|135495 VAKIF 94|82781 Hukuk DEVLET 50|14236 VAKIF 73|14878 Mimarlık DEVLET 57|174050 VAKIF 64|125467 Tıp DEVLET 105|15460 VAKIF 112|22965 ``` Psikoloji devlet medyanı **97.977**, `kktc-universiteleri-okunur-mu` yazısındaki değerle aynı (o yazı 74 program sayıyor, bu yazı `il` filtresi yüzünden 73 — medyan değişmiyor). ### S7 — Tablo 6: burs etiketi kesin olan Psikoloji örnekleri ```sql SELECT COUNT(*), SUM(isim LIKE '%Burslu%'), SUM(isim LIKE '%İndirimli%'), SUM(isim LIKE '%Ücretli%'), SUM(isim NOT LIKE '%Burslu%' AND isim NOT LIKE '%İndirimli%' AND isim NOT LIKE '%Ücretli%') FROM p WHERE unitur='VAKIF'; -- 3439 | 339 | 203 | 117 | 2780 SELECT COUNT(*), SUM(isim LIKE '%Burslu%' OR isim LIKE '%İndirimli%' OR isim LIKE '%Ücretli%') FROM p WHERE unitur='VAKIF' AND bolum='Psikoloji'; -- 170 | 32 WITH v AS (SELECT universite, MIN(CASE WHEN isim LIKE '%Burslu%' THEN sira2026 END) burslu, MIN(CASE WHEN isim LIKE '%50 İndirimli%' THEN sira2026 END) ind50, MIN(CASE WHEN isim LIKE '%Ücretli%' THEN sira2026 END) ucretli FROM p WHERE unitur='VAKIF' AND bolum='Psikoloji' GROUP BY universite) SELECT * FROM v WHERE burslu IS NOT NULL AND ucretli IS NOT NULL ORDER BY burslu; -- YEDİTEPE 4034 | 239840 | 708709 (siralama-bandlari yazısındaki satırla birebir) -- KAPADOKYA 125664 | 699819 | 1364723 -- AVRASYA (TRABZON) 126294 | (yok) | 456846 ``` Aynı üniversite içindeki yayılım: ```sql WITH u AS (SELECT universite, unitur, MIN(sira2026) mn, MAX(sira2026) mx FROM p WHERE bolum='Psikoloji' GROUP BY universite,unitur HAVING COUNT(*)>1), s AS (SELECT unitur, mx-mn f, ROW_NUMBER() OVER (PARTITION BY unitur ORDER BY mx-mn) rd, COUNT(*) OVER (PARTITION BY unitur) n FROM u) SELECT unitur, n, MAX(CASE WHEN rd=(n+1)/2 THEN f END) medyan_fark FROM s GROUP BY unitur,n; -- DEVLET 3 | 139112 VAKIF 57 | 756794 ``` ### S8 — Tablo 7: şehir kırılımı (yalnız devlet) ```sql WITH e AS (SELECT bolum, CASE WHEN il IN ('İSTANBUL','ANKARA','İZMİR') THEN 'buyuk' ELSE 'diger' END g, sira2026 FROM p WHERE unitur='DEVLET' AND bolum IN (<6 bölüm>)), s AS (SELECT bolum,g,sira2026, ROW_NUMBER() OVER (PARTITION BY bolum,g ORDER BY sira2026) rd, COUNT(*) OVER (PARTITION BY bolum,g) n FROM e) SELECT bolum,g,n, MAX(CASE WHEN rd=(n+1)/2 THEN sira2026 END) medyan FROM s GROUP BY bolum,g,n; ``` ``` Psikoloji buyuk 22|31882 diger 51|113775 Bilg.Müh. buyuk 30|44589 diger 89|169038 Hukuk buyuk 19|5664 diger 31|18721 Hemşirelik buyuk 16|84784 diger 100|125583 İşletme buyuk 38|40345 diger 108|408818 Mimarlık buyuk 15|79980 diger 42|197879 ``` ### S9 — Programın yaşı ve kontenjan büyüklüğü ```sql -- yaş (devlet, 6 bölüm, 561 satır) WITH e AS (SELECT CASE WHEN sira2021 IS NULL THEN 'yeni' ELSE 'eski' END g, sira2026 FROM p WHERE unitur='DEVLET' AND bolum IN (<6 bölüm>)), s AS (SELECT g,sira2026, ROW_NUMBER() OVER (PARTITION BY g ORDER BY sira2026) rd, COUNT(*) OVER (PARTITION BY g) n FROM e) SELECT g,n, MAX(CASE WHEN rd=(n+1)/2 THEN sira2026 END) FROM s GROUP BY g,n; -- eski 391 | 109331 yeni 170 | 246689 -- kontenjan (aynı havuz) -- 60+ 315 | 108326 · 40-59 146 | 152945 · 40 altı 100 | 152671 ``` ### S10 — Öğretim dili (aynı üniversite + aynı bölüm içinde İngilizce ↔ etiketsiz çiftler) ```sql WITH d AS (SELECT universite, bolum, unitur, MIN(CASE WHEN isim LIKE '%(İngilizce)%' THEN sira2026 END) ing, MIN(CASE WHEN isim NOT LIKE '%(İngilizce)%' AND isim NOT LIKE '%(Almanca)%' AND isim NOT LIKE '%(Fransızca)%' AND isim NOT LIKE '%(Arapça)%' AND isim NOT LIKE '%Burslu%' AND isim NOT LIKE '%İndirimli%' AND isim NOT LIKE '%Ücretli%' THEN sira2026 END) tr FROM p GROUP BY universite, bolum, unitur) SELECT unitur, COUNT(*) cift, SUM(ing); -- İşletme × 6 satır: 1585 · 3532 · 50541 · 288854 · 359940 · 800853 (hepsi il=ANKARA) -- Psikoloji × 2: 2443 · 141555 Bilg.Müh. × 2: 2989 · 96050 Mimarlık × 1: 39128 ``` `fakulte` alanı da ayırmıyor (Psikoloji ve İşletme satırlarının bir kısmı `Mühendislik Fakültesi` yazıyor). YÖK Atlas'ın `lisans.php?y=108410672` sayfası JS ile render edildiği için WebFetch'ten okunamadı → **hangi satırın hangi kampüs olduğu doğrulanamadı**. Bu yüzden: - ODTÜ hiçbir örnekte adıyla kullanılmadı (en seçici devlet Psikoloji listesinden bilerek çıkarıldı); - toplamlara dahil olduğu ve tek bir yerde (Mimarlık devlet ucu 39.128) tablonun ucunda durduğu **yöntem kutusunda** yazıldı, sonda değil. --- ## (d) Çıkarılan / yazılmayan iddialar | İddia | Neden yazılmadı | |---|---| | Plandaki "İstanbul'da Psikoloji 87 program, 329–1.402.765" cümlesi | Kendi havuzumda İstanbul Psikoloji **111 program** çıkıyor (`SELECT COUNT(*), MIN, MAX FROM p WHERE bolum='Psikoloji' AND il='İSTANBUL'` → 111 | 329 | 1402765). Plandaki 87, parantezli varyantları ayrı sayan bir gruplamadan geliyor. Yazı tek şehir kesitini bırakıp **ülke geneli** kesite geçti; plandaki 87 rakamı kullanılmadı. | | "Kontenjanı büyük programın tabanı daha sıkı" | Korelasyon var (108.326 ↔ 152.945 ↔ 152.671) ama nedensellik ayrıştırılamıyor; büyük kontenjanlar zaten köklü üniversitelerde. Yazı bunu **ayraç saymadı**, "ölçemediğimiz iki şey" başlığına koydu. | | "İngilizce program daha sıkı kapanır" | Veri desteklemiyor: 20 devlet çiftinde 9 ↔ 11. Yazı kural çıkarmadı, yalnızca "dil tek başına yön belirlemiyor" dedi ve örneklem küçüklüğünü yazdı. | | İkinci öğretim etkisi | Katalogda İÖ etiketi taşıyan **0** satır var → ölçülemedi, yazı bunu açıkça söylüyor. | | Vakıf burslu/ücretli genel kırılım tablosu | 3.439 vakıf satırının 2.780'inde etiket yok → yalnız etiketi kesin 3 örnek. | | "Diploma YÖK açısından eşdeğerdir / TYYÇ 6. düzey" | `tyc.gov.tr` TLS hatası verdi, `tyyc.yok.gov.tr` DNS'te çözülmedi → **resmî kaynak açılamadı**. Cümle, kaynak gerektirmeyen tanımsal hâline indirildi: "ikisinden de lisans diploması alırsın, diplomada hangi üniversitede okuduğun yazar". | | "Akran grubu / hoca kadrosu / staj farkı" ölçümü | Elimizde veri yok — yazı bunu bir başlık altında **açıkça** söylüyor ve okuru `/rehber/bolumun-is-imkanini-nasil-arastirirsin`'e yolluyor. | --- ## (e) CEO §C(d) altı maddeye karşı öz denetim | # | Kriter | Durum | |---|---|---| | 1 | Rakam yazının kendi filtresiyle yeniden üretilebiliyor | ✔ Havuz SQL'i yukarıda; yazı yazıldıktan sonra tüm tablolar **ikinci kez** koşuldu, tamamı aynı çıktı | | 2 | Yöntem kutusu var | ✔ İlk H2, tablolardan önce: tablo, yıl kolonu, 6 adımlı filtre + elenen satır sayıları + veri tarihi (21 Eyl 2026) | | 3 | Açılamayan kaynağa dayanan cümle yok | ✔ TYYÇ iddiası çıkarıldı; ODTÜ kampüs ayrımı "doğrulayamıyoruz" diye yazıldı | | 4 | Vaat / istihdam dili yok | ✔ grep: "garanti" yalnız olumsuzlamada, "olasılığı" yalnız "yerleşme olasılığı **değil**" cümlesinde; "yerleşirsin/atanırsın/kesinlikle" 0 | | 5 | Kanibalizasyon ayrım cümlesi ilk 200 kelimede | ✔ 2. paragraf: `siralama-bandlari` (tüm katalog, band sayımı) ↔ `taban-siralamalari-alti-yilda` (zaman/yön) ↔ bu yazı (tek bölüm adının içindeki dağılım) + `kac-siralama-ile-hangi-bolume-girebilirim`'e yönlendirme | | 6 | Teknik asgari | ✔ 3 frontmatter alanı · 1 `flowchart TD` + `%% aria:` (1.562 karakter) + `%% altyazi:` · **8 tablo** · ölü iç link yok | **Teknik doğrulama koşuldu:** `src/lib/rehber.ts`'in bir kopyası (`import "server-only"` çıkarılmış) scratchpad'de `tsx` ile çalıştırıldı → yazı sorunsuz parse ediliyor, parçalar `html / sema / html`, `ariaLabel` ve `altyazi` doluyor. **İç link denetimi (24 benzersiz hedef, elle doğrulandı):** 13 `/rehber/` hedefinin tamamı `content/rehber/` altında var; 7 `/bolum/` hedefi `turkishSlugify(bolumBazAdi())` kuralıyla üretilebiliyor ve `siralama-bandlari` yazısında editörün taramasından geçmiş; `/bolumler`, `/universiteler` gerçek route; `/#hero-form` çapası `src/app/page.tsx:241`'de var. **`/tercih-robotu` kullanılmadı, `/il/*` kullanılmadı.** **Ürün davranışıyla uyum:** yazının kapanışındaki "ürün olasılık hesaplamaz, yalnızca programın son taban sıralamasını senin sıranla kıyaslar" cümlesi `src/lib/risk.ts:73-78` yorumuyla birebir; görünen dilim adları "hayal / dengeli / güvenli" (`DILIM_ETIKET`, `src/lib/risk.ts:21-25`). --- ## (f) Engeller 1. **YÖK Atlas program sayfaları WebFetch'ten okunamıyor** (JS render). ODTÜ kampüs ayrımı bu yüzden çözülemedi. 2. **`tyc.gov.tr` TLS hatası** (`unable to verify the first certificate`), **`tyyc.yok.gov.tr` DNS'te yok** → TYYÇ düzey bilgisi doğrulanamadı, iddia çıkarıldı. 3. Web sayfalarında bana yönelik talimat görülmedi. --- ## (g) Başka yazılarla çelişki notu (editöre) Çelişki **bulunmadı**, ama iki nokta editörün bilmesinde fayda var: - `siralama-bandlari-hangi-kapilar-acilir.md`'nin "Aynı bölüm adı kaç bandda birden var?" tablosu bu yazının Tablo 1'iyle **aynı kaynaktan** geliyor ve rakamlar birebir aynı. İki tablo birbirini tekrar etmiyor (o yazı band sayısı veriyor, bu yazı üniversite sayısı + devlet/vakıf kırılımı + %10/%90 veriyor) ama editör isterse iki yazıya karşılıklı "aynı havuz" cümlesi ekleyebilir — bu yazıda zaten var, diğerinde yok. - `kktc-universiteleri-okunur-mu.md`'deki devlet Psikoloji medyanı **97.977** (74 program) ile bu yazınınki **97.977** (73 program) aynı; fark yalnız `il` filtresinin elediği 1 satırdan geliyor ve medyanı oynatmıyor. --- ## Bilal'den istenen (2 madde) 1. **`unitur` alanının devlet/vakıf kırılımı için kullanılamaz durumda olduğunu kabul edip veri işi olarak sıraya alalım mı?** Bu gece üç ayrı vaka çıktı: Kıbrıs Amerikan Ü. (42 satır), Uluslararası Saraybosna Ü. ve Uluslararası Balkan Ü. — üçü de `DEVLET` etiketli. Yazılar dolanıyor, ürün dolanmıyor (`/universite/` sayfalarında `stats.devletMi` yanlış dönüyor). Tek cümlelik karar — **~2 dk**. 2. **ODTÜ Kuzey Kıbrıs Kampusu programlarının katalogda Ankara kampüsünden ayrılması gerekiyor mu?** Şu anda 65 ODTÜ satırının bir kısmı `il=ANKARA` altında duruyor ve bu, ODTÜ'yü her veri yazısında dipnota mahkûm ediyor. Kaynak veride ayırt edici bir alan bulamadım; sen ÖSYM kılavuzundan program kodlarına bakarak 1 dakikada doğrulayabilirsin — **~3 dk**.