6.0 KiB
6.0 KiB
Changelog - 2026-04-22
Bu doküman, 22 Nisan 2026 tarihinde iddaai-fe ve iddaai-be üzerinde yapılan Frekans Motoru (Conditional Frequency Engine) frontend entegrasyonunu özetler.
1. Frekans Motoru — Backend Recap
POST /coupon/frequency-couponendpoint'i önceki oturumda tamamlanmıştı.SmartCouponService.generateFrequencyBasedCoupon()metodu aktif ve çalışır durumda.FrequencyEngineService→ raw SQL ilematchestablosundaki tarihsel veriyi tarayarak oran bandı bazlı sinyal üretiyor.- Strateji: Her takımın ev/deplasman performansını, karşılaştığı oran bandına göre filtreleyip, kombine sinyal (combined_signal) hesaplıyor.
2. Frontend Tip Tanımları
iddaai-fe/src/lib/api/coupons/types.tsgüncellendi.- Eklenen tipler:
FrequencyCouponRequestDto
{
maxMatches?: number; // 2-5 arası, varsayılan 3
minSignal?: number; // 0.50-0.99, kombine sinyal eşiği
markets?: string[]; // OU1.5, OU2.5, OU3.5, BTTS, MS
}
FrequencyCouponBetDto
{
match_id: string;
match_name: string;
league: string;
market: string;
pick: string;
odds: number;
home_signal: number;
away_signal: number;
combined_signal: number;
home_odds_band: string;
away_odds_band: string;
home_match_count: number;
away_match_count: number;
league_profile: string; // GOLCU | DEFANSIF | NORMAL
}
FrequencyCouponRejectedDto
{
match_name: string;
reason: string;
}
FrequencyCouponResultDto
{
bets: FrequencyCouponBetDto[];
rejected_matches: FrequencyCouponRejectedDto[];
reasoning: string[];
total_odds: number;
expected_hit_rate: number;
expected_value: number;
ev_positive: boolean;
}
3. API Service Katmanı
iddaai-fe/src/lib/api/coupons/service.tsgüncellendi.generateFrequencyCoupon(dto)metodu eklendi.- Endpoint:
POST /coupon/frequency-coupon
4. React Hook
iddaai-fe/src/lib/api/coupons/use-hooks.tsgüncellendi.useGenerateFrequencyCoupon()TanStack Query mutation hook'u eklendi.FrequencyCouponRequestDtoimport edildi.
5. Çeviri Dosyaları (i18n)
messages/tr.jsonvemessages/en.jsongüncellendi.couponsnamespace'ine 30+ yeni anahtar eklendi:
| Anahtar | TR | EN |
|---|---|---|
freq-engine-title |
Frekans Motoru | Frequency Engine |
freq-engine-subtitle |
Takımların oran bandına göre tarihsel performansını analiz eder... | Analyzes teams' historical performance by odds band... |
freq-suggest |
Frekans Kuponu Oluştur | Generate Frequency Coupon |
freq-min-signal |
Minimum Sinyal | Minimum Signal |
freq-ev-label |
Beklenen Değer (EV) | Expected Value (EV) |
freq-hit-rate |
Tahmini İsabet | Est. Hit Rate |
freq-ev-positive |
+EV Pozitif | +EV Positive |
freq-combined-signal |
Kombine Sinyal | Combined Signal |
freq-league-golcu |
Golcü | High-Scoring |
freq-league-defansif |
Defansif | Defensive |
engine-mode-label |
Motor Seçimi | Engine Mode |
engine-mode-help |
AI: Gemini tabanlı yapay zeka tahmini. Frekans: Veritabanı tabanlı istatistiksel analiz. | AI: Gemini-based AI prediction. Frequency: Database-driven statistical analysis. |
freq-mode-active |
Frekans Motoru aktif | Frequency Engine active |
ai-mode-active |
AI Motoru aktif | AI Engine active |
6. FrequencyPanel Bileşeni (Yeni Dosya)
iddaai-fe/src/components/coupons/frequency-panel.tsxoluşturuldu.- Bağımsız (standalone) bileşen, kendi state ve mutation yönetimini içerir.
Bileşen Özellikleri:
- Min Signal Slider — 50%-95% arası, kombine sinyal eşiği kontrolü
- Max Matches Slider — 2-5 arası, kupon boyutu kontrolü
- Market Filtre Badge'leri — OU1.5, OU2.5, OU3.5, BTTS, MS (çoklu seçim)
- Generate Butonu →
useGenerateFrequencyCouponmutation'ını tetikler - Sonuç Paneli:
- EV / Hit Rate / Toplam Oran istatistik kartları
- Her bahis için ev sinyali, deplasman sinyali, kombine sinyal gösterimi
- Oran bandı bilgisi (ör. "1.30-1.50")
- Lig profili badge'i (Golcü/Defansif/Normal)
- Geçmiş maç sayısı gösterimi
- Analiz detayları (reasoning listesi)
- Elenen maçlar (rejected_matches)
- Kupon Store Senkronizasyonu — Sonuç geldiğinde bahisler otomatik olarak
useCouponStore'a eklenir
7. Coupon Builder Engine Toggle
iddaai-fe/src/components/coupons/coupon-builder-content.tsxgüncellendi.- Değişiklikler:
LuDatabaseicon import edildiFrequencyPanelimport edildiengineModestate eklendi:"ai" | "frequency"- Sidebar'a Motor Seçimi toggle eklendi (Badge tabanlı)
engineMode === "frequency"olduğunda strateji/AI suggest bölümü gizlenir, yerineFrequencyPanelrender edilirengineMode === "ai"olduğunda mevcut AI akışı aynen korunur
Veri Akışı:
Kullanıcı → "Frekans" badge'ine tıklar → FrequencyPanel açılır
→ Sinyal/market/boyut ayarı yapar → "Frekans Kuponu Oluştur" butonuna basar
→ POST /coupon/frequency-coupon { maxMatches, minSignal, markets }
→ Backend: SmartCouponService → FrequencyEngineService (raw SQL)
→ Response: FrequencyCouponResultDto
→ UI: Sinyal kartları, EV istatistikleri, reasoning render edilir
→ Bahisler otomatik olarak CouponStore'a sync edilir
8. Derleme ve Doğrulama Notları
node_moduleskullanıcının makinesinde yüklü olmadığı içinnpm run buildçalıştırılamadı.- Kod yapısal olarak doğru, TypeScript tipleri backend DTO'ları ile birebir eşleşiyor.
- Doğrulama için:
npm install && npm run buildçalıştırılmalı.
9. Açık Kalan / Sonraki Adımlar
npm install && npm run buildile frontend build doğrulanmalı.- Frekans kuponu uçtan uca test edilmeli (backend Docker ayakta iken).
- FrequencyPanel içindeki market badge'lerine
HT_OU05veDCgibi ek marketler eklenebilir. - Frekans sonuçlarındaki
league_profilebadge renkleri dark mode için ince ayar gerektirebilir. - Kupon geçmişinde AI vs Frekans ayrımını gösteren bir etiket eklenebilir.