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>
This commit is contained in:
52
docs/ekip-raporlari/2026-10-07/yazilimci-paket-A.md
Normal file
52
docs/ekip-raporlari/2026-10-07/yazilimci-paket-A.md
Normal file
@@ -0,0 +1,52 @@
|
||||
# Yazılımcı — Paket A · sohbet sunucusu (madde 1 rehber linki doğrulama, madde 6 revizyon sınırı)
|
||||
|
||||
Worktree: `.claude/worktrees/agent-a3eecaccfe3c3822d`, dal `worktree-agent-a3eecaccfe3c3822d`. Taban: worktree `a3cb058`'de verilmişti (şartname tabanının 3 commit gerisi; `liste-revizyon.ts`, `sohbet-meta.ts` yoktu) → dal temizken `git merge --ff-only 4d30dd1` ile şartname tabanına ileri sarıldı; `node_modules` ana checkout'tan `cp -Rc` ile klonlandı.
|
||||
|
||||
Not: Rapor ana checkout'a (`docs/ekip-raporlari/2026-10-07/yazilimci-paket-A.md`) yazılamadı — worktree izolasyonu ana checkout'a yazmayı engelliyor. Bu dosya worktree'de aynı yolda, commit'lenmemiş duruyor; orkestratör kopyalar.
|
||||
|
||||
## Özet
|
||||
|
||||
1. **Madde 1 çözüldü, akış içi.** Yeni saf modül `src/lib/ai/baglanti-denetimi.ts`: `rehberBaglantilariniDuzelt` (markdown / ters tırnak / çıplak `/rehber/<slug>`; kayıtlıysa dokunmaz, yakınsa Dice ≥ 0,5 + ikinciden ≥ 0,15 önde ise `[kayıt başlığı](/rehber/yeni-slug)`, yoksa düz metin / adres silinir) ve `BaglantiTamponu` (akışta `[`, `` ` ``, `/rehber/` ve yarım kalmış `/reh` önekinde tutar; kapanınca doğrulayıp bırakır). `danismanAkisi` `rehberler?` seçeneği aldı; `route.ts` gerçek `getRehberAramaKayitlari()` listesini veriyor; ekran ve kayıt (`onTamam`) aynı düzeltilmiş metni alıyor; `CiktiDenetimi.baglantiDuzeltme` + log (`[soru] rehber bağlantısı düzeltildi: n slug→yeniSlug`). Prompt BAĞLANTI maddesine şartnamedeki cümle eklendi.
|
||||
2. **Madde 6 çözüldü, göç yok.** `MAX_REVIZYON` silindi; `liste-revizyon.ts` HAK kapısı ve `"HAK"` kodu kalktı; `ozetCikar(rapor)` `kalanHak` döndürmüyor; `sohbet-meta.ts` tipi, `araclar.ts` (`kalanRevizyon`, HAK dalı, "en fazla 2 hak", "kalan hakkı belirt"), `danisman-prompt.ts` (`revizyonBolumu({ paketli })`, "Revizyon sınırsız; … tek seferde doğru kur"), `route.ts`, `/listem` (düğme paketlide hep görünür, "kalan hak" ifadeleri kalktı), demo senaryosu ve pazarlama metni ("Sınırsız liste revizyonu (danışmanla sohbetten)") güncellendi. `revisionCount: +1` sayacı kaldı. Paketsiz-kredili adayda paket şartı korundu (Bilal varsayımı).
|
||||
3. **Çakışma kararı 1 uygulandı:** `listem-govde.tsx` → `revizyonHakki={hasPaket ? 1 : 0}` + yorum; `sohbet-client.tsx`'e dokunulmadı.
|
||||
4. **Testler:** `scripts/eval/baglanti-denetim.ts` (yeni) **44/44**; `scripts/eval/akis-denetim.ts` mevcut 7 + yeni `rehber-uydurma`/`rehber-gercek` **9/9**. `typegen` ✓, `tsc` ✓ (çıkış 0), `pnpm lint` ✓ (eslint 0; tasarım denetimi 0 hata, 12 uyarı — hepsi dokunmadığım dosyalarda, önceden var).
|
||||
5. **İki lokal commit**, push yok. Şartnamenin commit bölümünden tek sapma: `araclar.ts` ve `danisman-prompt.ts`/`route.ts`'nin revizyon-hak değişiklikleri 1. commit'e girdi (aynı dosya/hunk'lar; her commit kendi başına derlenir diye — koddan çıkarım, ayrı worktree'de build alınmadı).
|
||||
|
||||
## Commit'ler
|
||||
|
||||
- `15f4c4f` feat(sohbet): rehber bağlantıları akışta gerçek slug'larla doğrulanıyor — `src/lib/ai/baglanti-denetimi.ts` (Y), `src/lib/ai/sohbet-akisi.ts`, `src/app/api/soru/route.ts`, `src/lib/ai/danisman-prompt.ts`, `src/lib/ai/araclar.ts`, `scripts/eval/baglanti-denetim.ts` (Y), `scripts/eval/akis-denetim.ts`
|
||||
- `e3d79f5` feat(revizyon): revizyon sayısı sınırı kaldırıldı — tek koşul paket + sohbet kredisi — `src/lib/credits.ts`, `src/features/rapor/liste-revizyon.ts`, `src/lib/ai/sohbet-meta.ts`, `src/features/rapor/components/listem-icerik.tsx`, `src/features/rapor/components/listem-govde.tsx`, `src/features/rapor/components/sohbet-senaryo-verisi.ts`, `src/app/page.tsx`, `src/features/odeme/components/paket-satinal.tsx`
|
||||
|
||||
Dosya sahipliği tablosunun dışına çıkılmadı.
|
||||
|
||||
## Kabul kriterleri (A-3)
|
||||
|
||||
| # | Kriter | Durum | Nasıl doğrulandı |
|
||||
|---|---|---|---|
|
||||
| 1 | `grep -rn "MAX_REVIZYON\|kalanHak\|kalanRevizyon" src scripts` → 0 | ✔ | çalıştırıldı, 0 satır |
|
||||
| 2 | `grep -rn "revizyon hakk" src` → 0 | ✔* | 1 satır kaldı: `src/lib/ai/rapor.ts:679` yorumu ("revizyon hakkını yakardı") — **B paketinin dosyası**, dokunmadım |
|
||||
| 3 | `baglanti-denetim.ts` geçer, çıkış 0 | ✔ | 44/44: (a) gerçek slug aynen, (b) `yatay-gecis-rehberi` → `yatay-gecis-cap-yandal` başlık kayıttan, (c) uydurma → düz metin, (d) ters tırnak + çıplak adres, (e) tampon 1/3/4/7/karakter-karakter parçalamada tek seferlikle birebir, (f) `[2024] verisi` kayıpsız; ek: `/universite`,`/bolum` dokunulmaz, site köklü markdown, yarım önek `/reh` |
|
||||
| 4 | `akis-denetim.ts` 7 + 2 geçer | ✔ | 9/9; `rehber-uydurma` → `baglantiDuzeltme === 2`, kayıtta `/rehber/obp-nedir-nasil-hesaplanir` ve `/rehber/yatay-gecis-cap-yandal` var, `/rehber/obp-nedir)` yok; `rehber-gercek` → 0. `Beklenen` tipi `baglantiDuzeltme` ile genişledi, eski senaryolar 0 |
|
||||
| 5 | typegen + tsc + lint temiz | ✔ | çalıştırıldı (son düzenlemeden sonra tsc çıkış 0 ve dosya bazlı eslint 0; tam `pnpm lint` bir önceki durumda 0 hata) |
|
||||
|
||||
Komut: `pnpm tsx --conditions=react-server scripts/eval/baglanti-denetim.ts` ve `… scripts/eval/akis-denetim.ts` (ikincisi `data/app.db`'nin geçici kopyasını kullanır; `data/app.db` değişmedi, `git status` temiz).
|
||||
|
||||
## Şartnameden sapmalar / notlar
|
||||
|
||||
- Commit bölünmesi (yukarıda, madde 5).
|
||||
- `baglanti-denetimi.ts` ek olarak `enYakinRehber`'i export ediyor (yapay-zeka-muhendisi eşikleri ayrı sınayabilsin diye); eşikler sabit: `YAKIN_ESIK = 0.5`, `ACIK_ARA_FARK = 0.15`.
|
||||
- Akış zaman aşımında/hatada tamponda tutulan metin `catch` dalında `bitir()` ile `metin`e ekleniyor ki yarım kayıt doğrulanmış hâli alsın (şartnamede yoktu, 2 satır).
|
||||
- Çıplak adreste site kökü (`https://kolaytercih.com/rehber/x`) **desteklenmiyor** (yalnız markdown biçiminde); tampon tetiği `/rehber/`'de başladığı için tek seferlik sonuçla eşitliği bozmamak adına bilerek bırakıldı. Prompt zaten markdown ister.
|
||||
- Tarayıcı/dev sunucusu açılmadı; `/listem` düğme ve metin değişikliği koddan çıkarım.
|
||||
|
||||
## Merge sonrası doğrulanması gerekenler
|
||||
|
||||
1. Entegrasyonda `sohbet-client.tsx` `revizyonHakki?: number` → `revizyonAcik?: boolean` yeniden adlandırması (sohbet-client.tsx:352,385,944,1075 + listem-govde.tsx `hasPaket ? 1 : 0`).
|
||||
2. `pnpm build` (env'siz; `getRehberAramaKayitlari` modül yüklenirken değil istek anında koşar).
|
||||
3. `rapor.ts:679` yorumu (B paketi) — "revizyon hakkı" ifadesi entegrasyonda tek satırla "kredi" diye düzeltilebilir.
|
||||
4. **`guvenlik-uyum` denetimi önerilir**: paket vaadi değişti ("Sınırsız liste revizyonu" — ana sayfa `page.tsx`, `paket-satinal.tsx`); `/paket` sayfası ve koşullar metni tutarlı mı. Link düzeltme logu yalnız slug içerir.
|
||||
5. `yapay-zeka-muhendisi`: `pnpm eval:sohbet`'e "rehberde olmayan konu" senaryosu; prompt cümlesi ve 0,5/0,15 eşikleri gözden geçirilsin (backlog, A-5).
|
||||
|
||||
## Bilal'den istenen
|
||||
|
||||
1. Madde 6: paketsiz-kredili adayda revizyon paket şart kalsın mı? — şartname varsayımıyla "paket şart" uygulandı; değişecekse `liste-revizyon.ts:71-77` tek kapı (1 dk).
|
||||
Reference in New Issue
Block a user