From fd992fa5d244a2ca2957b77afcf7dbc52768fb1d Mon Sep 17 00:00:00 2001 From: furkanyigit34 Date: Sat, 2 May 2026 12:38:43 +0300 Subject: [PATCH] =?UTF-8?q?fix(overview):=20en=20=C3=A7ok=20sat=C4=B1?= =?UTF-8?q?=C5=9F=20yapan=20=C3=BCr=C3=BCnlerde=20ayn=C4=B1=20=C3=BCr?= =?UTF-8?q?=C3=BCn=20varyantlar=C4=B1=20tekrar=20g=C3=B6sterilmesin?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ne yaptık: - topSellingProducts useMemo'da ürün adına göre dedup eklendi - Aynı isimli ürünlerden sadece en yüksek satışlı olanı tutulur Neden yaptık: - Trendyol'da aynı ürünün farklı varyantları (renk/beden) ayrı product_id ile scrape ediliyor ama hepsinde aynı aggregate satış sayısı var - Bu yüzden 'Buharlı Temizleyici 26 Parça 2000w ultra güçlü Gri' gibi ürünler listede 3 kez aynı sayı ile görünüyordu (2, 3, 4. sıra) --- .../src/components/ReportDashboard.jsx | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/admin-panel/src/components/ReportDashboard.jsx b/admin-panel/src/components/ReportDashboard.jsx index 420812c..cbcc26a 100644 --- a/admin-panel/src/components/ReportDashboard.jsx +++ b/admin-panel/src/components/ReportDashboard.jsx @@ -1047,19 +1047,23 @@ function ReportDashboard() { // Top selling products const topSellingProducts = useMemo(() => { - console.log('🏆 [TOP PRODUCTS] Calculating top selling products...') - if (!dashboardData?.all_products) { - console.warn('⚠️ [TOP PRODUCTS] No all_products data') - return [] + if (!dashboardData?.all_products) return [] + + // Deduplicate by name: same product appears multiple times as different variants + // (Trendyol reports aggregate orders for all variants, causing duplicates in rankings) + const seen = new Map() + for (const product of dashboardData.all_products) { + const key = product.name?.trim() + if (!key) continue + const existing = seen.get(key) + if (!existing || (product.orders || 0) > (existing.orders || 0)) { + seen.set(key, product) + } } - const sorted = [...dashboardData.all_products] + return [...seen.values()] .sort((a, b) => (b.orders || 0) - (a.orders || 0)) .slice(0, 10) - - console.log('✅ [TOP PRODUCTS] Top 10 products:', sorted.length, 'items') - console.log('📊 [TOP PRODUCTS] First product:', sorted[0]) - return sorted }, [dashboardData]) // Top selling brands