docs(arastirma): kişiselleştirme araştırması — güncellik kuralı, KVKK maddeleri, v1/v2 kararı

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
bilalgursen
2026-09-25 00:56:32 +03:00
parent 05402f96f6
commit f5e8e4f7c4

View File

@@ -0,0 +1,132 @@
# Kişiselleştirme araştırması: öğrenciden ne alırız, üniversiteyle nasıl eşleştiririz
> 25 Eylül 2026. Bilal'in onayıyla kaydedildi. Karar: v1 (ana dal) küçük veri işleri, v2 dalı araç kullanımı (tool use) + profil. Aşağıdaki §0, §8 ve §9 onay sohbetinde eklendi.
## 0. Karar özeti (25 Eyl gece)
- **Güncellik kuralı:** yılı gösterilemeyen ya da üç yıldan eski veri ürüne girmez. ÜNİ-VERİ (2014-2019 mezunları) bu kuralla elenir; "İş bulma kolaylığı" ve "Yüksek maaş" çipleri güncel kaynak bulunana kadar kalkar. TÜMA 2025, URAP ve YÖK Atlas API'si kalır.
- **Düz LLM'e karşı farkımız:** program düzeyinde güncel YÖK Atlas verisi + öğrenciye ait yapılandırılmış, kalıcı profil. İkisi de ChatGPT'de yok; Dalga 1 ve 2 bu yüzden birlikte "biz olma" sebebi.
- **v1 (main):** kız/erkek oranı üniversite sayfasında bilgi satırı olarak (yapıldı, 05402f9).
- **v2 (dal `v2`):** Dalga 1 (API alanlarını saklama) + Dalga 2 (danışman araçları + `profil_guncelle`) + gizlilik metni güncellemesi.
- **Sihirbaza soru eklenmez** (şimdilik): yeni tercihler önce danışmanda toplanır; sık sorulan sihirbaza sonra girer.
- **Geçiş soran öğrenciye danışman açılmaz:** Ek Madde-1 hesabı ayrı sayfa olur (veri DB'de, SEO değeri var). DGS verisi yok, sonraya.
## Tek cümlelik teşhis
Liste bugün kişisel görünmüyor, çünkü öğrenciden aldığımız 7 "öncelik" çipinin 6'sının arkasında veri yok: "İş bulma kolaylığı", "Yüksek maaş", "Yurtdışı imkânı", "Prestijli üniversite", "Akademik kariyer", "Sevdiğim işi yapmak" yalnızca yapay zekâya metin olarak gidiyor ve model tahmin ediyor. Yalnız "Kolay yerleşme" kodda bir şey değiştiriyor (`src/lib/tercih-degerlendirme.ts:59`). Doğrulama: `src/features/sihirbaz/sihirbaz-sabitler.ts:5` "öncelikler statik kalır (veriye bağlı değil)" diye not düşmüş; `scripts/refresh.ts:181` API'den gelen burs alanını `null` ile atıyor.
## 1. Bugün öğrenciden ne alıyoruz, neyle eşleştiriyoruz
| Öğrenciden | Nerede kullanılıyor | Veri karşılığı |
|---|---|---|
| Sıra + puan türü | Havuz filtresi, dilimler | `programs.sira*` |
| İlgi alanı (kategori) | Havuz filtresi (JS) | `src/lib/kategoriler.ts` |
| İl (en çok 5) | Havuz filtresi (SQL) | `programs.il` |
| Devlet / vakıf / fark etmez | Havuz filtresi | `programs.unitur` |
| Öncelikler (7 çip) | Yalnız prompt metni | **Yok** (1 tanesi hariç) |
Kaynak: `src/features/sihirbaz/sihirbaz-sabitler.ts`, `src/lib/rapor-havuzu.ts` (havuza giden satır: ad, üniversite, tür, il, dilim, sıra geçmişi, kontenjan — başka özellik yok).
Ayrıca: "Vakıf (burslu olursa)" seçeneği var ama burs türü ve ücret DB'de yok; seçim burslu/ücretli ayırt etmiyor.
## 2. Üniversite/program tarafında elimizde olan ve eksik veri
**Asıl bulgu:** YÖK Atlas'ın açık API'si (`/api/tercih-kilavuz/search`, zaten `scripts/refresh.ts` ile çekiyoruz) bizim atıp saklamadığımız çok değerli alanlar veriyor. 25 Eylül'de 200 kayıtla kontrol edildi:
| Alan (API) | Anlamı | Doluluk (200 kayıtta) | Bizde |
|---|---|---|---|
| `ucret` | Vakıf yıllık ücreti (TL) | 121 | Yok → v2 |
| `bursOraniAdi` | Burslu / %50 / %25 / Ücretli | 128 | Yok → v2 |
| `ogrenimDiliAdi` | Türkçe / İngilizce … | 199 | Yok → v2 |
| `ogrenimTuruAdi` | Örgün / İkinci / Uzaktan | 200 | Yok → v2 |
| `akreditasyon`, `uniAkreditasyon` | MÜDEK, TEPDAD, YÖKAK… | 83 / 169 | Yok → v2 |
| `prof`, `doc`, `dou`, `arGor` | Programın kadrosu | ~160-190 | Yok → v2 |
| `kosulList` | Yerleşme koşulları (sağlık şartı, mülakat, yalnız kız/erkek alan program…) | 197 | Yok → v2 |
| `minBasariSirasi` | Tercih için baraj sırası | 70 | Yok → v2 |
| `ilceAdi` | Kampüs ilçesi | 199 | Yok → v2 |
| `kpss1`, `tusktp`, `abayp` | Mezun sınav ortalamaları (anlamı **doğrulanmalı**) | 50 / 6 / 5 | Yok, alınmadı |
Diğer kaynaklar:
| Veri | Kaynak | Düzey | Durum |
|---|---|---|---|
| **Kız/erkek oranı** | YÖK İstatistik Excel (`data/kaynak/…ogrenci-sayilari-2025-2026.xls`, E/K sütunları) | Üniversite × örgün ön lisans+lisans | **v1'de yapıldı** (`kadinYuzdesi`, üniversite sayfası) |
| Kız/erkek, program düzeyinde | Eski YÖK Atlas paneli | Program | **Yok** — yeni YÖK Atlas'ta panel kodu duruyor ama menüde değil; üçüncü taraf sitelere güvenilmez |
| Öğrenci sayısı, öğretim üyesi başına öğrenci | YÖK İstatistik | Üniversite | Var (`src/lib/yok-istatistik.ts`) |
| Araştırma sırası | URAP | Üniversite | Var (`src/lib/urap-siralama.ts`) |
| Evden uzaklık | Koordinatlar | Üniversite/il | Var (`src/lib/uni-koordinatlar.ts`) |
| Taban oynaklığı, dolmama | `programs` | Program | Var (`src/lib/trend.ts`) |
| İş bulma süresi, istihdam, başlangıç ücreti | ÜNİ-VERİ | Bölüm | **Elendi** (2014-2019, güncellik kuralı) |
| Öğrenci memnuniyeti | TÜMA 2025 (ÜniAr) | Üniversite, 200 kurum | Yok; yılda bir elle |
| Şehir büyüklüğü | TÜİK il nüfusu | İl | Yok; 81 satır elle |
| Erasmus / yurtdışı | — | — | Açık kaynak bulunamadı |
| KYK yurt kapasitesi | KYGM | Şehir | Yok |
## 3. Öğrenciden nasıl alırız — üç kanal
**A. Sihirbaz (herkes, girişsiz).** Şimdilik soru eklenmez (§0). Eklenecekse en fazla 2-3 soru, tek dokunuş, "fark etmez" varsayılanlı: evden uzaklık, vakıfta ödeyebileceği, İngilizce eğitim.
Öncelik çipleri veriye bağlananlarla yenilenir: "Prestij" → URAP + taban sırası; "Kalabalık olmayan kampüs" → öğrenci sayısı; "Evden yakın" → km; "Akreditasyonlu" → API. "İş bulma" ve "Yüksek maaş" kalkar. Kız/erkek dengesi çip değil bilgi olarak kalır (§5).
**B. Danışman sohbeti (tool use'un asıl yeri).** Öğrenci serbest konuşur: "İstanbul dışına çıkmam", "yıllık 300 bin üstü olmaz", "kalabalık okul istemem". İki tür araç:
- **Sorgu araçları** (salt okunur): program ara/detay, üniversite profili (kız/erkek oranı dahil). Model sayı uydurmaz, veriden okur.
- **`profil_guncelle` aracı:** model konuşmadan çıkardığı tercihi **kapalı listeli** alanlara yazar (§8). Öğrenciye "Şunu kaydettim" diye gösterilir, tek tıkla silinebilir. Bir sonraki liste bu profili kullanır.
Yapay zekâ listeyi araçla kurmaz — liste üretimi deterministik havuzda kalır (havuz-dışına-çıkamama kuralı korunur).
**C. Örtük sinyal (sonraya).** /sonuc'ta çıkarılan/eklenen satırlar, ziyaret edilen üniversite sayfaları. KVKK ve karmaşıklık yüzünden ilk turda yok.
## 4. Nasıl eşleştiririz — üç katman, puanı kod hesaplar
1. **Sert filtre (SQL):** sıra bandı, puan türü, il ya da km sınırı, üniversite tipi, dil, ücret üst sınırı, öğretim türü, öğrenciye uymayan yerleşme koşulu.
2. **Uyum puanı (0-100, kod):** her boyut için 0-1 arası alt puan × öğrencinin ağırlığı. **Verisi olmayan program cezalandırılmaz** (nötr puan, "veri yok" etiketi). Dilim (hayal/dengeli/güvenli) bu puandan etkilenmez.
3. **Yapay zekâ:** yalnız havuzdan seçer ve gerekçe yazar; gerekçeye kod üretimi "bu programı öne çıkaran veriler: 180 km, İngilizce, akreditasyonlu" satırı eklenir.
Filtre gevşetme sırası değişirse `/meraklisina` şeması aynı işte güncellenir (AGENTS.md kuralı).
## 5. Kız/erkek oranı: nasıl sunulmalı
- Üniversite sayfasında **bilgi** olarak (v1'de yapıldı): öğrenci karesinde "%54 kadın · %46 erkek", kaynak notunda üniversite düzeyi olduğu yazılı.
- **Filtre ya da çip yapılmaz:** cinsiyet sormak gerekir, ayrımcı okunabilir ve oran üniversite düzeyinde. Danışman bu sınırı söyler (araç çıktısında not var).
## 6. Yatay / dikey geçiş
- **Yatay (Ek Madde-1):** puan + hedef bölüm → başvurabileceği programlar bugünden hesaplanabilir. Karar: danışman kapısı açılmaz, ayrı sayfa. Kurallar: `docs/arastirma/2026-09-24-ogrenci-senaryolari/07-universite-yatay-gecis-selin.md`.
- **Dikey (DGS):** ÖSYM Tablo-2 ve DGS taban puanı gerekir, ikisi de yok (`08-onlisans-dgs-emre.md`). Ayrı tur.
## 7. Dalgalar
| Dalga | İş | Durum |
|---|---|---|
| 1 | API alanlarını (ücret, burs, dil, öğretim türü, akreditasyon, koşul, kadro, ilçe, baraj) `program_ozellik` tablosuna al | v2 dalı |
| 2 | Danışmana sorgu araçları + `profil_guncelle`, profil görünür/silinebilir, gizlilik metni | v2 dalı |
| 3 | Öncelik çiplerini veriye bağlama, uyum puanı + "neden bu program" satırı | Sonra |
| 4 | TÜMA, il nüfusu; Ek Madde-1 sayfası; DGS Tablo-2 | Sonra |
## 8. KVKK: ne yapılır
Bugün gizlilik metni (`src/app/gizlilik/page.tsx`, 2 Ağustos 2026) e-posta, sıra, sihirbaz seçimleri, sohbet mesajları, sipariş ve Anthropic'e yurt dışı aktarımı sayıyor. Kişiselleştirme için:
1. **Profil alanları kapalı liste.** `profil_guncelle` yalnız tanımlı alanlara yazar: azami km, yıllık ücret üstü, dil, öğretim türü, kampüs büyüklüğü, ağırlıklar. Serbest metin alanı yok. Aksi hâlde model sohbetten din, sağlık, aile durumu gibi özel nitelikli veriyi profile taşır.
2. **Sorulmayanlar:** cinsiyet, sağlık/engel, gelir. Ücret üst sınırı sorulur, gelir sorulmaz. Sağlık koşulu programın yanında gösterilir, öğrenciye durumu sorulmaz.
3. **Konum:** il (varsa ilçe), adres/koordinat değil; km il merkezinden.
4. **Öğrenci profili görür ve siler.** Her alan ekranda, tek tıkla silinir.
5. **Saklama süresi yazılır:** profil ve sohbet tercih dönemi bitiminden 12 ay sonra silinir/anonimleştirilir; silen betik olur.
6. **Aydınlatma metni güncellenir:** yeni alanlar + "sohbette söylediğin tercihleri yapılandırılmış bir profile kaydederiz; profil sana gösterilir ve silebilirsin"; yurt dışı aktarım paragrafı profili de kapsar. (Not: metin Anthropic diyor, kod OpenRouter/DeepSeek kullanıyor — düzeltilmeli.)
7. **Analitiğe profil gitmez:** Rybbit'e değer değil sayım.
8. **VERBİS:** çalışan/bilanço eşiğinin altındaysa muhtemelen yükümlülük yok; mali müşavire sorulur.
## 9. Başarı ölçüsü
- Her satırdaki "neden bu program" cümlesi kod üretimi olur; erken benimseyiciye eski-yeni liste yan yana gösterilir.
- Danışmanda hangi profil alanının ne sıklıkla dolduğu Rybbit'te sayım olarak izlenir (değer değil).
## Açık sorular (cevaplandı, 25 Eyl)
1. Dalga 1 ile başla → evet. 2. Sihirbaza soru → şimdilik hayır. 3. Geçiş soran öğrenciye danışman → hayır, ayrı sayfa.
## Kaynaklar
- YÖK Atlas API alan taraması: 25 Eylül 2026, 21.493 kaydın ilk 200'ü.
- [TÜMA 2025 (TEDÜ)](https://library.tedu.edu.tr/en/whats-happening-tedu/2025-turkish-university-satisfaction-survey-tuma-results), [ÜniAr](https://uniar.net/en/)
- [YÖK Yükseköğretim İstatistikleri](https://veriyonetim.yok.gov.tr/tr/page/507)
- Sohbet tabanlı öneri sistemlerinde yapılandırılmış profil: [arXiv 2502.14541](https://arxiv.org/html/2502.14541v1), [arXiv 2608.06632](https://arxiv.org/html/2608.06632v1)