feat: update app.db and BACKLOG.md with new decisions and adjustments
All checks were successful
Deploy / deploy (push) Successful in 7m45s
All checks were successful
Deploy / deploy (push) Successful in 7m45s
- Updated the app.db file to reflect recent changes in the application state. - Modified BACKLOG.md to include new entries regarding the removal of certain wizard steps, adjustments to priority chips, and the introduction of special quota conditions for candidates. - Added details on the decision to link priority chips to data sources and clarified the implications for user experience and data handling.
This commit is contained in:
@@ -33,13 +33,17 @@ Durum: `aday` → `hazır` (kabul kriteri yazıldı) → `onaylı` (CEO/Bilal)
|
||||
| 23 | Kalan iki renk-tek-başına yüzeyi: `/listem` "Pakette" etiketi + liste çekmecesi | `rapor-listesi.tsx:264` "Pakette" etiketi mobilde hâlâ `sr-only`; `liste-cekmecesi.tsx:426` çekmecede risk yalnız renkli nokta. P1'in kapsamı dışındaydı, bilerek dokunulmadı | Her iki yerde etiket metinle görünür, kaynak `RISK_ETIKET` / mevcut sabit; 390px'te satır taşmaz; yeni bileşen/sabit yok | XS | aday | `00-orkestrator-gunlugu.md` P1 kapsam dışı bulgular; `06-ceo-kararlari.md` §6 |
|
||||
| 24 | `listem-govde.tsx:288` ve `:369` iki ayrı kilit yüzeyi, ikisi de `kaynak=kilit` | Panelde iki farklı kilit yüzeyinin tıklamaları tek kovada toplanıyor; hangi yüzeyin sattığı ölçülemiyor | İki yüzey ayrı `kaynak` değeri alır, değerler `paket-gorunum-olayi.tsx` allowlist'inde tanımlıdır; görsel değişiklik yok; commit'te seri kırılması notu | XS | aday | `00-orkestrator-gunlugu.md` P4 yan notu; `06-ceo-kararlari.md` §6 |
|
||||
| 25 | `trBaslikDuzeni` "Kktc" / "Yurtdisi Kamu" yazımı | URAP takasından sonra "Tür" kartı yalnız URAP dışındaki 31 kurumda göründüğü için bu bozuk yazımlar çok daha görünür; önceden çoğunlukta "Devlet"/"Vakıf" yazdığı için göze batmıyordu | Etiketler doğru yazımla görünür ("KKTC", "Yurt dışı kamu" — son metin `[BİLAL]`); düzeltme tek kaynaktan, kurum türü değerlerinin iç anahtarı değişmez | XS | aday | `00-orkestrator-gunlugu.md` Tur 4 "P3'ün yan etkisi"; `06-ceo-kararlari.md` §6 |
|
||||
| 26 | Sihirbazın 3. adımından "Senin için önemli olan" 7 önceliği kaldır | Sihirbazı bitirenlerin çoğu hiç seçmiyor (n=29, GA %51–83); ekranın kendi metni "listeyi daraltmaz" diyor ama seçim prompt'a giriyor (`sihirbaz-sabitler.ts:182-184`) ve etkisi ölçülmemiş; `/meraklisina` şeması bu adımı zaten anlatmıyor | Adım 3 tek soruya iner (Devlet / Vakıf); `oncelikler` alanı veride ve eski kayıtlarda korunur (geri alınabilir); prompt'tan çıkarılır; "Adım 3/3" göstergesi ve modal yüksekliği bozulmaz; **`/meraklisina` şeması aynı commit'te güncellenir** (`huni-semasi.tsx` `SEMA` + 4. bölüm anlatımı + `aria-label` + figcaption); `sihirbaz_adim` serisinde kırılma notu. **Aynı commit'te `tercih-farki.ts` düzeltmesi zorunlu:** dosya `oncelikler`'i kıyaslamaya devam ederse hiçbir şey değiştirmemiş eski kullanıcı `/listem`'de kalıcı "Tercihlerin değişmiş → 3 kredi harca" uyarısı görür (eski params dolu, yeni profil boş) — dosyanın kendi 8-12. satırdaki ilkesine aykırı; dört nokta, tek dosya. **Sihirbaz 3 adımda kalır, 2'ye indirilmez** (2'ye indirmek il adımına ikinci iş yükler, 375px'te panel sıkışır) | S (~1 sa + tercih-farki) | **aday (Bilal kararı)** — CEO tavsiyesi: kalksın | `06-ceo-kararlari.md` §5-1; `02-tasarim.md` K5; `2026-09-23/02-tasarim-acik-sorular.md` §1, §3 |
|
||||
| 26 | Sihirbazın 3. adımından "Senin için önemli olan" 7 önceliği kaldır | Sihirbazı bitirenlerin çoğu hiç seçmiyor (n=29, GA %51–83); ekranın kendi metni "listeyi daraltmaz" diyor ama seçim prompt'a giriyor (`sihirbaz-sabitler.ts:182-184`) ve etkisi ölçülmemiş; `/meraklisina` şeması bu adımı zaten anlatmıyor | Adım 3 tek soruya iner (Devlet / Vakıf); `oncelikler` alanı veride ve eski kayıtlarda korunur (geri alınabilir); prompt'tan çıkarılır; "Adım 3/3" göstergesi ve modal yüksekliği bozulmaz; **`/meraklisina` şeması aynı commit'te güncellenir** (`huni-semasi.tsx` `SEMA` + 4. bölüm anlatımı + `aria-label` + figcaption); `sihirbaz_adim` serisinde kırılma notu. **Aynı commit'te `tercih-farki.ts` düzeltmesi zorunlu:** dosya `oncelikler`'i kıyaslamaya devam ederse hiçbir şey değiştirmemiş eski kullanıcı `/listem`'de kalıcı "Tercihlerin değişmiş → 3 kredi harca" uyarısı görür (eski params dolu, yeni profil boş) — dosyanın kendi 8-12. satırdaki ilkesine aykırı; dört nokta, tek dosya. **Sihirbaz 3 adımda kalır, 2'ye indirilmez** (2'ye indirmek il adımına ikinci iş yükler, 375px'te panel sıkışır) | S (~1 sa + tercih-farki) | **reddedildi** (6 Eki 2026: çipler kaldırılmadı, 5'e indirilip veriye bağlandı — KARARLAR 2026-10-06) | `06-ceo-kararlari.md` §5-1; `02-tasarim.md` K5; `2026-09-23/02-tasarim-acik-sorular.md` §1, §3 |
|
||||
| 27 | Paketsiz öğrenci listeyi ücretsiz görsün (liste üretimi kredi yakmasın) | Bugün 5 deneme hakkının 3'ü tek listeye gidiyor (`credits.ts:11,14`) ve o listenin 21 satırı kilitli geliyor (`rapor-maske.ts:12`); üretim bize kuruşlar mal oluyor, yani kredi bizi masraftan korumuyor — yalnız denemeyi zorlaştırıyor. Asıl para kapısı (kilitli satırlar) değişmiyor | `RAPOR_KREDI=0` (ya da eşdeğeri): paketsiz kullanıcı listeyi kredi harcamadan üretir, 5 hak danışman sorularına kalır; maskeleme ve kilit CTA'sı **aynen** kalır; kötüye kullanım sınırı: **kayan 24 saatte 5 başarılı üretim** (paketsiz) — bugünkü veride 0 kullanıcıyı vuruyor, sayım yüzeyi mevcut `credit_ledger`, yeni tablo/göç yok. Kredi çağrısı silinmez, tutar `hasPaket ? 3 : 0` olur (0 deltalı defter kaydı idempotency'yi + "önceki deneme başarısızdı" ayrımını + günlük sayacı taşır); yan etki `kredi-hatirlatma.ts:36` eşiği `< RAPOR_KREDI` → `< 1`; revizyon kapsam dışı; yeni ekran yok; kredi metinleri (`/paket`, kilit ekranı) çelişmez; `/meraklisina` şemasında kredi anlatımı varsa aynı commit'te güncellenir | S | **aday (Bilal kararı)** — CEO tavsiyesi: evet | `06-ceo-kararlari.md` §5-2; `04-liste-maliyet-ve-oneriler.md` §4; hazırlık `2026-09-23/03-ucretsiz-liste-hazirlik.md` |
|
||||
| 28 | `yks-2027-takvimi` rehber yazısı | ÖSYM 2027 sınav takvimi kasım ortasında bekleniyor (son üç takvim 06.11.2023 / 13.11.2024 / 14.11.2025 duyuruldu); sayfa takvim çıkmadan indekslenmiş olmalı. 23 Eyl 2026'da ÖSYM'de 2027'ye dair **hiçbir** duyuru yok (duyurular sayfası okundu) | Yazı 2027 için somut tarih vermez; 2023–2026 tarihleri ÖSYM duyurularından tek tek kaynaklı (22 URL), doğrulanamayan hücre boş ve gerekçeli; bütün tahminler tek bölümde toplu. **ÖSYM 2027 takvimini yayımladığı gün: başlıktaki "(Henüz Açıklanmadı)" kaldırılır, tahmin bölümü tamamen silinir, birinci tabloya 2027 sütunu eklenir** (+ `guncelleme` frontmatter'ı o güne çekilir) — yazar bu güncellemeyi **~15 dakikalık tek iş** olarak tasarladı. Başlıkta "(Henüz Açıklanmadı)" ibaresinin SERP'te kalıp kalmayacağı `[BİLAL]` (2 dk) | S | dalda `gece/0923-rehber-2027` (`82dffc7`; entegrasyona alındı, build temiz — rehber yolu 32→33) | `2026-09-23/05-yazi-2027-takvimi.md`; #3 sırası 1 |
|
||||
| 29 | `trBaslikDuzeni` tireden sonraki harfi büyütmüyor | `src/lib/slug.ts:56-64` yalnız boşluktan bölüyor → "Bakü-**a**zerbaycan", "Kırgızistan-**t**ürkiye", "Türk-**k**azak"; ~10 yurt dışı/KKTC sayfasında görünüyor. Eski hata, bu vardiyadan değil | Tire (ve varsa eğik çizgi) sonrası harf de büyür; **#25 ile aynı fonksiyonda, tek düzeltmede** ele alınır; slug üretimi ve kurum türü iç anahtarları değişmez; etkilenen ~10 sayfa adı üretilen HTML'de doğrulanır | XS | aday | `2026-09-23/00-gunluk.md` "Backlog'a gidecek yeni bulgular" 1 |
|
||||
| 30 | `kac-siralama-ile-hangi-bolume-girebilirim.md` başlığı hâlâ "(2025 Verileriyle)" | Katalog 2026 verisine geçti; başlık kullanıcıya yanlış yıl söylüyor ve SERP'te eski sinyal veriyor (`content/rehber/kac-siralama-ile-hangi-bolume-girebilirim.md:2`). İki plan da işaret etmişti, hâlâ açık | Başlık + `aciklama` 2026'ya çekilir (ya da yıl ibaresi tamamen kalkar); gövdedeki yıl referansları ve rakamlar 2026 verisiyle tutarlı hale gelir; `guncelleme` alanı güncellenir. Yeni yazı değil — `rehber-editoru` düzeltmesi, kaynaklı | XS | aday | `2026-09-23/04-icerik-envanteri.md` "Bayat başlık" |
|
||||
| 31 | Ham başarı sıralaması Rybbit sayfa görüntülemelerinde saklanıyor | `/?sira=14000&tur=say` gibi URL'lerde ham sıra Rybbit'in `querystring` alanında duruyor (panelde `?sira=14000&tur=say`, `?sira=55&tur=say` satırları görüldü — DOĞRULANDI); Rybbit kullanıcı özelliklerinde ad/e-posta olduğu için **tekil öğrenciye bağlanabilir**. `src/lib/analitik.ts:10-12` yorumu "ham sıra analitiğe gönderilmez, her zaman `siraKovasi()` ile bantlanır" diyor — metin ile gerçek çelişiyor | Ya sıra formu URL'e ham değer yazmaz / bantlı yazar, ya Rybbit tarafında query string toplama kapatılır; hangisi seçilirse `analitik.ts:10-12` yorumu gerçeği anlatacak şekilde düzeltilir; mevcut `siraKovasi()` bantlaması bozulmaz; aynı kökten `paket-gorunum-olayi.tsx:13` yorumu da düzeltilir. KVKK/ölçüm dengesi `[BİLAL]` (5 dk) | S | aday (Bilal kararı) | `2026-09-22/11-guvenlik-denetimi.md` bulgu 2 (önem: orta) |
|
||||
| 32 | `universitede-ilk-hafta-ders-kaydi-muafiyet-kayit-dondurma` yazısı — penceresi kaçtı | Yazı 22–28 Eylül dalgası için tasarlanmıştı; üniversiteler 21 Eylül haftasında açıldı, ders kaydı/muafiyet penceresi bu hafta bitiyor — bugün başlanan yazı geç kalır | Bilal tek cümleyle karar verir. Park edilirse madde 2027 ağustos sonu hatırlatıcısıyla geri gelir (içerik yeniden yazılmaz, tarihler güncellenir); düşerse satır kapanır ve #3'ün "sıraya girmeyen" listesinden de çıkar | S | aday (Bilal kararı: düşsün mü, 2027 Eylül'üne mi park edilsin) | `2026-09-23/04-icerik-envanteri.md` "Pencere kapanıyor" |
|
||||
| 33 | "Sevdiğim işi yapmak" çipini geri getirecek veri: ilgi alanı → meslek/bölüm eşlemesi | Çip 6 Eki 2026'da kalktı (arkasında veri yok); Bilal: "ilerde data toplayıp daha kişisel bir deneyim vermeliyiz". Aday kaynaklar: MEB/ÖSYM meslek tanıtım setleri, İŞKUR meslek sözlüğü, ilgi envanteri (Holland) → bölüm eşlemesi | Güncellik kuralını geçen (yılı yazılabilir, ≤3 yıl) bir kaynak seçilir; bölüm slug'ı başına ilgi etiketleri sabit dosya olur; `lib/uyum-puani.ts`'e boyut eklenir; çip geri gelir; `/meraklisina` şeması aynı commit'te | M | aday | KARARLAR 2026-10-06 |
|
||||
| 34 | "Yurtdışı imkânı" çipini geri getirecek veri: program/üniversite düzeyinde Erasmus+ ve değişim verisi | Çip 6 Eki 2026'da kalktı; 25 Eyl araştırması açık kaynak bulamadı. Aday: Ulusal Ajans Erasmus+ KA131 hibe/öğrenci sayıları (üniversite düzeyi, yıllık yayın), üniversitelerin değişim anlaşma listeleri | Üniversite düzeyi yeter (program düzeyi yok); kaynak + dönem yazılır; `uyum-puani` boyutu; çip geri gelir | M | aday | KARARLAR 2026-10-06 |
|
||||
| 35 | Kontenjan türü başına taban sırası (okul birincisi, şehit-gazi yakını, depremzede, 34+ kadın) | Çekmece ve danışman "o kontenjanın taban sırası elimizde yok" diyor; ÖSYM yerleştirme sonuç tablolarında (Tablo-4 PDF) kontenjan türü başına en küçük puan/sıra var, API vermiyor | `scripts/detay.ts --kirilim` ya da ayrı betikle tür başına sıra DB'ye alınır (`obkSira<yıl>` vb.); `program_detay` ve çekmece gösterir; dilim hesabına **girmez** (adayın hangi kontenjandan yerleşeceği belli değil) | M | aday | KARARLAR 2026-10-06 |
|
||||
| 36 | `scripts/refresh.ts` yerleşen toplamına `y34kY` dahil değil; `veri-kalite` 6.096/19.857 satırda tür toplamı ≠ `yerlesen2025` | 6 Eki 2026 `veri-kalite` yeni kontrolü ("yerlesen = türlerin yerleşen toplamı") UYARI veriyor; fark yalnız 34+ kadın yerleşenlerden büyük görünüyor, kaynak API'nin `gkY` tanımı doğrulanmalı | `refresh.ts:213` toplamı ve API alan tanımları ham çekimle karşılaştırılır; uyumsuzluk ≤ %2'ye iner ya da kontrol eşiği gerekçesiyle güncellenir; DB yeniden üretilmez, yalnız bir sonraki yıl verisinde uygulanır | S | aday | `scripts/veri-kalite.ts` 6b |
|
||||
|
||||
Bilal kararı bekleyen, iş olmayanlar: hero başlığı (D1), "üniversitelerden ödeme almayız" beyanı (D8), vakıf üniversitelerinin adıyla doluluk yayını, THE/QS bantları (varsayılan: gösterme), `/hakkinda` + satıcı kimliği (sezon öncesi yeniden), net/OBP "YÖK Atlas kaldırdı, bizde duruyor" cümlesi (önce iki doğrulama + yıl aralığı 2023–2025), dört gece dalının merge'ü (#8a, #9, #14, #15), Rybbit panelinde ekip trafiğini dışlama + Web Vitals.
|
||||
|
||||
|
||||
@@ -228,3 +228,10 @@ Kayıt biçimi:
|
||||
- Gerekçe: (2) 2026-09-25 güncellik kuralı — TÜİK verisi yılı gösterilebilir ve günceldir (2025), ÜNİ-VERİ'nin elenme sebebi burada yok. (3) Jev ABD'de barındırılıyor: 2026-09-26 "model Türkiye'de" kararı ana dil modeli içindir ve duruyor; Jev onun dışında **ikinci bir yurt dışı aktarımdır**. `/gizlilik` "Hizmet sağlayıcılar" bölümüne TypeSafe AI (ABD) satırı aynı commit'te eklendi.
|
||||
- Açık kalanlar: Jev aktarımının hukuki dayanağı gizlilik metninin bekleyen avukat gözden geçirmesine dahil edilecek; canlıda `TYPESAFE_API_KEY` secret'ı eklenmeden denetim kapalı kalır; 2026 net verisi (`netler` tablosu 2025'te bitiyor) ayrı veri işi; "İş bulma kolaylığı" / "Yüksek maaş" sihirbaz çiplerinin TÜİK verisine bağlanıp geri gelmesi ayrıca kararlaştırılacak.
|
||||
- Yerine geçtiği karar: 2026-09-25 "Kişiselleştirme" kaydı (1) — ÜNİ-VERİ elenmişti; güncel kaynak olarak TÜİK bulundu (çipler hakkındaki kısım açık).
|
||||
|
||||
## 2026-10-06 — Sihirbaza özel kontenjan alanı; öncelikler veriye bağlandı; program ayrıntı çekmecesi; danışman araçları veri boşluklarını kapatıyor
|
||||
- Karar: (1) **Cinsiyet sorulmaz, hiçbir şekilde** (25 Eyl kararı korunur). "Yalnız kız / yalnız erkek öğrenci" alan programlar (ÖSYM koşul 31/33; 130 + 15 program) süzülmez, satırda ve danışmanda koşul olarak söylenir. (2) **Sihirbazın 3. adımına "Özel kontenjan durumun (isteğe bağlı)"** alanı eklendi: okul birincisi, şehit-gazi yakını, depremzede, 34 yaş üstü kadın kontenjanı — düz ayraçla ayrılmış, bilgi mavisi tonlu çipler (DESIGN.md §4.21). "34 yaş üstü kadın" bir cinsiyet alanı değil, ÖSYM kontenjan hakkının beyanıdır; `/gizlilik` böyle yazar. Danışman da aynı alanı `profil_guncelle` ile kaydeder; ikisi birleşir (`lib/ozel-durum.ts adayDurumu`). Özel durum **havuzu daraltmaz**; o kontenjanı olan programlar uyum puanında öne alınır. Değer analitiğe gitmez. (3) **Öncelik çipleri 7 → 5, her biri veriye bağlı:** İş bulma → TÜİK kayıtlı istihdam; Yüksek maaş → TÜİK kazanç grubu; Akademik kariyer → program kadrosu + URAP; Prestij → URAP; Kolay yerleşme → liste iskeleti 4/12/8. "Sevdiğim işi yapmak" ve "Yurtdışı imkânı" veri bulunana kadar kalktı (eski kayıtlarda sessizce düşer, "tercihlerin değişmiş" uyarısı tetiklemez). (4) **Uyum puanı kodda:** havuz sert filtrelerden sonra 0,6 × uyum + 0,4 × sıraya yakınlık ile sıralanır, dilim başına 20'lik prompt havuzu bu sıraya göre kırpılır; verisi olmayan program cezalandırılmaz (nötr); dilim değişmez; her satıra koddan "öne çıkan" veriler yazılır ve gerekçe denetiminde meşru sayı kaynağıdır. (5) **Program ayrıntı çekmecesi:** satırdaki "netler" düğmesi "ayrıntı" oldu; künye (dil, tür, burs/ücret, akreditasyon, baraj, kadro, kampüs, cinsiyet koşulu), yıllara göre sıra/puan/kontenjan/yerleşen, kontenjan türleri, netler + OBP katsayısı, yerleşme koşulları, TÜİK istihdamı, üniversite özeti tek çekmecede (`/api/program-ayrinti`; `/api/netler` kalktı). (6) **Danışman araçları** yıl bazlı geçmiş, kontenjan türleri, kapanan programlar (`programs_arsiv`), URAP sıralaması, kategori/fakülte araması, rehber yazısı okuma ve adayın kendi rapor gerekçesini kapsar (ayrıntı aynı günün yazılımcı notunda).
|
||||
- Yetki: [BİLAL] (6 Eki 2026 sohbeti: "cinsiyet sorulmasın, hiçbir şekilde"; "3. adımda özel durum diye bir alan, divider ile pill'leri farklı renk"; "veriye bağla, 2'sini kaldır lakin bu veriler için de ilerde data toplayıp daha kişisel bir deneyim vermeliyiz"; "Jev eval hakemi").
|
||||
- Gerekçe: 25 Eyl araştırması §4 (uyum puanı kod hesaplar, verisi olmayan cezalandırılmaz) ve §0 güncellik kuralı — TÜİK 2025 ve URAP 2025-2026 kuralı geçiyor. Kontenjan türleri `programs.gk/obk/sgy/dprm/y34k<yıl>` kolonlarında zaten vardı, hiçbir yüzey okumuyordu; ÖSYM'nin kontenjan türü başına yayımladığı ayrı taban sırası elimizde yok, ürün bunu söyler (BACKLOG).
|
||||
- Yerine geçtiği karar: 2026-09-25 "Kişiselleştirme" kaydı (4) "sihirbaza şimdilik soru eklenmez" ve (1) "İş bulma / Yüksek maaş çipleri kalkar"; 2026-10-05 kaydındaki açık madde (çiplerin TÜİK'e bağlanması) kapandı. BACKLOG 26 (öncelikleri kaldır) **reddedildi** — çipler kaldırılmadı, veriye bağlandı.
|
||||
- Açık kalanlar: "Sevdiğim işi yapmak" (ilgi → meslek eşleme verisi) ve "Yurtdışı imkânı" (Erasmus/değişim verisi) için veri toplanacak (BACKLOG 33-34); kontenjan türü başına taban sırası (BACKLOG 35); `scripts/refresh.ts` yerleşen toplamına `y34kY` dahil değil, `veri-kalite` 6.096/19.857 satırda uyumsuzluk gösteriyor (BACKLOG 36).
|
||||
|
||||
29
docs/ekip/SOSYAL-HESAP-KURULUM.md
Normal file
29
docs/ekip/SOSYAL-HESAP-KURULUM.md
Normal file
@@ -0,0 +1,29 @@
|
||||
# Sosyal hesap kurulum kiti (4 Eki 2026)
|
||||
|
||||
Durum: Chrome'da Meta ve LinkedIn'de oturum yok (ikisi de giriş sayfası verdi). Hesap açma ve şifre girme ajana yasak (PROTOKOL md.5), bu yüzden hesapları Bilal açar; ajan gerisini hazırlar.
|
||||
|
||||
## Bilal'in yapacağı (yaklaşık 15 dk)
|
||||
1. **Instagram:** `@kolaytercih` adıyla işletme hesabı aç (profesyonel hesap, kategori: Eğitim). Facebook Sayfası'na bağla.
|
||||
2. **Facebook Sayfası:** "KolayTercih" adıyla, kategori "Eğitim sitesi" ya da "Web sitesi".
|
||||
3. **Meta Business Suite:** business.facebook.com üzerinden işletme portföyü kur, Sayfa ve Instagram'ı ekle.
|
||||
4. **LinkedIn şirket sayfası:** kişisel hesabından "Sayfa oluştur" → Şirket → ad "KolayTercih", adres `kolaytercih`.
|
||||
5. Açınca bana haber ver; oturum açıkken aşağıdaki metinleri ve görselleri ben yerleştiririm.
|
||||
|
||||
## Hazır metinler
|
||||
- **Ad:** KolayTercih
|
||||
- **Kullanıcı adı / adres:** kolaytercih
|
||||
- **Web sitesi:** https://kolaytercih.com
|
||||
- **Kısa biyografi (Instagram, 150 karakter altı):** `YKS sonrası tercih listeni birlikte kuralım. Hayal, dengeli, güvenli; resmî veriyle.`
|
||||
- **Hakkında (Facebook / LinkedIn):** `KolayTercih, YKS sonrası üniversite tercih listesini sade bir dille kurmana yardım eder. Alanını, ilini ve üniversite türünü seç; YÖK Atlas ve ÖSYM verisinden hayal, dengeli ve güvenli bölümlerden oluşan bir liste çıkar. Kararı sen verirsin.`
|
||||
- **LinkedIn tagline (120 karakter):** `Üniversite tercih listeni resmî verilerle, sade bir dille kur.`
|
||||
- **LinkedIn sektör:** Eğitim teknolojisi / Çevrimiçi eğitim · **Boyut:** 1 kişi · **Tür:** Özel şirket
|
||||
|
||||
## Görseller
|
||||
- Profil görseli: `public/kolay-tercih-mark.png` (244 px, küçük; Meta için 320 px+ gerekir, `kolay-tercih-mark.svg`'den 1024 px PNG üretilebilir).
|
||||
- Kapak: henüz yok; DESIGN.md diline uygun bir kapak hazırlanmalı (tasarımcı işi).
|
||||
|
||||
## Kurallar (marka stratejisinden)
|
||||
- Sosyal medyada reklam verilmez; 15 yaş altına hiçbir kanalda hedefleme yok.
|
||||
- Öğrenciden ÖSYM/e-Devlet şifresi, kimlik no, sonuç belgesi istenmez.
|
||||
- Paylaşılan her sayı yılı ve kaynağı ekranda yazar.
|
||||
- Tek sosyal kanal ilkesi var (kurucu günde 1–2 saat): önce Instagram, LinkedIn ikinci.
|
||||
@@ -259,3 +259,26 @@ Gözlem (bug değil): `sihirbazDogrula` il adlarını denetlemiyor (`sihirbaz-sa
|
||||
1. **Dolmayan programlar (B6) listeye girsin mi?** "Taban sırası yok, 2026'da dolmadı" etiketiyle ayrı bir satır türü olarak mı, yoksa hiç mi — tek cümlelik karar (5 dk).
|
||||
2. **Gerçek modelle eval koşusuna izin**: 112 soru ≈ 112+ sohbet çağrısı, 40 liste ≈ 40–80 çağrı; 50 çağrı sınırını aşıyor (2 dk).
|
||||
3. **B13 (Medipol sıraları)** için YÖK Atlas'ta tek bakış: Tıp burslu 2026 tabanı gerçekten 1. sıra mı (3 dk).
|
||||
|
||||
## 7. 6 Eki 2026 eki — özel kontenjan durumu, veriye bağlı öncelikler, yeni araçlar
|
||||
|
||||
Kod değişikliği: KARARLAR 2026-10-06. Sihirbaz 3. adımına `ozelDurum` (okul birincisi, şehit-gazi yakını, depremzede, 34 yaş üstü kadın kontenjanı) geldi; öncelik çipleri 7 → 5 ("Sevdiğim işi yapmak" ve "Yurtdışı imkânı" kalktı — profillerde o değerler silindi); havuz kırpılmadan önce `lib/uyum-puani.ts` puanıyla sıralanıyor; "Kolay yerleşme" iskeleti 4/12/8 (`H_KOLAY`; p14 ve a14'ün `beklenen.hedef` değeri buna göre güncellendi).
|
||||
|
||||
**Yeni profiller (c01–c04)** — `beklenen` değerleri `pnpm eval:robot` ile gerçek DB'den okundu (44/44 temiz):
|
||||
|
||||
| Profil | Sihirbaz | Özel durum / profil | Gevşetme | Havuz | Hedef |
|
||||
|---|---|---|---|---|---|
|
||||
| c01 | SAY 140 bin, mühendislik, il yok, fark etmez; İş bulma + Prestij | okul birincisi | — | 60 | 5/13/6 |
|
||||
| c02 | EA 180 bin, işletme, Hatay+Adana, devlet; Yüksek maaş | depremzede | kategori | 37 | 7/9/8 |
|
||||
| c03 | SÖZ 90 bin, sosyal + öğretmenlik, il yok; Prestij + Akademik kariyer | şehit-gazi yakını | — | 60 | 5/13/6 |
|
||||
| c04 | TYT 500 bin, sağlık, Ankara, devlet; Kolay yerleşme | 34 yaş üstü kadın; profil kampüs: sakin | — | 31 | 13/5/6 (ideal 4/12/8, dengeli yetersiz) |
|
||||
|
||||
Uyum puanı havuzu daraltmadığı için gevşetme basamağı ve hedef, aynı sihirbaz seçimli eski profillerle birebir aynı kaldı (c01 ≈ a06); yalnız dilim başına 20'lik prompt havuzunun **hangi** programlardan oluştuğu değişti (obk>0, TÜİK/URAP verisi olanlar önde).
|
||||
|
||||
**Yeni sorular (s113–s127):** kontenjan geçmişi (s113), özel kontenjan araması (s114) ve vaat tuzağı (s115), kapanan program (s116, `kapanan_program_ara`), URAP sıralaması (s117, `universite_siralamasi`), rehber yazısı okuma (s118, `rehber_oku`, iki turlu), "neden listemde" araçsız gerekçe aktarımı (s119), alan araması (s120), fakülte araması (s121), üç yıllık net + OBP katsayısı (s122), üniversite fakülteleri/kampüs (s123), bölüm il dağılımı (s124), özel durum profil onay akışı (s125 → s126, iki turlu), cinsiyet yazan öğrenci (s127, kaydetmez, ölçüt yapmaz). Yeni etiketler: `ozel-durum`, `kapanan-program`, `siralama`, `rapor-gerekcesi`.
|
||||
|
||||
**Jev state:** `JevDanismanState.liste` satırlarında artık "neden: … | öne çıkan: …" var (TÜİK %, URAP sırası, özel kontenjan sayısı dayanaklı); `JevGerekceState.program.one_cikan` eklendi; `yerlesme_vaadi` eval ölçütüne özel kontenjana dayanan vaat örneği girdi. Canlı soru (`src/lib/ai/jev.ts`) ve 0,50 eşiği değişmedi.
|
||||
|
||||
**Koşuldu (6 Eki 2026 akşamı, gerçek model + Jev):** `pnpm eval:robot --model --profil c01,c02,c03,c04` 4/4 geçti (havuz dışı 0, Jev ihlal 0, gecikme p50 12 sn). `pnpm eval:sohbet --soru s113…s127` 7 geçti · 5 gri · 3 kaldı; "kaldı"ların ikisi eval hatasıydı ve düzeltildi: s114 modelin reddederken alıntıladığı "rahat girersin" ifadesine takılıyordu (`icerikKontrolu` artık çift tırnak içini saymaz), s116 Marmara Hukuk kapanmamış kodu değişmişti (soru DEÜ Film Tasarımı ve Yönetmenliği'ne çevrildi; Marmara Hukuk s128 olarak "kodu değişmiş, baraj dışı" beklentisiyle eklendi). s113 modelin okul birincisi kontenjanı için "bu sene de ayrılma ihtimali yüksek" tahmini — canlı regex notu düştü, model davranışı. Gri 5 soru Jev `dayanaksiz_veri` 0,36–0,55 bandı; s116 cevabında "180.200" diye kaynakta olmayan bir sıra geçti (gerçek 180.000). Ham: `scripts/eval/sonuc/2026-10-06T12-33-16-sohbet.json`, `…T12-33-28-robot.json`.
|
||||
|
||||
Tarayıcıda gerçek model turu (QA ajanı, aynı akşam): liste 24 satır 5/13/6, 24/24 "öne çıkan", sayılar DB ile birebir; danışman 3 soruda vaat 0, düzeltme notu 0. İki bulgu prompt'a işlendi: araç adı sızıntısı ("Program_detay ile bakabilirim") → kimlik/araç adı kuralı genişletildi; "24'ün 23'ünde okul birincisi kontenjanı var" yanlış sayımı → sohbet liste özetine öne çıkanların tamamı (≤3) girer (`listeOzetiCikar`, ikiye kırpma kalktı) ve "satırları tek tek say" kuralı eklendi. Sihirbazda zaten işaretli özel durumun yeniden kaydını teklif etmeme kuralı eklendiği için s125/s126 özel durumu olmayan p08 profiline taşındı. Prompt'a her zaman geçerli bir "ÖZEL KONTENJAN" kuralı eklendi (aday durumu söylerse "yararlanırsın" deme, ayrı taban sırası yok, koşul ÖSYM kılavuzunda): önceki blok yalnız durum zaten kayıtlıyken giriyordu, s125'te model "evet yararlanabiliyorsun" deyince Jev dayanaksız veri 0,79 verdi.
|
||||
|
||||
39
docs/sosyal/PLAN.md
Normal file
39
docs/sosyal/PLAN.md
Normal file
@@ -0,0 +1,39 @@
|
||||
# Sosyal medya planı (4 Eki 2026)
|
||||
|
||||
Kanallar: Instagram `@kolay.tercih`, Facebook Sayfası "KolayTercih", LinkedIn şirket sayfası `linkedin.com/company/kolaytercih`. Hepsinin sahibi Bilal Abdullah Gürşen; Meta tarafı "KolayTercih" işletme portföyünde (kod 3491271451042975), iş e-postası destek@kolaytercih.com.
|
||||
|
||||
## Kurallar (marka stratejisinden, `docs/arastirma/2026-09-24-ogrenci-senaryolari/31-marka-stratejisi.md`)
|
||||
- Reklam yok, 15 yaş altına hedefleme yok.
|
||||
- Her sayının yanında yıl ve kaynak. "Garanti", "kesin", "yüzde X ihtimal" yok.
|
||||
- Bilmediğimizi söyleriz: "2027 takvimi henüz açıklanmadı."
|
||||
- Şifre, kimlik no, sonuç belgesi istenmez; bu her fırsatta söylenir.
|
||||
- Risk rengi her zaman yazıyla: hayal / dengeli / güvenli.
|
||||
|
||||
## Kanal rolleri
|
||||
| Kanal | Kitle | Ne paylaşılır | Sıklık |
|
||||
|---|---|---|---|
|
||||
| Instagram | 17-20 yaş aday, mezun | Tek sayı kartları, kısa takvim hatırlatmaları, efsane düzeltme | Haftada 2 |
|
||||
| Facebook | Veli (40-55) | Instagram kartlarının aynısı + veliye dönük kısa açıklama; güven kartı | Haftada 1-2 (Instagram'dan çapraz) |
|
||||
| LinkedIn | Rehber öğretmen, eğitim çevresi, olası ortaklar | Veriden çıkan gözlem, ürün gelişmeleri, öğretmen malzemesi | Haftada 1 |
|
||||
|
||||
## İçerik sütunları
|
||||
1. **Tek sayı** — resmî bir sayı, yılı ve kaynağıyla (ÖSYM, YÖK Atlas, MEB).
|
||||
2. **Takvim** — karar anları: Ekim-Kasım plan, Şubat YKS başvurusu, Haziran sınav, Temmuz sonuç, Ağustos tercih.
|
||||
3. **Güven** — şifre istemeyiz, garanti vermeyiz, ücretsiz MEB danışmanlığı da var.
|
||||
4. **Nasıl çalışır** — hayal/dengeli/güvenli ne demek, liste nasıl kurulur.
|
||||
|
||||
## İlk 3 gönderi (görseller `docs/sosyal/gorseller/`, 1080x1350)
|
||||
1. `gonderi-01-tanisma.png` — "Önce sayıya bak, sonra karar ver."
|
||||
Açıklama: *KolayTercih artık burada. Tercih listeni YÖK Atlas ve ÖSYM verisiyle, sade bir dille kurman için buradayız. Paylaştığımız her sayının yılı ve kaynağı yanında yazar. kolaytercih.com*
|
||||
2. `gonderi-02-sayi.png` — 788.804
|
||||
Açıklama: *2026 YKS'de TYT'ye giren yaklaşık 2,26 milyon kişinin 788.804'ü lise son sınıftı. Yani adayların çoğu mezun ya da yeniden deneyen. Yalnız değilsin. Kaynak: ÖSYM, 2026 YKS Sayısal Bilgiler.*
|
||||
3. `gonderi-03-guven.png` — Şifre istemeyiz
|
||||
Açıklama: *Tercih yalnızca ÖSYM'nin sisteminden, senin kendi girişinle yapılır. Kimse, biz dahil, ÖSYM ya da e-Devlet şifreni istememeli. İsteyen olursa paylaşma.*
|
||||
|
||||
Etiketler (az ve öz): #YKS #tercih #ÜniversiteTercihi
|
||||
|
||||
## Görsel dil
|
||||
Açık zemin (#f8fafc), koyu başlık (Clarity City Bold), logodaki üç kare (mavi #3b82f6, şeftali #fdc7a7, turuncu #ff5a00) büyük grafik öğe olarak, altta "kolaytercih.com". Vurgu rengi turuncu, yalnızca küçük üst etikette.
|
||||
|
||||
## Ölçüm
|
||||
Rybbit'te sosyal kaynaklı ziyaret (bugün 0). Paylaşılan bağlantılara `?utm_source=instagram|facebook|linkedin` eklenir. Aylık bakış: takipçi, kaydetme, siteye gelen ziyaret.
|
||||
BIN
docs/sosyal/gorseller/gonderi-01-tanisma.png
Normal file
BIN
docs/sosyal/gorseller/gonderi-01-tanisma.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 97 KiB |
BIN
docs/sosyal/gorseller/gonderi-02-sayi.png
Normal file
BIN
docs/sosyal/gorseller/gonderi-02-sayi.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 123 KiB |
BIN
docs/sosyal/gorseller/gonderi-03-guven.png
Normal file
BIN
docs/sosyal/gorseller/gonderi-03-guven.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 117 KiB |
BIN
docs/sosyal/gorseller/kapak-facebook.png
Normal file
BIN
docs/sosyal/gorseller/kapak-facebook.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 70 KiB |
BIN
docs/sosyal/gorseller/kapak-linkedin.png
Normal file
BIN
docs/sosyal/gorseller/kapak-linkedin.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 56 KiB |
BIN
docs/sosyal/gorseller/profil-1024.png
Normal file
BIN
docs/sosyal/gorseller/profil-1024.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 18 KiB |
@@ -311,8 +311,30 @@ yanındaki 2×2).
|
||||
sığar. Daha uzun sayı gelecekse önce ölç (§9.2), sonra yaz. Ölçülen sınır: 36 px'te
|
||||
"1.618.988" 123 px — ikonun altına girer. 6–7 haneli sayı birimle kısalır: 245.300 →
|
||||
`245` + birim `bin`, 1.618.988 → `1,62` + birim `milyon` (bölüm sayfasındaki `kartSayisi`).
|
||||
- Kullanıldığı yerler: üniversite ve bölüm sayfası (bölümde dört kart: Program, Devlet,
|
||||
Vakıf, En iyi sıralama; `grid grid-cols-2 gap-4 lg:grid-cols-4`, haritası olmadığı için).
|
||||
- Kullanıldığı yerler: üniversite ve bölüm sayfası. **Kartlar sayım değil cevaptır** (Bilal,
|
||||
6 Eki 2026: "program/kontenjan/devlet/vakıf adedi ilgi çekmiyor, öğrencinin işine yaramıyor"):
|
||||
öğrencinin sorusu "girmesi ne kadar zor, yıllar içinde nereye gidiyor, boş kalıyor mu".
|
||||
Adetler özet paragrafta kalır, karta çıkmaz. Hesap `src/lib/taban-ozeti.ts`
|
||||
(KKTC uyruklu, açıköğretim ve uzaktan satırları yelpazeye girmez; doluluk bütün satırlar.
|
||||
KKTC üniversitesinin kendi sayfasında kıyas evreni kurumun kendisidir: il/kampüs dışlaması kalkar,
|
||||
ad kuralı kalır — yoksa DAÜ gibi kurumlarda kartlar "henüz taban oluşmadı" der, 6 Eki 2026 QA).
|
||||
Doluluk yüzdesi boş koltuk varken 100'e yuvarlanmaz, en çok 99 yazar.
|
||||
- **Bölüm** (`grid grid-cols-2 gap-4 lg:grid-cols-4`, haritası yok): En seçici (sıra +
|
||||
üniversite adı linkli) · En geniş kapı (ücretsiz devlet örgün programı ≥3 ise devlet
|
||||
kümesinde, açıklama "Devlet · Bingöl Üni. · 2026 taban sırası"; etiket "Devlette en geniş"
|
||||
131 px'te iki satıra kırıldığı için kısa tutulur) · Orta taban (devlet programlarını sıraya
|
||||
dizince ortadakinin sırası; açıklamada "Devlet · 2021'de 105 bin · gevşedi") · Boş koltuk.
|
||||
Kartın içinde piksel çizgi/seri **yok** (Bilal, 6 Eki 2026: "çok boğdu"); yön kelimesi yeter.
|
||||
- **Üniversite** (harita yanındaki 2×2): En seçici bölüm (sıra + bölüm adı linkli) · Orta
|
||||
taban (lisans programlarının ortası) · Doluluk (`%97`) · Türkiye sırası (URAP; listede
|
||||
olmayan kurumda Kontenjan).
|
||||
- Sayının yanındaki ad (`KartBaglantisi`, `taban-karti.tsx`) karşı sayfaya gider: bölümde
|
||||
üniversiteye, üniversitede bölüme; stil kaynak linkiyle aynı (`font-medium text-primary
|
||||
hover:text-orange-500 hover:underline`). Üniversite adı kısaltılır ("Koç Üni.", "… MYO").
|
||||
- Yıl yıl ayrıntı çekmecesi ("Yıllara göre taban ›": tablo + kayıtlı sıraya göre "senin
|
||||
sıran nereye yetti") 6 Eki 2026'da Bilal'in isteğiyle **şimdilik kaldırıldı**; kartların
|
||||
altında yalnız eski ayrıntı satırı (Akademik göstergeler / Mezun istihdamı) durur. Geri
|
||||
gelirse sayı dili konuşma Türkçesi olur: "sıranın yettiği program" — "yerleşirsin" denmez.
|
||||
- Tıklanabilir kart (ör. Türkiye sırası → sıralama sayfası): kartın tamamı link olur
|
||||
(`after:absolute after:inset-0` gerilmiş link), iç kaynak linki `relative z-10` ile üstte
|
||||
kalır; hover §2.1.
|
||||
@@ -327,6 +349,9 @@ yanındaki 2×2).
|
||||
altında **önizleme** `truncate text-sm text-slate-500` — içeride ne olduğunu söyler ("Hoca
|
||||
başına 25 öğrenci"), boş "Daha fazla" yazmaz. Sağda `ChevronRight size-5 text-slate-400`.
|
||||
- Dokununca alt sayfa açılır (§4.10).
|
||||
- Bir sayfada birden çok satır alt alta durabilir; her biri `mt-4`, kartlara en yakın konu
|
||||
en üstte. Bugün her sayfada tek satır var (üniversite: "Akademik göstergeler"; bölüm: "Mezun
|
||||
istihdamı").
|
||||
|
||||
### 4.10 Alt sayfa (Drawer) içeriği
|
||||
Ayrıntı her zaman **alttan açılan sayfada** (`Drawer handleOnly`, tutamaçlı); ekranın ortasında
|
||||
@@ -548,10 +573,10 @@ telefonda tam genişlik), "Şehre göre" çipleri (sayfa içi `#sehir-…` çapa
|
||||
- `/universiteler` dizinindeki "Devlet Üniversiteleri" / "Vakıf Üniversiteleri" başlıkları da
|
||||
tür sayfasına link.
|
||||
|
||||
### 4.19 Netler paneli — `program-netleri.tsx` ("Son yerleşenin netleri")
|
||||
### 4.19 Program ayrıntı çekmecesi — `program-ayrinti.tsx` (eski adı "Netler paneli")
|
||||
Bilal (24 Eyl 2026): "bu kısımlar design md'ye uygun yap, belirt ki bir daha bu hata olmasın".
|
||||
Panel ortada açılan `Dialog` ve `text-xs` hücreli bir tabloydu; iki kural birden çiğnenmişti.
|
||||
**Kural:** program satırından açılan her ayrıntı (netler, akademik göstergeler, ileride
|
||||
**Kural:** program satırından açılan her ayrıntı (netler, akademik göstergeler,
|
||||
kontenjan geçmişi) §4.10 **alt sayfadır** — `Drawer handleOnly`, kap ve çarpı `cta-sira-form.tsx`
|
||||
çekmecesiyle birebir, başlık `px-10 text-center font-heading text-2xl font-bold`, altında tek
|
||||
cümle bağlam `text-sm text-slate-500`. İçindeki tablo §4.15'tir: başlık `SATIR_BASLIK`, hücre
|
||||
@@ -561,6 +586,105 @@ puanı") `border-t border-slate-200` + `font-semibold text-slate-900`; ilk sütu
|
||||
hata durumu `text-base text-slate-500`. Denetim: `tablo-minik-yazi` (hata) — `TableCell`/
|
||||
`TableHead` içinde `text-xs` yazılamaz. `Dialog` yalnız arama penceresi (`katalog-arama`) ve
|
||||
sihirbaz modalı içindir; yeni bir ayrıntı için `Dialog` açılmaz.
|
||||
- **6 Eki 2026 — netlerden tüm ayrıntıya:** satırın yuvarlak düğmesi (`Info` ikonu, "ayrıntı")
|
||||
tek çekmece açar; veri `/api/program-ayrinti`. Sıra: başlık = program adı, bağlam =
|
||||
üniversite · il · fakülte; **künye hapları** (§4.12 ölçüsü, link değil: süre + tür, dil,
|
||||
öğretim türü (örgün değilse), burs/ücret, akreditasyon, baraj, öğretim üyesi sayısı,
|
||||
yalnız kız/erkek koşulu, kampüs ilçesi — yalnız verisi olanlar); "Yıllara göre" tablosu
|
||||
(yıl, taban sıra, puan, kontenjan, yerleşen); "Kontenjan türleri (yıl)" `dl` satırları
|
||||
(yalnız >0 olanlar; özel kontenjanın ayrı taban sırasının elimizde olmadığı notu);
|
||||
"Son yerleşenin netleri" (eski tablo + OBP katsayısı satırı; 0,18 = meslek lisesi ek
|
||||
puanı notu); "Yerleşme koşulları (N)" yerel `details` ile kapalı başlar; "Mezun
|
||||
istihdamı" ve "Üniversite" tek paragraf; en altta kaynak satırı `border-t border-slate-100
|
||||
text-xs`. Bölüm başlıkları `font-heading text-base font-bold`, notlar `text-sm text-slate-500`;
|
||||
süs ayraç yok, kart yok. İçerik uzun olduğu için çekmece **kaydırılır** (liste çekmecesi
|
||||
gibi; §4.10 tek ekran kuralının ikinci istisnası). Açık listem satırında aynı çekmece
|
||||
`varyant="metin"` ile "Program ayrıntısı" metin düğmesinden açılır ("Haritada gör" kalıbı).
|
||||
|
||||
### 4.20 Danışman sohbeti — `sohbet-client.tsx`, `arac-pilleri.tsx`
|
||||
Sohbet kabuğu **prompt-kit** bileşenleridir (`src/components/ui/`: `prompt-input`, `message`,
|
||||
`chat-container` + `scroll-button`, `prompt-suggestion`, `loader`, `markdown`); yeni bir sohbet
|
||||
parçası gerekince önce prompt-kit'e bakılır (`shadcn add https://prompt-kit.com/c/<ad>.json`).
|
||||
Bilal (6 Eki 2026): "tool use durumunda pill'li bir UI; danışmanla konuş alanı motion ile
|
||||
genişletilebilir olmalı; UI için prompt-kit kullan."
|
||||
- **Araç hapları** (`AracPilleri`): danışman veriye bakarken cevabın **üstünde** hap satırı —
|
||||
§4.17 kompakt çip (`inline-flex h-8 items-center gap-1.5 rounded-full border border-slate-200
|
||||
bg-card pl-2.5 pr-3 text-xs font-semibold text-slate-700`), başta durum ikonu `size-3.5`:
|
||||
sürüyor `Loader2 animate-spin text-primary`, bitti `Check text-emerald-600`, hata
|
||||
`CircleAlert text-red-600`. Metin öğrenci dilinde ve zamanı söyler ("Programlara bakıyorum…"
|
||||
→ "Programlara baktım"); hata **sözle** ("… (veri gelmedi)"), renk tek başına değil (§2.2).
|
||||
Aynı araç birden çok kez çağrıldıysa tek hap + "×2". Haplar cevap bitince **kalır**
|
||||
(danışmanın neye baktığı güven verir); kayıtlı geçmişte araç parçası olmadığından yalnız canlı
|
||||
cevapta görünür. Hap aşağıdan 4 px gelir, ikon durumla çapraz söner (yay, bounce 0,
|
||||
0,3/0,2 s); hareketi azalt'ta yalnız opaklık. `role="status" aria-live="polite"`.
|
||||
prompt-kit'in `Tool` bileşeni **kullanılmaz**: ham araç adı (`program_ara`), İngilizce rozet,
|
||||
JSON girdi/çıktı ve `dark:` sınıfı taşır — öğrenciye araç adı ve iç kimlik gösterilmez
|
||||
(`danisman-prompt.ts`); yalnız durum modeli (input-streaming → output-available | output-error)
|
||||
ortaktır.
|
||||
- **Genişletme — yerinde büyür, komşular yeniden akar** (Bilal, 6 Eki 2026: tam ekran/perde
|
||||
denemesi "çok kötü"; "div'in smooth genişlemesi, diğer alanların kendini yeniden
|
||||
boyutlandırması"). Başlıktaki `Maximize2` düğmesi (`size-7`, öteki başlık düğmeleriyle aynı
|
||||
sınıf) iki şeyi aynı yayla (§6, `SOHBET_GENISLEME_GECISI`) sürer: sayfa önce panelin üstü
|
||||
sticky hizasına (`top-28`, 7rem) gelecek kadar yayla kayar, panelin **boyu** oradan alt progressive
|
||||
blur'un (`.kt-sayfa-blur-alt`, 7rem) üstüne kadar uzar — yani ekran − 14rem; sayfa o kadar
|
||||
kaymıyorsa kalan fark boydan düşülür, panel bulanık şeride girmez (Bilal, 6 Eki 2026: "aşağı
|
||||
kısmı progressive blura takılıyor") (ölçülen px'ten hedefe `animate(el, { height })`, bitince satır
|
||||
içi değer bırakılır) ve `/listem` ızgarasında sohbet **sütunu** genişler — sütun genişliği CSS
|
||||
değişkeni `--sohbet-kolon` (lg 380 px, xl 440 px; `lg:grid-cols-[minmax(0,1fr)_var(--sohbet-kolon)]`),
|
||||
`animate(izgara, { "--sohbet-kolon": "<px>" })` ile ızgara genişliğinin %60'ına (en çok 760 px)
|
||||
büyür; liste ve harita daralan sol sütunda kendini yeniden akıtır. Telefonda (lg altı) yalnız boy
|
||||
uzar. `Minimize2` geri alır; sohbet durumu (useChat, kaydırma) korunur. Hareketi azalt: geçişsiz.
|
||||
Perde, sabit konum, ayrı `Dialog`/`Drawer` **yok** — sohbet yeniden kurulmaz, sayfa zıplamaz.
|
||||
- **Bağlantı hapları** (`sohbet-baglanti.tsx`, Bilal 6 Eki 2026: "chat link verdiğinde kod gibi
|
||||
veriyor"): danışman cevabındaki site içi adres (`/rehber/…`, `/universite/…`, `/bolum/…`,
|
||||
`/universiteler/<il>`, `/paket`, `/listem`) prompt-kit `Source` kalıbında **küçük satır içi hap**
|
||||
(ilk sürüm h-7 "çok yer kaplıyordu"): `inline-flex h-6 items-center gap-1 rounded-full border
|
||||
border-slate-200 bg-card pl-1.5 pr-2 text-xs font-medium text-primary` + türü söyleyen `size-3.5`
|
||||
ikon (`BookOpen` rehber, `Landmark` üniversite, `GraduationCap` bölüm, `MapPin` şehir, `Coins`
|
||||
paket, `ListChecks` listem), hover §2.1, `sr-only` tür etiketi. Metin markdown bağlantısının
|
||||
başlığıdır (prompt kuralı: `[Yazının başlığı](/rehber/slug)`); model adresi çıplak ya da backtick
|
||||
içinde yazarsa aynı hap slug'dan türetilen adla çizilir (`baglantilariIsaretle`, `InlineKod`).
|
||||
Dış bağlantı (`https://`) yeni sekmede açılan altı çizili düz link. prompt-kit `Source`'un Google
|
||||
favicon'u ve `muted` paleti dış siteler içindir, alınmadı. Sohbet balonu `prose` sınıfı taşır ama
|
||||
typography eklentisi yok — bağlantı/kod görünümü bu bileşenlerden gelir.
|
||||
- **Bağlantı önizlemesi — imleci izleyen mini pencere** (Bilal, 6 Eki 2026: motion-primitives
|
||||
`Cursor` örneği + "aramada yaptığın gibi MacBook penceresi gibi bir kanvas"): rehber, üniversite,
|
||||
bölüm ve şehir haplarının üzerine gelince (yalnız `(hover: hover) and (pointer: fine)`; dokunmatikte
|
||||
yok) body'ye portal'lanan 288 px'lik pencere imleci yayla izler (`useSpring` stiffness 450 /
|
||||
damping 40, imlecin 18 px sağ altı; kenara sığmazsa sol/üst) ve `height 0 → auto, opacity, scale
|
||||
0,3 → 1` ile açılır, aynı yoldan kapanır (`spring`, 0,3 s, bounce 0 — §6; örnekteki 0,1 bilinçli
|
||||
alınmadı). Pencere dili aramadaki mini tarayıcıyla aynı (`katalog-arama.tsx` KESFET_TONLARI slate):
|
||||
`rounded-xl border border-slate-200/80 bg-card shadow-lg shadow-slate-900/5`, çubuk `h-6 bg-slate-50/90`
|
||||
+ üç `size-2 bg-slate-300` nokta (1 / 0,65 / 0,35) + adres hapı (`kolaytercih.com/rehber/…`,
|
||||
`text-xs text-slate-500`). Rehberde gövde **yalnız kapak**: tam `RehberKapak` (compact yok)
|
||||
1200×630 çizilip `scale(288/1200)` ile pencereye oturur — yazı, logo ve piksel süs kesilmez;
|
||||
başlık/özet/iskelet yok. Üniversite/bölüm/şehir gövdesi `p-3`: `UniLogo md` ya da §4.4 ikon
|
||||
kutusu, başlık `font-heading text-sm font-bold line-clamp-2`, özet `text-xs leading-5
|
||||
text-slate-500 line-clamp-3`, künye `text-xs font-medium text-slate-500` ("URAP 18/198").
|
||||
Veri `/api/onizleme?yol=` (bir gün cache, hap başına bir kez; iskelet yok, başlık hap
|
||||
metninden hemen çizilir). `pointer-events-none`, `aria-hidden` — bilgi hapın kendisinde.
|
||||
Hareketi azalt: izleme yok, yalnız opaklık.
|
||||
- **Araç adımları — prompt-kit `Steps`** (`src/components/ui/steps.tsx` + `collapsible.tsx`;
|
||||
Bilal: "Steps de olsun duruma göre"): bir cevapta **iki ve daha çok** araç varsa haplar yerine
|
||||
Steps: başlık `text-xs font-semibold text-slate-500` sürerken "Veriye bakıyorum · 2/3", bitince
|
||||
"3 adımda baktım", solunda durum ikonu (hover'da prompt-kit'in ok değişimi); açılır gövdede solda
|
||||
`w-0.5 bg-slate-200` çubuk, sağda her adım `text-xs font-medium text-slate-700` + durum ikonu.
|
||||
Açık başlar, kullanıcı kapatabilir; açılma `animate-collapsible-down/up` (tw-animate-css),
|
||||
hareketi azalt'ta geçişsiz. Tek araçta hap kalır. Palet slate'e çevrildi (`muted`/`popover` yok).
|
||||
- **Liste uyarıları sohbette, danışmanın ağzından** (Bilal, 6 Eki 2026: "bu tarz uyarıları
|
||||
danışmanın turuncu danışmanla konuş logosu ile chatte vermesi daha uygun"). Listenin kendisinden
|
||||
çıkan uyarılar (dağılım havuza uyarlandı, tüm tercihler tek şehirde — `liste-uyarilari.ts`)
|
||||
listenin üstünde sarı kutu olarak **çizilmez**; sohbetin açılışında, "Danışman özeti"nin hemen
|
||||
altında "Danışman uyarısı" mesajı olur: avatar `DanismanAvatar renk="turuncu"` (panel başlığındaki
|
||||
işaretin rengi, durağan — avatarda hareket yalnız "düşünüyor" demektir), etiket özetle aynı
|
||||
(`text-xs font-semibold text-slate-500`), balon işaretin turuncusunda dolu zemin
|
||||
(`bg-orange-500 font-medium text-white` — Bilal, 6 Eki 2026: "uyarı bubble'ı danışmanın logosu
|
||||
backgroundında olmalı"); birden çok uyarı tek avatarın altında ayrı balonlardır. Bu, §2.2'deki
|
||||
"turuncu dolu zeminde uzun metin konmaz" kuralının bilinen **tek istisnasıdır**: uyarı en çok iki
|
||||
kısa cümledir, daha uzun metin bu balona konmaz; öteki danışman balonları gri kalır
|
||||
(`bg-slate-100 text-slate-800`). Renk tek başına anlam taşımaz: "Danışman uyarısı" etiketi her
|
||||
zaman yazılıdır (§2.2). Sohbet ilerlese de kalır. Yeni bir liste uyarısı gerekince
|
||||
`listeUyarilari`'na eklenir, sayfaya yeni kutu açılmaz.
|
||||
|
||||
## 5. Yerleşim
|
||||
|
||||
|
||||
Reference in New Issue
Block a user