Files
kolaytercih/docs/ekip-raporlari/2026-10-07/yazilimci-paket-A.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

53 lines
7.0 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.
# 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).