- 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>
7.4 KiB
7.4 KiB
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)
Program.varyanttek kaynaktan:src/lib/program-varyant.ts(safvaryantEtiketi),db.tsSELECT_COLSüç ilişkili alt sorguylaprogram_ozellik'ten okur,programSatirietiketi ü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ı).- UI:
/sonuctablosu, rapor listesi (/listem), üniversite ve bölüm katalog tabloları tür çipinin hemen ardındanSATIR_CIPile çip çiziyor; çekmece ikinci satırda· {varyant}. Null ise hiçbir şey çizilmiyor. - Manuel liste ve kayıtlı rapor:
ManuelTercih.varyant?(eski localStorage kayıtları geçer),programEkleIsteetiketi kopyalar;kullanicininRaporuokuma anında tek sorguyla 24 id'ye varyant yazar (eski raporlar da kazanır, app.db'ye yazılmaz). - Model:
havuzuKompaktJsonvaryant alanını taşıyor. B'nin dosyasına dokunulmadı; entegrasyon satırı aşağıda. - Doğrulama:
scripts/eval/varyant-denetim.ts14/14 ✔ çıkış 0;typegen + tsc + eslinttemiz;pnpm tasarim:denetim0 hata / 12 uyarı (hepsi dokunulmayan dosyalarda, önceden var).data/git'te temiz.
Commit listesi
5c583acfeat(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)7c48f64feat(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.tsx10b3e5bfeat(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.tskoşuldu (react-server koşulu gerekmedi).dilimAra(100000,"say","dengeli",{limit:50})50 satırın 50'sindevaryanttanımlı, 34'ü etiketli;107210332Marmara Hukuk → null. - ✔
pnpm exec next typegen && pnpm exec tsc --noEmittemiz (çıktı yok);pnpm exec eslinttemiz;pnpm lint→ "Tasarım denetimi: 0 hata, 12 uyarı" (uyarılarsecimlerim-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.dbdeğişmedi:git status --short databoş; test vegetDb()readonly: true. - ✔ Çip
SATIR_CIPsınıf dizisiyle birebir (sabit import edildi, elle sınıf yazılmadı);dark:yok.
Şartnameden sapmalar / notlar
- 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çingit merge --ff-only 4d30dd1ile ileri sarıldı; yıkıcı komut kullanılmadı. Dal1760690(v2 HEAD) ile değil4d30dd1ile başlıyor; v2'ye merge'de bir commit'lik fark var, paketin dosyalarıyla çakışması beklenmez (koddan çıkarım;1760690yalnız header rozeti + sürüm). rapor.tssatır numarası: şartname:779diyor,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,ustSayilarkü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.- Veri gözlemi (şartnamedeki metinden fark):
ogrenim_turuDB'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_oranidevlette NULL yanında boş string de geliyor; boş string null gibi davranır (5. birim vakası). - 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 kuralisimin parantezli hâli için (bölüm sayfasındakibazAdfarkı,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ındanSATIR_CIPile; null ise çizilmez." programdanManuelTercih(liste-store.ts) paket listesinde yok; varyantuse-tercih-profili.tsiçinde spread ile ekleniyor.liste-store'u doğrudan çağıran başka ekleme yolu yok (grep programEkleIste(→ yalnızprogram-ekle-butonu.tsx).- Çekmece satırında
· {varyant}shrink-0; üniversite adımin-w-0link 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).tasarimcikontrolü şartname C-5'te zaten var. - Rapor dosyasının yeri: ana checkout'taki
docs/ekip-raporlari/2026-10-07/yazilimci-paket-C.mdyoluna 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:763satırını ekledikten sonrapnpm tsx --conditions=react-server scripts/eval/akis-denetim.tsve B'ninrevizyon-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-muhendisieval'i; kod değil model davranışı). /listemeski kayıtlı raporda çipin göründüğü (okuma anında zenginleştirme) — Bilal'in kendi hesabında 1 bakış.- Docker imajında
program_ozelliktablosunun 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
docs/tasarim/DESIGN.md§4.15'e yukarıdaki tek cümlenin eklenmesine onay (ya da tasarımcıya verilmesi) — 2 dk.- Yok (para/giriş/kişisel veriye dokunulmadı;
guvenlik-uyumdenetimi gerekmiyor).