Files
kolaytercih/docs/ekip-raporlari/2026-10-07/yazilimci-paket-C.md
bilalgursen da0e9dff7a docs(ekip): 7–10 Ekim raporları, eval sonuçları, seslendirme betiği
- docs/ekip-raporlari/2026-10-07, 2026-10-09, 2026-10-10 raporları ve ekran görüntüleri
  (ses/ altındaki mp3 dosyaları depoya alınmadı, 38 MB)
- BACKLOG #38: rehber yazılarına "Dinle" düğmesi adayı
- scripts/seslendir.py (Türkçe TTS) ve .gitignore'a .venv-tts/
- scripts/eval/sonuc: 8–10 Ekim revizyon eval çıktıları

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-11 00:33:39 +03:00

7.4 KiB
Raw Blame History

Yazılımcı raporu — Paket C · program varyant etiketi (madde 2-3)

Worktree: .claude/worktrees/agent-a5bcd7331b2f3c5b2, dal worktree-agent-a5bcd7331b2f3c5b2, taban 4d30dd1 (şartnamenin tabanı). Push yok.

Özet (5 madde)

  1. Program.varyant tek kaynaktan: src/lib/program-varyant.ts (saf varyantEtiketi), db.ts SELECT_COLS üç ilişkili alt sorguyla program_ozellik'ten okur, programSatiri etiketi üretir. Başkent Tıp 6 satırı artık "Ücretli / %50 İndirimli / Burslu / Ücretli · İngilizce / Burslu · İngilizce / %50 İndirimli · İngilizce" olarak ayrışıyor (test çıktısı).
  2. UI: /sonuc tablosu, rapor listesi (/listem), üniversite ve bölüm katalog tabloları tür çipinin hemen ardından SATIR_CIP ile çip çiziyor; çekmece ikinci satırda · {varyant}. Null ise hiçbir şey çizilmiyor.
  3. Manuel liste ve kayıtlı rapor: ManuelTercih.varyant? (eski localStorage kayıtları geçer), programEkleIste etiketi kopyalar; kullanicininRaporu okuma anında tek sorguyla 24 id'ye varyant yazar (eski raporlar da kazanır, app.db'ye yazılmaz).
  4. Model: havuzuKompaktJson varyant alanını taşıyor. B'nin dosyasına dokunulmadı; entegrasyon satırı aşağıda.
  5. Doğrulama: scripts/eval/varyant-denetim.ts 14/14 ✔ çıkış 0; typegen + tsc + eslint temiz; pnpm tasarim:denetim 0 hata / 12 uyarı (hepsi dokunulmayan dosyalarda, önceden var). data/ git'te temiz.

Commit listesi

  • 5c583ac feat(veri): Program.varyant — burs/dil/öğretim türü etiketi tek kaynaktan (program_ozellik) — src/types/yokatlas.ts, src/lib/db.ts, src/lib/program-varyant.ts (Y), src/lib/rapor-havuzu.ts, scripts/eval/varyant-denetim.ts (Y)
  • 7c48f64 feat(liste): varyant çipi — sonuç tablosu, kendi listem çekmecesi, katalog tabloları — liste-queries.ts, liste-dogrula.ts, use-tercih-profili.ts, program-ekle-butonu.tsx, program-tablosu.tsx, liste-cekmecesi.tsx, universite-program-tablosu.tsx, bolum-program-listesi.tsx
  • 10b3e5b feat(listem): kayıtlı raporun satırlarına varyant (okuma anında zenginleştirme) — rapor-queries.ts, types/rapor.ts, rapor-listesi.tsx

Dokunulan dosyaların tamamı şartnamenin C satırındadır; liste dışı dosya yok.

Kabul kriterleri

  • ✔ Test 4/4 (14 alt denetim), çıkış 0 — pnpm tsx scripts/eval/varyant-denetim.ts koşuldu (react-server koşulu gerekmedi). dilimAra(100000,"say","dengeli",{limit:50}) 50 satırın 50'sinde varyant tanımlı, 34'ü etiketli; 107210332 Marmara Hukuk → null.
  • ✔ pnpm exec next typegen && pnpm exec tsc --noEmit temiz (çıktı yok); pnpm exec eslint temiz; pnpm lint → "Tasarım denetimi: 0 hata, 12 uyarı" (uyarılar secimlerim-paneli.tsx, meraklisina-demo.tsx — bu pakette dokunulmadı).
  • ✔ grep -c varyant: rapor-listesi 3, program-tablosu 2, liste-cekmecesi 2, universite-program-tablosu 2, bolum-program-listesi 5.
  • ✔ data/yokatlas.db değişmedi: git status --short data boş; test ve getDb() readonly: true.
  • ✔ Çip SATIR_CIP sınıf dizisiyle birebir (sabit import edildi, elle sınıf yazılmadı); dark: yok.

