hikmettan
3e129c2988
feat: tüm mock veriyi kaldır + Resend e-posta entegrasyonu
...
- mockTenders.js silindi; referans listeleri (sektör/il/kurum) constants.js'e taşındı
- AppContext: tenders/liveStats/competitorWatchlist/vaultDocuments/notifications/
savedFilters/apiKeys/scrapedCapabilities → gerçek/boş; sahte Math.random online
sayacı kaldırıldı; competitor & belge kasası artık localStorage
- LiveStatsBar: gerçek alanlar (canlı havuz/yüklü/bugün/kalem/takibimdeki)
- AnalyticsDashboard: KPI'lar (katılım/kazanma oranı/kazanılan bedel) + aylık hacim
+ sektörel dağılım gerçek companyStats/monthlyStats/sectorStats'tan; ciro hedefi
kullanıcı tarafından belirlenir; veri yoksa dürüst boş durum
- ContractSearch & Rakip Radar: gerçek firmStats
- analytics.js: companyStats/monthlyStats/parseDateTR eklendi
- Resend: server/email.mjs + /api/notify/email/config + /api/notify/email/test
(auth'lu, kullanıcının kendi adresine); PwaSettings gerçek e-posta test kartı
2026-08-28 08:49:10 +03:00
hikmettan
7521f798f6
fix: Rakip Radar widget'ını gerçek firmStats'a bağla (son mock kaldırıldı)
...
RightSidebar teaser widget COMPETITOR_DATA mock yerine canlı firmStats(tenders)
kullanıyor; veri yokken dürüst boş durum gösteriyor.
2026-08-28 08:17:00 +03:00
hikmettan
0ab74143c0
feat: demo özelliklerini gerçekleştir — canlı veri + localStorage
...
- analytics.js: firmStats/itemStats/provinceDensity (gerçek hesaplama)
- Rakip Radar: canlı veriden kazanan firma analizi (mock 3 firma kaldırıldı)
- Fiyat Analizi: gerçek kalem min/medyan/ort/maks + CSV export
- TurkeyHeatMap: 81 il gerçek interaktif yoğunluk haritası (tıkla→filtrele)
- Favori kurumlar: kart yıldızı + hızlı filtre (localStorage)
- Ekip yönetimi: gerçek CRUD (RightSidebar) + Kanban ataması ekipten
- Bildirimler: gerçek Notification API + izin + test + sessiz saatler
- PDF: jsPDF ile gerçek birim fiyat teklif cetveli (kaşe/imza alanı)
2026-08-28 01:58:46 +03:00
hikmettan
512d529af2
feat(legal): Gizlilik Politikası + Kullanım Şartları statik sayfaları (KVKK) + login linkleri
2026-08-28 01:37:14 +03:00
hikmettan
13f3e9d366
feat(auth): Google ile Giriş + landing/login + çalışan çıkış + admin rolü
...
- server/auth.mjs: ID token'ı oauth2.googleapis.com/tokeninfo ile doğrula (ek bağımlılık yok), HMAC imzalı app token, ADMIN_EMAILS ile admin
- POST /api/auth/google, GET /api/auth/google/config, GET /api/auth/me
- LoginPage: GIS butonlu landing/giriş; giriş yapılmadan uygulama açılmaz
- Header çıkış butonu artık çalışıyor; kullanıcı adı/avatar Google'dan
- AI Model Ayarları sekmesi sadece admin'e görünür
- Env: GOOGLE_CLIENT_ID + ADMIN_EMAILS (Coolify'dan)
2026-08-28 00:43:08 +03:00
hikmettan
1b28ebb603
fix(deploy): backend'i sabit PORT=3001'e zorla (Coolify PORT=80 nginx ile çakışıyordu)
2026-08-27 10:46:59 +03:00
hikmettan
cc0b6b6017
feat(admin): AI model yönetimi paneli (fallback zinciri seçimi)
...
- 6 model kataloğu: GLM 5.3, DeepSeek V4 Flash, Gemini 3.7 Flash, Grok 4.6, GPT-5.6 Sol, Claude Opus 5
- Varsayılan fallback zinciri: GLM (birincil) → DeepSeek → Gemini
- Admin panelden sıralama, birincil seçme, ekleme/çıkarma; localStorage'da saklanır
- AI analizi aktif modeli kullanır
2026-08-27 09:44:34 +03:00
hikmettan
9ea46eb4c2
deploy: .dockerignore ekle (node_modules, dist, data imaja girmesin)
2026-08-26 21:29:53 +03:00
hikmettan
4f1ba88e94
deploy: canlı veri backend'ini container'a ekle (nginx /api → Node :3001)
...
- Dockerfile: nginx + Node tek container; backend arka planda, nginx ön planda
- nginx.conf: /api → 127.0.0.1:3001 proxy
- dt-store: node:sqlite guard (yoksa DT devre dışı, açık ihaleler yine canlı)
- Açık ihale canlı verisi sıfır npm bağımlılığıyla deploy'da çalışır
2026-08-26 21:28:25 +03:00
hikmettan
89cfd03d92
feat: canlı veri — ilan.gov.tr açık ihale + EKAP doğrudan temin (22/d)
...
- server/index.js: ilan.gov.tr proxy (açık ihale + kira/satış), TLS zincir düzeltmesi
- server/dt-worker.mjs: EKAP doğrudan temin toplayıcı (Playwright, imzasız oturum içi fetch)
- server/dt-store.mjs + il-plaka.mjs: DT verisini tender modeline çevirme
- src/services/tenderApi.js + AppContext: mock veri yerine canlı API
- Doğrudan Temin sekmesi 256 gerçek 22/d kaydıyla dolu
2026-08-26 20:45:02 +03:00
hikmet tanriverdi
d9570fe422
feat(seo): add indexing and discovery metadata
2026-08-23 19:52:25 +03:00
hikmet4434
a8d52b8601
feat: universal zero-hallucination dynamic web scraper engine & instant tag edit mode
2026-08-08 07:04:42 +03:00
hikmet4434
5994e91ef9
fix: map arisal.com.tr accurately to Arısal İş Elbiseleri & Workwear, Protective Safety Equipment
2026-08-08 06:57:22 +03:00
hikmet4434
5e3b5b72fb
fix: restore activeTenderDetail and modal state definitions in AppContext.jsx
2026-08-07 18:29:48 +03:00
hikmet4434
ac54118542
feat: add Arısal Elektrik & Industrial Automation company scraper & TEİAŞ live tender feed
2026-08-07 18:10:34 +03:00
hikmet4434
796b22bc5a
feat: real live EKAP government data feed integration & live refresh stream
2026-08-07 18:03:23 +03:00
hikmet4434
d40bcd3937
feat: strict domain sector matching & deep product capability analyzer
2026-08-07 17:47:05 +03:00
hikmet4434
ce481f7079
fix: add missing Sparkles import in Header.jsx
2026-08-07 17:39:52 +03:00
hikmet4434
64a606c438
fix: static assets MIME type and 404 handling in nginx.conf
2026-08-07 17:39:14 +03:00
hikmet4434
1a032a4ddc
chore: add Nginx Dockerfile for Coolify production deployment
2026-08-07 17:11:30 +03:00
hikmet4434
ece74feefe
feat: İhaleist - Akıllı İhale Takip ve Analiz Platformu (Full PRD + 7 Enterprise Modül)
2026-08-07 16:30:24 +03:00