This commit is contained in:
@@ -0,0 +1,159 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user