feat: Miller Columns kategori seçici + JSON tree tabanlı mimari

Ne yaptık:
- Sahibinden.com tarzı Miller Columns kategori seçici (CategorySelector.jsx)
- Trendyol API'den 3971 kategori ağacı çekildi (Playwright ile)
- Backend: JSON tree tabanlı kategori endpoint'leri (/api/category-tree/*)
- Backend: Rapor oluşturma artık DB kategorilerine bağımlı değil
- Report tablosundaki category_id FK constraint kaldırıldı
- Dockerfile'a trendyol_category_tree.json eklendi

Neden yaptık:
- DB'deki kategori tablosu boştu, Trendyol API ID'leri ile Excel ID'leri farklıydı
- Playwright ile Trendyol'un kendi kategori ağacını çektik (3971 kategori, gerçek API ID'leri)
- Miller Columns ile kullanıcı adım adım derinleşerek kategori seçebiliyor
- Arama özelliği ile kelime bazlı kategori bulma da mümkün

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
furkanyigit34
2026-03-29 02:24:22 +03:00
parent 6aa4ec5eb0
commit 1c10a701cf
224 changed files with 3176073 additions and 2376775 deletions

View File

@@ -60,16 +60,13 @@ class Report(Base):
id = Column(Integer, primary_key=True, index=True)
name = Column(String, nullable=False) # "Kasım Ayı Kozmetik Raporu"
category_id = Column(Integer, ForeignKey('categories.id'), nullable=False, index=True)
category_id = Column(Integer, nullable=True, index=True) # Trendyol API category ID (no FK)
total_products = Column(Integer, default=0)
total_subcategories = Column(Integer, default=0)
json_file_path = Column(String, nullable=True)
html_file_path = Column(String, nullable=True)
created_at = Column(DateTime, default=datetime.utcnow)
# Relationships
category = relationship("Category")
class EnrichmentError(Base):
"""Persistent log for external enrichment errors"""