mirror of
https://github.com/nethunterzist/trendyol-analiz
synced 2026-07-02 17:57:03 +00:00
feat: tek birleştirilmiş JSON yapısına geçiş + sosyal kanıt fallback
Ne yaptık:
- data_consolidator.py: Tüm normalizasyon ve hesaplama mantığını main.py'den çıkardık
- Dashboard endpoint 1150 satırdan 25 satıra düştü (main.py -1730/+1880 net)
- Enrichment bitince otomatik konsolide dosya oluşturuluyor (report_{id}_data.json)
- Eski raporlar ilk dashboard isteğinde lazy migration ile konsolide ediliyor
- Trendyol API artık order-count döndürmediği için baskets fallback eklendi
- Inline socialProofs (scrape) > enrichment API öncelik sırası uygulandı
- Frontend KPI başlıkları orders/baskets durumuna göre dinamik değişiyor
- logging_config.py, category_seeder.py, alembic migration eklendi
- Playwright ile 9 tab test edildi, tüm veriler doğru
Neden yaptık:
- 3 farklı kaynaktan her istekte birleştirme yapılması veri tutarsızlığına ve yavaşlığa yol açıyordu
- Tek konsolide JSON dosyası ile dashboard anında yükleniyor
- Trendyol API değişikliği nedeniyle sipariş verisi kayboluyordu, baskets fallback ile çözüldü
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -8,6 +8,9 @@ from pytrends.request import TrendReq
|
||||
from typing import Dict, Optional
|
||||
from datetime import datetime, timedelta
|
||||
import time
|
||||
from logging_config import get_logger
|
||||
|
||||
log = get_logger("trends")
|
||||
|
||||
|
||||
class GoogleTrendsCache:
|
||||
@@ -135,12 +138,12 @@ def fetch_google_trends(product_name: str, retries: int = 3) -> Dict:
|
||||
|
||||
except Exception as e:
|
||||
error_msg = str(e)
|
||||
print(f"Google Trends API Error (attempt {attempt + 1}/{retries}): {error_msg}")
|
||||
log.warning(f"Google Trends API Error (attempt {attempt + 1}/{retries}): {error_msg}")
|
||||
|
||||
# Rate limit error - wait longer
|
||||
if '429' in error_msg or 'rate' in error_msg.lower():
|
||||
wait_time = 5 * (attempt + 1) # 5, 10, 15 seconds
|
||||
print(f"Rate limited. Waiting {wait_time} seconds...")
|
||||
log.warning(f"Rate limited. Waiting {wait_time} seconds...")
|
||||
time.sleep(wait_time)
|
||||
continue
|
||||
|
||||
|
||||
Reference in New Issue
Block a user