Files
kolaytercih/docs/gece-vardiyasi/2026-09-22/37-yazilimci-navbar-ve-g1-duzeltme.md
bilalgursen 2b350d0c5d content(rehber): gece vardiyasının 14 yeni yazısı + 2 düzeltme, ekip raporları ve kurallar
14 yeni rehber yazısı (hepsi editör denetiminden geçti, 46 yazıda 829 iç link
tarandı, 0 kırık hedef; 180+ DB rakamı yazıların kendi filtreleriyle yeniden
koşuldu):

  taban-siralamalari-alti-yilda-nasil-degisti · kac-net-ile-hangi-bolum ·
  siralama-bandlari-hangi-kapilar-acilir · ayni-bolum-farkli-universite-siralama-farki ·
  hangi-bolumlerin-kontenjani-azaldi · yeni-acilan-bolumler-nasil-degerlendirilir ·
  bilgisayar-mi-yazilim-muhendisligi-mi · kktc-universiteleri-okunur-mu ·
  yapay-zekaya-tercih-sordum-guvenilir-mi · ek-madde-1-puanim-yetiyor-mu ·
  universitede-ilk-hafta-ders-kaydi-muafiyet-kayit-dondurma · yks-2027-takvimi ·
  rehber-ogretmenler-icin-veri-kaynaklari · bolumumu-sevmedim-hangi-kapilar-var

İki canlı yazı düzeltildi:
- veliler-icin-tercih-rehberi: veli diliyle kapanış; altındaki "sıralamanı gir"
  kutusu artık veliye ölü uç değil
- bos-kontenjanlar-ne-anlatiyor: "birkaç yüz kişilik fark" aslında ~9 bin
  (ÖSYM 265.356 ↔ bizim 256.532); payda açıklaması tersti — ek kontenjan
  paydaya girseydi oran düşerdi. guncelleme alanı eklendi (sitemap lastmod).

Kurallar (AGENTS.md):
- Yayın sonrası arama motoru bildirimi: URL denetimi yalnız canlıda 200 dönen
  adrese; kota sayacı; mülk/hesap notu; sitemap grep kuralı
