# Changelog - 2026-04-14 Bu doküman, 14 Nisan 2026 tarihinde `Suggest-Bet-BE` üzerinde yapılan önemli teknik değişiklikleri özetler. ## 1. Full Stack Çalıştırma Scriptleri - `src/scripts/run-full-stack.ts` eklendi. - `src/scripts/run-all-fe-compatible.ts` eklendi. - `package.json` içine şu scriptler eklendi veya güncellendi: - `full:run` - `run:all` - Amaç: - AI engine ve NestJS'i birlikte ayağa kaldırmak - AI engine health check tamamlanmadan backend başlatmamak - process shutdown akışını kontrollü yönetmek - FE uyumlu profile ile `NestJS:3000`, `AI engine:8000` kullanabilmek ## 2. Port ve Env Standardizasyonu - `.env.example` port değerleri netleştirildi. - Kullanım ayrımı: - `npm run full:run`: backend-native profile - `npm run run:all`: frontend-compatible profile ## 3. Matches Browse Davranışı - `src/modules/matches/matches.service.ts` güncellendi. - Varsayılan browse filtresi sadece upcoming yerine `live + upcoming` davranacak şekilde düzenlendi. - Etki: - `/api/matches/query` status verilmeden çağrıldığında canlı maçlar da döner. - `/tr/matches` sayfası live match'leri de görebilir. ## 4. VQWEN Model Entegrasyonu - `ai-engine/models/betting_engine.py` güncellendi. - `ai-engine/services/v2_router.py` güncellendi. - Davranış: - `v2_artifacts/calibrated_*.joblib` yoksa sistem artık doğrudan `ai-engine/models/vqwen/*.pkl` modellerine fallback yapıyor. - Bu sayede predictor boş priors yerine gerçek model kullanıyor. ## 5. Feature Extraction İyileştirmeleri - `ai-engine/features/extractor.py` güncellendi. - Eklendi veya iyileştirildi: - gerçek `rest_diff` - gerçek `h2h_home_win_rate` - lineup/sidelined JSON'ından availability türetimi - rolling form fallback'leri - `matches` ve `live_matches` tablo farkları dikkate alındı. - Tarihsel maçlarda olmayan kolonlar yüzünden extractor patlamayacak hale getirildi. ## 6. AI Engine PostgreSQL Bağlantı Düzeltmesi - `ai-engine/data/database.py` güncellendi. - Düzeltmeler: - `.env` otomatik yükleme - `DATABASE_URL` içindeki Prisma `?schema=public` parametresini asyncpg ile uyumlu normalize etme - `search_path` ayarı ile bağlantıyı kararlı hale getirme ## 7. Runtime Backtest Scripti - `ai-engine/scripts/backtest_v2_runtime.py` eklendi. - `package.json` içine `ai:backtest` scripti eklendi. - Amaç: - V2/VQWEN tahminlerini bitmiş maçlar üstünde hızlıca ölçebilmek - accuracy, playable accuracy ve ROI görmek ## 8. VQWEN Top League Re-Training - `ai-engine/scripts/train_vqwen_v3.py` güncellendi. - `top_leagues.json` okunacak şekilde düzenlendi. - Sadece top league maçlarıyla eğitim yapılacak hale getirildi. - `package.json` içine `ai:train:vqwen` scripti eklendi. - Eğitim metadata dosyası üretildi: - `ai-engine/models/vqwen/vqwen_training_meta.json` - Sonuç: - `vqwen_ms.pkl` - `vqwen_ou25.pkl` - `vqwen_btts.pkl` dosyaları top league dataset ile yeniden üretildi. ## 9. V20+ Market Coverage Genişletmesi Korner hariç daha fazla bahis tipini V20+ orchestration içinde görünür ve kullanılabilir hale getirmek için değişiklikler yapıldı. ### 9.1 Odds Parsing Genişletmesi - `ai-engine/services/single_match_orchestrator.py` güncellendi. - `RELATIONAL_ODDS_KEYS` genişletildi. - Yeni parse edilen market/odds anahtarları: - `ht_ou15_o` - `ht_ou15_u` - `cards_o` - `cards_u` - `hcap_h` - `hcap_d` - `hcap_a` ### 9.2 Yeni Helper Fonksiyonları - `single_match_orchestrator.py` içine eklendi: - `_is_first_half_ou15_category` - `_is_cards_ou_category` - `_is_football_handicap_category` - `_set_football_handicap_odds` ### 9.3 Market Requirement Genişletmesi - `ODDS_REQUIRED_MARKETS` genişletildi. - Yeni marketler: - `HT_OU15` - `CARDS` - `HCAP` ### 9.4 Market Board ve Bet Summary Genişletmesi - `single_match_orchestrator.py` içinde response üretimi genişletildi. - `market_board` artık şu marketleri de içeriyor: - `HT_OU15` - `CARDS` - `HCAP` - `_build_market_rows()` artık şu marketler için de row üretiyor: - `HT_OU15` - `CARDS` - `HCAP` ### 9.5 Market Calibration - Yeni marketler için calibration / minimum confidence tanımları eklendi: - `HT_OU15` - `CARDS` - `HCAP` ## 10. Other Markets Calculator İyileştirmesi - `ai-engine/core/calculators/other_markets_calculator.py` yeniden düzenlendi. - Eklendi: - `cards_over_prob` - `cards_under_prob` - `cards_confidence` - `handicap_home_prob` - `handicap_draw_prob` - `handicap_away_prob` - `handicap_confidence` - Korner tarafı özellikle kapsam dışı bırakıldı. ## 11. V20 Ensemble Model Genişletmesi - `ai-engine/models/v20_ensemble.py` güncellendi. - `FullMatchPrediction` içine şu alanlar eklendi: - `cards_over_prob` - `cards_under_prob` - `cards_confidence` - `handicap_home_prob` - `handicap_draw_prob` - `handicap_away_prob` - `handicap_confidence` - `to_dict()` çıktısı da cards ve handicap için daha zengin veri dönecek şekilde genişletildi. ## 12. Derleme ve Doğrulama Notları - Python tarafında şu dosyalar `py_compile` ile doğrulandı: - `ai-engine/core/calculators/other_markets_calculator.py` - `ai-engine/models/v20_ensemble.py` - `ai-engine/services/single_match_orchestrator.py` - `npm run build` son denemede kullanıcı tarafından manuel olarak kesildi. - Bu yüzden changelog yazıldığı anda en son TypeScript/Nest build sonucu tekrar alınmış kabul edilmemeli. ## 13. Açık Kalan / Sonraki Adımlar - Yeni marketlerin runtime API çıktısı gerçek maç üstünde uçtan uca test edilmeli. - `npm run build` tekrar tam çalıştırılmalı. - Mümkünse bir örnek `/v20plus/analyze/:matchId` çağrısıyla şu marketler doğrulanmalı: - `HT_OU15` - `CARDS` - `HCAP` - Korner marketleri bilinçli olarak dahil edilmedi.