# Changelog - 2027-04-09 Bu doküman, 2027-04-09 tarihinde `Suggest-Bet-BE` ve `Suggest-Bet-FE` projelerinde yapılan ilgili ürün ve entegrasyon değişikliklerini özetler. ## Kapsam - Maç detay tahmin kartı (`prediction-card`) UX ve metin iyileştirmeleri - Kupon oluşturucu (`coupon-builder`) veri akışı ve güvenlik düzeltmeleri - Backend kupon aday maç filtreleme mantığının sertleştirilmesi - Frontend locale, tooltip ve okunabilirlik iyileştirmeleri ## Backend Değişiklikleri ### 1. Kupon için uygun maç filtreleme mantığı güçlendirildi Dosya: - `src/modules/matches/matches.service.ts` Yapılanlar: - `LIVE`, `FINISHED` ve `UPCOMING` mantıkları yardımcı filtrelere ayrıldı. - `findMatches()` içinde `status === 'UPCOMING'` ve `status === 'NOT_STARTED'` desteği eklendi. - Varsayılan maç sorguları artık yalnızca kupona uygun yaklaşan maçları döndürecek şekilde sıkılaştırıldı. - `findUpcomingMatches()` artık: - sadece ilgili spor dalını, - gelecekteki maçları, - canlı olmayan maçları, - bitmemiş maçları döndürüyor. Amaç: - Bitmiş veya canlı maçların yanlışlıkla kupon aday havuzuna düşmesini engellemek. ### 2. Kullanıcıdan gelen match ID listesi backend’de sanitize edilmeye başlandı Dosyalar: - `src/modules/matches/matches.service.ts` - `src/modules/coupons/coupons.controller.ts` Yapılanlar: - `filterUpcomingMatchIds()` yardımcı metodu eklendi. - `/coupon/suggest` ve `/coupon/daily-banko` içinde: - kullanıcı `matchIds` gönderse bile - sadece henüz başlamamış futbol maçları korunuyor - canlı/bitmiş maçlar backend tarafında eleniyor. - Sanitization sonrası uygun maç kalmazsa kullanıcıya anlamlı hata mesajı dönülüyor. Amaç: - UI’de opsiyonel olarak bitmiş maçlar gösterilse bile, - kupon üretiminde skor, maç sonu durum veya sonradan oluşmuş istatistiklerin AI akışına sızmasını kesin olarak önlemek. ## Frontend Değişiklikleri ### 1. Prediction card okunabilirliği ve fallback mantığı geliştirildi Dosyalar: - `Suggest-Bet-FE/src/components/matches/prediction-card.tsx` - `Suggest-Bet-FE/messages/en.json` - `Suggest-Bet-FE/messages/tr.json` Yapılanlar: - `IntlError: MISSING_MESSAGE` üreten dinamik reason key kullanımı güvenli hale getirildi. - Locale mesajı varsa çeviri, yoksa güvenli fallback metin kullanılıyor. - `edge`, `stake` gibi teknik terimler açıklayıcı tooltiplerle desteklendi. - Market etiketleri locale tabanlı hale getirildi. - Tahmin kartı daha okunur bir karar paneli yapısına dönüştürüldü: - ana öneri - güven / oran / stake / play score - motor kırılımı - alternatif marketler - market panosu - skor senaryoları Amaç: - Kullanıcının API’den gelen tahmin verisini ek açıklama gerektirmeden anlayabilmesi. ### 2. Coupon Builder ekranı yeniden kurgulandı Dosya: - `Suggest-Bet-FE/src/components/coupons/coupon-builder-content.tsx` Yapılanlar: - Sayfa artık generic maç listesi değil, kupon oluşturma akışına özel bir ekran gibi davranıyor. - Yaklaşan maçlar: - seçilebilir - AI’ye manuel havuz olarak gönderilebilir - Hiç seçim yapılmazsa: - sistem tüm uygun yaklaşan futbol maç havuzundan otomatik öneri üretiyor - Sağ panelde: - strateji seçimi - seçilen maç havuzu - AI önerilen bahisler - toplam oran - beklenen kazanma oranı net şekilde gösteriliyor. - Bilgi ikonları ve tooltip açıklamaları eklendi. Amaç: - Kupon oluşturucu akışını kullanıcı için sezgisel hale getirmek - “hangi havuzdan öneri üretildi?” sorusunu görünür kılmak ### 3. Bitmiş maçlar opsiyonel referans listesi olarak eklendi Dosya: - `Suggest-Bet-FE/src/components/coupons/coupon-builder-content.tsx` Yapılanlar: - Kullanıcı isterse bitmiş maçları ayrı bir bölümde görebiliyor. - Bu bölüm: - varsayılan olarak kapalı - sadece referans amaçlı - salt okunur - seçilemez - UI üzerinde bu maçların tahmine dahil edilmediği açıkça belirtiliyor. Amaç: - Kullanıcıya geçmiş görünürlük vermek - aynı anda tahmin güvenliğini bozmamak ### 4. Kupon API response tipleri güncellendi Dosyalar: - `Suggest-Bet-FE/src/lib/api/coupons/types.ts` - `Suggest-Bet-FE/src/lib/api/coupons/service.ts` - `Suggest-Bet-FE/src/lib/api/matches/types.ts` Yapılanlar: - `/coupon/suggest` response yapısı için ayrı `SmartCouponResultDto` tanımlandı. - `SuggestedCouponBetDto` ve rejected match tipleri eklendi. - Match status tipine `UPCOMING` / `NOT_STARTED` desteği eklendi. - Coupon builder UI’si gerçek API kontratına göre güncellendi. Amaç: - Frontend’in gerçek backend response yapısıyla birebir uyumlu çalışması ## Ürün Etkisi Sonuç olarak: - Kupon oluşturucu artık bitmiş maçlarla yanlış öneri üretmiyor. - Backend tarafı güvenlik filtresi sayesinde istemciye güvenmeden doğru maç havuzunu seçiyor. - Frontend tarafı kullanıcıya: - hangi maçların aday olduğunu, - hangilerinin sadece referans olduğunu, - AI’nin hangi stratejiyle ne önerdiğini açık şekilde gösteriyor. - Prediction card tarafında tahmin verileri daha anlaşılır ve daha stabil hale geldi. ## Doğrulama Yapılan kontroller: - Backend: - `npm run build` geçti - Frontend: - `npx tsc --noEmit --pretty false --incremental false` geçti ## Not Frontend repo içinde ayrı bir `mds` klasörü bulunmadığı için bu ortak changelog backend repo içindeki `mds` klasörüne eklendi.