mirror of
https://github.com/nethunterzist/trendyol-analiz
synced 2026-07-01 01:17:04 +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:
@@ -6,6 +6,9 @@ from sqlalchemy.ext.declarative import declarative_base
|
||||
from sqlalchemy.orm import sessionmaker, relationship
|
||||
from datetime import datetime
|
||||
import os
|
||||
from logging_config import get_logger
|
||||
|
||||
log = get_logger("db")
|
||||
|
||||
# PostgreSQL database - configurable via environment variable
|
||||
# Default: Local PostgreSQL for development
|
||||
@@ -26,6 +29,7 @@ class Category(Base):
|
||||
parent_id = Column(Integer, ForeignKey('categories.id'), nullable=True)
|
||||
trendyol_category_id = Column(Integer, nullable=True)
|
||||
trendyol_url = Column(String, nullable=True)
|
||||
path_model = Column(String, nullable=True) # URL slug for search API (e.g. "elbise-x-c56")
|
||||
is_active = Column(Boolean, default=True)
|
||||
created_at = Column(DateTime, default=datetime.utcnow)
|
||||
|
||||
@@ -86,7 +90,7 @@ class EnrichmentError(Base):
|
||||
def init_db():
|
||||
"""Initialize database - create tables"""
|
||||
Base.metadata.create_all(bind=engine)
|
||||
print("✅ Database initialized successfully!")
|
||||
log.info("Database initialized successfully")
|
||||
|
||||
|
||||
def get_db():
|
||||
|
||||
Reference in New Issue
Block a user