Şartnameden sapmalar / notlar

  1. Worktree tabanı: verilen worktree a3cb058'deydi (şartname tabanı 4d30dd1'in 3 commit gerisi; paketin dosyaları — liste-cekmecesi, rapor-queries, types/rapor.ts, rapor-havuzu — iki commit arasında farklıydı). Çalışma ağacı temiz olduğu için git merge --ff-only 4d30dd1 ile ileri sarıldı; yıkıcı komut kullanılmadı. Dal 1760690 (v2 HEAD) ile değil 4d30dd1 ile başlıyor; v2'ye merge'de bir commit'lik fark var, paketin dosyalarıyla çakışması beklenmez (koddan çıkarım; 1760690 yalnız header rozeti + sürüm).
  2. rapor.ts satır numarası: şartname :779 diyor, 4d30dd1'de ilgili satır 763. Orkestratörün ekleyeceği tam hâl:
    ...metindekiSayilar(p.isim, p.universite, p.varyant ?? ""),
    
    (src/lib/ai/rapor.ts:763, ustSayilar kümesinin içindeki ...metindekiSayilar(p.isim, p.universite), satırının yerine.) Bu satır eklenmezse model gerekçede "%50" yazdığında sayı denetimi o cümleyi düşürebilir — işlev bozulmaz, yalnız gerekçe kırpılır.
  3. Veri gözlemi (şartnamedeki metinden fark): ogrenim_turu DB'de "Açık Öğretim" (iki kelime) ve "UOLP"; "İkinci Öğretim" / "Açıköğretim" değeri DB'de yok (SELECT DISTINCT ogrenim_turu). Etiket DB'deki metni olduğu gibi yazar; birim testteki "İkinci Öğretim" girdisi saf fonksiyonu ölçer. burs_orani devlette NULL yanında boş string de geliyor; boş string null gibi davranır (5. birim vakası).
  4. DESIGN.md §4.15 ile tutarlılık: §4.15'te "Program varyantı ('… (İngilizce) (Burslu)') adın altında ayrı satır SATIR_ALT_AD" cümlesi var — o kural isimin parantezli hâli için (bölüm sayfasındaki bazAd farkı, bolum-program-listesi.tsx:218, aynen duruyor). Bu paketteki burs/dil/öğretim türü etiketi şartname gereği çip (SATIR_CIP, tür çipinin yanı). Belgeye bir cümle eklenmesi gerekir (docs/tasarim/DESIGN.md §4.15, paket dosya listesinde olmadığı için dokunmadım): "Burs/dil/öğretim türü etiketi (Program.varyant) tür çipinin hemen ardından SATIR_CIP ile; null ise çizilmez."
  5. programdanManuelTercih (liste-store.ts) paket listesinde yok; varyant use-tercih-profili.ts içinde spread ile ekleniyor. liste-store'u doğrudan çağıran başka ekleme yolu yok (grep programEkleIste( → yalnız program-ekle-butonu.tsx).
  6. Çekmece satırında · {varyant} shrink-0; üniversite adı min-w-0 link olduğu için uzun adlarda ad sarar, etiket kesilmez. 375 px notu (koddan çıkarım, tarayıcı açılmadı): meta satırı flex-wrap, en uzun etiket "%50 İndirimli · İngilizce" (~25 karakter, text-xs) tür çipi + il ile sığmazsa alt satıra iner; dokunma hedefi yok (çip interaktif değil). Bölüm sayfasında satır zaten iki 44 px düğmeyle 129 px; bir çip satırı daha eklenirse yükseklik değişmez (düğmeler belirliyor, §4.15). tasarimci kontrolü şartname C-5'te zaten var.
  7. Rapor dosyasının yeri: ana checkout'taki docs/ekip-raporlari/2026-10-07/yazilimci-paket-C.md yoluna yazma worktree izolasyonu yüzünden reddedildi; rapor worktree içinde aynı göreli yolda, commit'lenmemiş (untracked) duruyor. Orkestratör ana checkout'a kopyalar.

Merge sonrası doğrulanması gerekenler

  • Orkestratör rapor.ts:763 satırını ekledikten sonra pnpm tsx --conditions=react-server scripts/eval/akis-denetim.ts ve B'nin revizyon-denetim.ts'i (varyantlı havuz JSON'u ile prompt boyutu az artar; şema değişmedi).
  • Gerçek üretimde bir listede aynı bölümün 2+ varyantı görünürse gerekçenin "burslu/ücretli" ayrımını yazıp yazmadığı (yapay-zeka-muhendisi eval'i; kod değil model davranışı).
  • /listem eski kayıtlı raporda çipin göründüğü (okuma anında zenginleştirme) — Bilal'in kendi hesabında 1 bakış.
  • Docker imajında program_ozellik tablosunun seed'de geldiği (Dockerfile) — şartname doğruladı, ben koddan teyit etmedim; tablo yoksa alt sorgu SQL hatası verir (koruma bilinçli yok).

Bilal'den istenen

  1. docs/tasarim/DESIGN.md §4.15'e yukarıdaki tek cümlenin eklenmesine onay (ya da tasarımcıya verilmesi) — 2 dk.
  2. Yok (para/giriş/kişisel veriye dokunulmadı; guvenlik-uyum denetimi gerekmiyor).