- Yıkıcı git komutları yasak: reset/checkout --/restore/clean/stash
- Tarayıcı açma: tasarımcı ve UX gerekli gördüğünde açabilir (yetenek için
  .claude/agents/tasarimci.md'ye tarayıcı araçları eklendi)

docs/gece-vardiyasi/2026-09-22/ — 34 rapor: CEO kararları ve kapanış turu,
marka/ödeme analizi, sıfır ödeme teşhisi, SEO konu planı, veri kalitesi,
editör denetimi, CTO şartnamesi, yazılımcı ve güvenlik raporları, SABAH-OZETI.

docs/ekip/YAYIN-KUYRUGU.md — Search Console bildirim kuyruğu.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-22 23:25:34 +03:00

178 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 37 — Yazılımcı: navbar taşması + G1 harita/metin düzeltmesi
Tarih: 22 Eylül 2026 · Rol: `yazilimci` · Şartname: `36-tasarimci-g1-ve-navbar.md`
İşaret: **[D]** koşarak doğruladım · **[Ç]** koddan çıkarım
---
## Özet (5 madde)
1. **İki dal, sırayla, ayrı ayrı commit'lendi.** `duzeltme/navbar-tasmasi` (1 commit, `main`'den) ve `funnel/sonuc-ilk-ekran` (mevcut dala 2 commit eklendi, geçmiş yeniden yazılmadı). Push/merge yok, `main`'e commit yok.
2. **Navbar:** tasarımcının Alternatif 1'i uygulandı — iki etiket span'inden hem `xl` hem `sm` görünürlük sınıfları kaldırıldı. `aria-label`'ların ikisi de zaten yerindeydi, doğrulandı; erişilebilirlik değişmedi. Alternatif 2'ye (`Nasıl çalışır?`) dokunulmadı.
3. **G1 (a):** `<ManuelHarita />` tablonun altına alındı (silinmedi, geri getirilmedi). Yeni sıra: **tadımlık → tablo → harita → sihirbaz → dipnot.** Sıraya bağlı stiller yeni sıraya göre denetlendi; harita ilk çocuk olmaktan çıktığı için kendi `mt-16` boşluğunu almak zorunda kaldı (bkz. §Sapmalar 1).
4. **G1 (b):** `tadimlik-satiri.tsx` paragrafına "ilk üçü hemen açılır" eklendi; ayrı `[Bilal]` commit'i, dalın tepesinde. İki `[Bilal]` commit'inin de tek tek düşürülebilir olduğu ters yama denemesiyle doğrulandı [D].
5. **Doğrulama iki dalda da temiz:** `next typegen` ✓ · `tsc --noEmit` → **0** · `pnpm lint` → **0** [D]. `pnpm install`/`pnpm build` talimat gereği koşulmadı; tarayıcı/dev sunucusu açılmadı.
**Bana ait olmayan 19 commit'lenmemiş dosyaya dokunulmadı** — hiçbiri stage'lenmedi, `git add -A`/`.` kullanılmadı, dosyalar yol vererek eklendi. Yasaklı komutların (`reset`, `checkout --`, `restore`, `clean`, `stash`) hiçbiri koşulmadı; ters yama denemeleri bile `git apply --check` ile ağaca dokunmadan yapıldı.
---
# DAL 1 — `duzeltme/navbar-tasmasi`
Taban: `main` `9bd448b`. **1 commit.**
| SHA | Mesaj |
|---|---|
| `9abfdf4` | `fix(navbar): pill etiketleri her genişlikte gizli — çakışma kapanır` |
**Dokunulan dosyalar (2):**
`src/features/kullanici/components/user-nav.tsx` · `src/features/liste/components/listem-butonu.tsx`
## Ne değişti
- `user-nav.tsx:59` → `className="hidden sm:inline lg:hidden xl:inline"` **→ `className="hidden"`** (span korundu, metin DOM'da ama `display:none`).
- `listem-butonu.tsx:39` → aynı değişiklik.
- Her iki yerdeki eski yorum ("lg–xl arasında metin gizli") artık yanlış olacağından yeniden yazıldı; kök neden (konteyner 1152'de kilitli, `xl` yeni yer açmıyor, sağ kümenin bütçesi ~304 px) kodun yanına not düşüldü.
- **Kapsam dışı bırakılan:** `user-nav.tsx:73`'teki kredi etiketi (`hidden md:inline lg:hidden`) — şartname yalnız iki etiket span'ini sayıyor, dokunulmadı.
## Kabul kriterleri
| Kriter | Durum | Nasıl doğrulandı |
|---|---|---|
| `grep -n "xl:inline\|sm:inline"` iki dosyada 0 sonuç | ✔ | `GREP_EXIT=1` (eşleşme yok) [D] |
| `aria-label` her iki dosyada var | ✔ | `user-nav.tsx:52` `aria-label="Yapay Zeka Listem"` · `listem-butonu.tsx:33` `aria-label={\`Kendi listem — ${liste.length}/${MANUEL_LISTE_MAX} program\`}` [D] |
| Alternatif 2 uygulanmadı | ✔ | `katalog-arama.tsx` dalın diff'inde yok [D] |
| Tasarımcının hesabı (375 → 284,5/351 · 768 → 555,8/736 · 1280+ pozitif) | ✔ [Ç] | Kod değişikliği tasarımcının hesapladığı girdiyi birebir üretiyor; piksel ölçümü onun raporundan, ben ölçmedim |
> **Not — grep kriterini kirleten tuzak:** ilk yazdığım yorum gerekçeyi anlatırken `xl:inline` dizesini literal geçiriyordu ve kabul kriteri grep'i 1 sonuç dönüyordu. Yorum, anlamı koruyarak dizeyi içermeyecek biçimde yeniden yazıldı. Kriter artık gerçekten 0.
## Doğrulama çıktıları
```
$ pnpm exec next typegen
Generating route types...
✓ Types generated successfully
$ pnpm exec tsc --noEmit ; echo "TSC_EXIT=$?"
TSC_EXIT=0
$ pnpm lint ; echo "LINT_EXIT=$?"
> kolaytercih@0.1.0 lint
> eslint
LINT_EXIT=0
```
---
# DAL 2 — `funnel/sonuc-ilk-ekran`
Mevcut dalın tepesine (`d2e1190`) **2 commit eklendi**; geçmiş yeniden yazılmadı, hiçbir commit amend/rebase edilmedi.
| # | SHA | Mesaj | Dosyalar |
|---|---|---|---|
| 7 | `e912665` | `fix(sonuc): harita tablonun altına alınır — hidrasyon kayması kapanır` | `sonuc/page.tsx`, `manuel-harita.tsx`, `tadimlik-satiri.tsx` |
| 8 | **`e3519a5`** | **`[Bilal] content(tadimlik): paragraf maskenin gerçeğini söyler`** | `tadimlik-satiri.tsx` |
**Dalın `[Bilal]` commit'leri: `d2e1190` (6.) ve `e3519a5` (8., tepe).**
Dalın `main`'den toplam diff'i hâlâ aynı 6 dosya; yeni dosya eklenmedi.
## (a) `e912665` — harita tablonun altına
Yeni sıra `src/app/sonuc/page.tsx` içinde:
```
118 <TadimlikBolumu sira={sira} tur={turKey} />
124 <SonucProgramTablosu … />
131 <ManuelHarita />
135 <SonucSihirbazi … />
```
Gerekçe (B1) kodun yanına yorum olarak yazıldı: sunucu snapshot'ı hep boş liste döndüğü için harita yukarıdayken kayıtlı listesi olan dönüş ziyaretçisinde hidrasyondan sonra ~368 px'lik bir blok `<main>`'in tepesine giriyor, impact fraction ~1. Aşağıda belirince yalnızca sihirbaz + dipnot iteliyor.
### Sıraya bağlı stiller — tek tek denetlendi
| Eleman | Kural | Yeni sırada durum |
|---|---|---|
| `tadimlik-satiri.tsx:127` `<section className="mt-16 min-w-0 first:mt-0">` | `first:mt-0` | ✔ **Sağlamlaştı.** Harita artık üstünde olmadığı için bu `<section>` `<main>`'in ilk DOM çocuğu; kural her durumda eşleşiyor, eskiden "harita null'sa" koşuluna bağlıydı. Yorum yeni gerçeğe göre güncellendi. |
| `program-tablosu.tsx:175` `<section className="mt-16">` | sabit üst boşluk | ✔ Değişmedi; tadımlık render edilmediğinde (girişli kullanıcı) ilk çocuk olup `mt-16` alıyor — G1 öncesindeki davranışın aynısı, bu commit'in getirdiği bir değişiklik değil. |
| `sihirbaz-cagri-karti.tsx:321` `<section className="… mt-16 …">` | sabit üst boşluk | ✔ Değişmedi. |
| `manuel-harita.tsx:74` kök `<div>` | **boşluğu yoktu** | ⚠ **Düzeltildi** — bkz. Sapmalar 1. |
## (b) `e3519a5` — `[Bilal]` metin artığı
`tadimlik-satiri.tsx:135` civarı:
> Sıralamana uygun bir programın gerekçesi, yerleşme riski ve taban trendi — 24 tercihlik listenin her satırı bu formatta kurulur**, ilk üçü hemen açılır.**
- Sayı yazıldı, bulanıklaştırılmadı (Bilal'in seçtiği yön).
- Garanti/vaat dili yok; cümle bir şey **eklemiyor**, var olan iddiayı **sınırlıyor**.
- `3` elle yazıldı: `ACIK_SATIR` `src/lib/rapor-maske.ts:12`'de ve o dosya `server-only`; `tadimlik-satiri.tsx` ise `"use client"` — sabit import edilemiyor. **Tek kaynak bağı kodun yanına yorum olarak iliştirildi**: `ACIK_SATIR` değişirse bu cümle aynı commit'te değişmeli. [D — `rapor-maske.ts:12` okundu, değer 3]
### `[Bilal]` commit'lerinin tek tek düşürülebilirliği — doğrulandı [D]
Dizilim `… 2373a9a → d2e1190 [Bilal] → e912665 → e3519a5 [Bilal]` olduğu için `d2e1190` tepede değil; düşürme yolu `git revert` (yıkıcı komut yasağına da uygun olan tek yol). Ters yamanın temiz uyguladığı, **çalışma ağacına dokunmadan** sınandı:
```
$ git show d2e1190 | git apply --check --reverse - → EVET (temiz ters yama)
$ git show e3519a5 | git apply --check --reverse - → EVET (temiz ters yama)
```
Hunk'lar birbirinden uzak ve kesişmiyor: `d2e1190` → satır 188 ve 202 (CTA metni), `e3519a5` → satır 133-142 (paragraf). Aralarındaki `e912665` ise 123-127 (yorum) bölgesine dokunuyor.
**Ana commit'ler `[Bilal]` commit'leri olmadan derlenir mi?**
- `e912665` için **[D]**: `tsc` ve `lint` tam olarak bu commit'in ağacı üzerinde koşuldu (commit'ten hemen önce), ikisi de 0.
- `d2e1190` düşürülürse: o commit yalnızca iki metin dizesini değiştiriyor (`Giriş yap ve listeni oluştur` → `Kendi listemi oluştur` ve alt satıra bir cümle), hiçbir tanımlayıcıya dokunmuyor — geri alınması derlemeyi kıramaz **[Ç]**.
## Doğrulama çıktıları (dal 2, tepe commit'in ağacında)
```
$ pnpm exec next typegen
Generating route types...
✓ Types generated successfully
$ pnpm exec tsc --noEmit ; echo "TSC_EXIT=$?"
TSC_EXIT=0
$ pnpm lint ; echo "LINT_EXIT=$?"
> kolaytercih@0.1.0 lint
> eslint
LINT_EXIT=0
```
`/meraklisina` şeması el değmedi [D]:
```
$ git diff --name-only 9bd448b..HEAD | grep -E "huni-semasi|meraklisina|analitik.ts|rapor-maske|credits.ts"
(boş)
```
---
## Şartnameden sapmalar (2)
1. **`manuel-harita.tsx`'in kök `<div>`'ine `mt-16` eklendi** — şartname yalnız `page.tsx`'te yer değişimi istiyordu. Gerekçe: haritanın kök öğesinin üst boşluğu yoktu, çünkü `<main>`'in ilk çocuğuyken boşluğu `main`'in `py-12`'sinden alıyordu. Tablonun altına taşınınca tabloya yapışık kalacaktı; sayfadaki diğer bölümlerin hepsi `mt-16` kullanıyor (tablo `<section>`'ı, sihirbaz kartları, tadımlık). Bu bir ritim düzeltmesi, davranış değişikliği değil. Dosya zaten G1'in sahiplik kümesinde. **Gözle kontrol edilmeli** (aşağı, Bilal'den istenen 1).
2. **İki commit'te yorum güncellemeleri** — `tadimlik-satiri.tsx:123`'teki `first:mt-0` yorumu haritanın üstte olduğunu varsayıyordu, `page.tsx`'teki hiyerarşi yorumu da eski sırayı anlatıyordu. İkisi de yeni sıraya göre yeniden yazıldı; kod değil belge düzeltmesi, ama diff'e giriyor.
## Kapsam dışı bırakılanlar (bilerek)
- **B3** (Suspense fallback `max-w-6xl` ↔ içerik `max-w-4xl`, 256 px genişlik farkı) — `sonuc/page.tsx:47`. Bu işin parçası değil, dokunulmadı. Aynı dosyada duruyor; A3 (`/sonuc` `<h1>`) dalıyla birlikte gitmesi ucuz olur.
- **B4** ("Giriş sonrası liste hemen üretilir" kredisiz kullanıcıda tutmuyor) — `tadimlik-satiri.tsx:188-189`, yani `d2e1190`'ın kendi hunk'ı. Dokunmadım; düzeltilecekse o `[Bilal]` commit'iyle birlikte ele alınmalı.
- Navbar'daki küçük bulgular (kredi link'inin erişilebilir adının salt "12" olması, <640 px'te 36 px dokunma hedefi) — şartname bunları istemedi.
- Alternatif 2 (`Nasıl çalışır?` gizleme) — Bilal A'yı seçti.
## Merge sonrası doğrulanması gerekenler
1. **`pnpm build` iki dalda da alınmadı** (disk talimatı). Push edilecek commit'in **kendisi** üzerinde alınmalı — çalışma ağacı kirli olduğu için buradaki bir build zaten yanıltıcı olurdu (AGENTS.md "Push öncesi build zorunlu").
2. **Navbar, girişli oturumda 375 / 768 / 1280 px** — header tek satıra indi mi, pill'ler ikon+rozet hâliyle tanınabiliyor mu. Tasarımcının hesabı bunu söylüyor ama ölçüm hesapla yapıldı, gözle değil.
3. **Ekran okuyucuyla iki pill** — etiket artık yalnız `aria-label`'dan geliyor; VoiceOver/NVDA'da "Yapay Zeka Listem, bağlantı" ve "Kendi listem — 3/24 program, düğme" duyuluyor mu.
4. **`/sonuc`, kayıtlı manuel listesi olan oturumda** — harita hidrasyonda tablonun altında belirip **üstündeki hiçbir şeyi itmiyor** mu (B1'in asıl testi), ve tabloyla arasındaki `mt-16` boşluğu doğru duruyor mu.
5. **Analitik serisi** — `tadimlik_goruntulendi` için 32 numaralı raporun uyarısı geçerliliğini koruyor; tadımlık hâlâ ilk ekranda, bu commit'ler paydayı değiştirmedi.
`guvenlik-uyum` denetimi **gerekmiyor**: iki dalda da para, giriş kimlik doğrulaması ya da kişisel veri akışına dokunulmadı — değişenler yerleşim sırası, iki CSS sınıfı ve bir cümle.
## Bilal'den istenen (3 madde)
1. **`manuel-harita.tsx`'e eklediğim `mt-16`'yı gözle onayla** — harita artık tablonun hemen altında, aradaki boşluk diğer bölümlerle aynı ritimde mi, yoksa fazla/az mı? **~2 dk.**
2. **`e3519a5` (`[Bilal] content(tadimlik): paragraf maskenin gerçeğini söyler`) onayı** — "…24 tercihlik listenin her satırı bu formatta kurulur, **ilk üçü hemen açılır**." senin dilin mi? Hayırsa `git revert e3519a5`; altındaki hiçbir şey etkilenmez (ters yama temiz doğrulandı). **~2 dk.**
3. **Navbar'da kalan 1024–1151 px bandı** — Alternatif 1 bu dar bantta profilsiz + liste dolu durumda −48 … −1 px açık bırakıyor (tasarımcının hesabı). Alternatif 2'yi (`Nasıl çalışır?` yalnız ≥1280 px) isteyecek misin, yoksa bu bant kabul mü? **~3 dk.**