mirror of
https://github.com/nethunterzist/trendyol-analiz
synced 2026-07-01 01:17:04 +00:00
706f957ba2e2ec7562635b63e7ebd534eeb353be
Ne yaptık:
- queue_worker.py find_leaves: kategori URL'sine -x-c{id} suffix ekledik
(ör: makyaj-cantasi -> makyaj-cantasi-x-c1110)
- scraper.py fetch_all_products: total degeri str gelirse int'e cast
ediyoruz (roughTotal "0" string donuyordu, '/' operatoru patliyordu)
Neden yaptık:
- Trendyol Search API path formati degisti, artik suffix'siz cagri 0
urun donduruyor (ornek test: makyaj-cantasi=0, makyaj-cantasi-x-c1110=15.712)
- Yan etki olarak 'total' int 0 falsy oldugu icin 'or' chain
roughTotal'a dusuyor, bu da string olarak donuyor ve math.ceil(str/int)
TypeError firlatiyordu. Tum 35 alt kategori bu yuzden patladi
(rapor 62 "Makyaj Analizi" sifir urun).
- Fix iki seviyeli: asil cozum suffix (artik dogru data ceker), defansif
int() cast gelecekte API'nin baska sekilde tutarsiz donmesine karsi
guvenlik agi.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Trendyol Product Dashboard
Trendyol e-ticaret platformu için kategori bazlı ürün analiz sistemi. 7 tab'lı interaktif dashboard, otomatik rapor oluşturma ve detaylı metrikler sunar.
Özellikler
| Tab | Açıklama |
|---|---|
| Genel Bakış | KPI kartları, özet grafikler, temel metrikler |
| Marka | Marka analizi, pazar payı dağılımı |
| Kategori | Kategori bazlı ürün dağılımı |
| Menşei | Ülke bazlı ürün analizi |
| Barkod | Barkod veri analizi ve dağılımı |
| Keyword Aracı | Anahtar kelime trend analizi |
| Ürün Bulma | Gelişmiş ürün arama ve filtreleme |
Teknoloji Stack
| Katman | Teknoloji |
|---|---|
| Frontend | React 19.2.0, Vite 7.2.2, Tailwind CSS 4.1.17, Recharts 3.4.1 |
| Backend | FastAPI 0.104.1, SQLAlchemy 2.0.45, Uvicorn 0.24.0 |
| Database | SQLite |
| HTTP Client | Axios 1.13.2 |
Hızlı Başlangıç
Otomatik Başlatma (Önerilen)
python3 start.py
Bu script otomatik olarak:
- Dependency'leri kontrol eder
- Port çakışmalarını çözer
- Backend ve frontend'i başlatır
Manuel Başlatma
Terminal 1 - Backend:
cd backend
pip install -r requirements.txt
python3 main.py
Terminal 2 - Frontend:
cd admin-panel
npm install
npm run dev
Erişim URL'leri
- Frontend: http://localhost:5173
- Backend API: http://127.0.0.1:8001
- API Docs: http://127.0.0.1:8001/docs
Proje Yapısı
product_Dashboard/
├── backend/ # FastAPI Backend
│ ├── main.py # Ana API (~4400 satır, 30+ endpoint)
│ ├── database.py # SQLAlchemy modelleri
│ ├── scraper.py # Trendyol veri çekme
│ └── requirements.txt # Python dependencies
│
├── admin-panel/ # React Frontend
│ └── src/
│ ├── components/
│ │ ├── CategoryManagement.jsx # Kategori yönetimi
│ │ ├── ReportGeneration.jsx # Rapor oluşturma
│ │ ├── ReportList.jsx # Rapor listesi
│ │ ├── ReportDashboard.jsx # 7-tab dashboard
│ │ └── dashboard-tabs/ # Tab componentleri
│ ├── config/api.js # API konfigürasyonu
│ └── constants/tabGroups.js # Tab yapılandırması
│
├── categories/ # Kategori JSON dosyaları (1842 adet)
├── reports/ # Oluşturulan raporlar
├── docs/ # Dokümantasyon
│ ├── ARCHITECTURE.md # Sistem mimarisi (Türkçe)
│ ├── API_DOCUMENTATION.md # API referansı
│ ├── SETUP_GUIDE.md # Kurulum kılavuzu
│ └── DASHBOARD_ARCHITECTURE.md # Dashboard geliştirme rehberi
│
├── start.py # Otomatik başlatma scripti
├── CLAUDE.md # Claude Code rehberi
└── README.md # Bu dosya
Docker ile Çalıştırma
# Build
docker-compose build
# Başlat
docker-compose up -d
# Durdur
docker-compose down
Docker Erişim:
- Frontend: http://localhost:8080
- Backend: http://localhost:8001
API Özeti
| Endpoint | Metod | Açıklama |
|---|---|---|
/categories/main |
GET | Ana kategoriler |
/categories/{id}/subcategories |
GET | Alt kategoriler |
/api/reports |
GET | Rapor listesi |
/api/reports/create |
POST | Rapor oluştur |
/api/reports/progress/{task_id} |
GET | İlerleme durumu |
/api/dashboard/{report_id} |
GET | Dashboard verisi |
Konfigürasyon
API Timeout Değerleri
| Tip | Süre | Kullanım |
|---|---|---|
| STANDARD | 30s | Genel istekler |
| DASHBOARD | 180s | Dashboard yükleme |
| ENRICHMENT | 120s | Sosyal kanıt verisi |
| KEYWORD_ANALYSIS | 300s | Keyword analizi |
Kaynak Limitleri
| Kaynak | Limit |
|---|---|
| Cache | 100 item, 1 saat TTL |
| Frontend pagination | 150 item/sayfa |
| Backend pagination | 200 item/sayfa |
| Rate limit | 2 istek/saniye |
Sorun Giderme
Port Çakışması
# Otomatik çözüm
python3 start.py
# Manuel çözüm
lsof -ti:8001 | xargs kill -9
lsof -ti:5173 | xargs kill -9
CORS Hatası
backend/main.py dosyasında frontend portunu CORS listesine ekleyin:
allow_origins=["http://localhost:5173", "http://localhost:5174", ...]
Database Sıfırlama
cd backend
python3 -c "from database import init_db; init_db()"
Dokümantasyon
| Dosya | Açıklama |
|---|---|
| docs/ARCHITECTURE.md | Sistem mimarisi (Türkçe) |
| docs/API_DOCUMENTATION.md | API referansı |
| docs/SETUP_GUIDE.md | Kurulum kılavuzu |
| docs/DASHBOARD_ARCHITECTURE.md | Dashboard geliştirme |
| CLAUDE.md | Claude Code rehberi |
Gereksinimler
- Python 3.8+
- Node.js 18+
- npm 9+
Versiyon: 2.1.0 | Son Güncelleme: Ocak 2025
Description
Languages
JavaScript
51.8%
Python
46.5%
Shell
0.8%
Dockerfile
0.5%
CSS
0.2%