Skip to content

Bölgesel Fiyat Matrix Sistemi

Achidemy bölgeye göre dinamik fiyatlandırma (Cloudflare Edge, tier_prices, pricing-engine).

Achidemy, öğrencilerin bulunduğu ülkenin alım gücüne göre dinamik fiyatlandırma yapar.

  1. Konum Tespiti: Cloudflare Edge, request.cf.country header’ı üzerinden kullanıcı konumunu yakalar.
  2. Tier Eşleşmesi: Sistem, kursun bağlı olduğu price_tier_id değerini alır.
  3. Matrix Sorgusu: tier_prices tablosundan ilgili ülke/para birimi (TRY, USD, EUR vb.) için belirlenmiş sabit fiyat çekilir.
ÜlkePara BirimiTier 1 Fiyatı
ABDUSD$19.99
TürkiyeTRY499.00 ₺
AlmanyaEUR€19.99

Şu anki şemada (app/db/schema.ts): tier_prices tablosu tierId, currency (usd, try, eur), amount alanlarına sahiptir. Her tier için para birimi bazında sabit fiyat tutulur.

İleride dinamik kur güncellemeleri için ek alanlar (örn. baseAmountUSD, isManual, lastUpdated) eklenebilir; bu durumda kur botu ile amount güncellenebilir.

Dinamik Kur Güncelleme (Kur Botu) — Opsiyonel

Section titled “Dinamik Kur Güncelleme (Kur Botu) — Opsiyonel”

Mevcut şemada kur botu kullanılmıyor; fiyatlar seed-pricing.ts veya admin paneli ile elle güncellenir. İleride baseAmountUSD / isManual / lastUpdated alanları eklendiğinde, harici kur servisi ile cron botu (workers/currency-bot.ts, app/lib/currency-sync.ts) ile otomatik güncelleme yapılabilir.

Fiyat Matrix Seeding (Başlangıç Verisi)

Section titled “Fiyat Matrix Seeding (Başlangıç Verisi)”

Proje içinde fiyat katmanları ve para birimi fiyatlarını doldurmak için kullanılan script:

  • Dosya: app/db/seed-pricing.ts
  • Çalıştırma: npx tsx app/db/seed-pricing.ts (proje kökünden; DATABASE_URL .env veya .dev.vars içinde tanımlı olmalı).
  • İşlem: 50 adet fiyat katmanı (Tier 1 – Tier 50) oluşturur; her tier için USD, TRY ve EUR fiyatları tier_prices tablosuna yazılır.
  • Mantık: Udemy benzeri artan fiyatlar (örn. USD 9.99 + (tier-1)*5; TRY 349.99 + (tier-1)*100; EUR 8.39 + (tier-1)*5). Temiz kurulum için script içinde db.delete(tierPrices) / db.delete(priceTiers) satırları opsiyonel olarak açılabilir.

Detaylı şema için Veritabanı Şeması sayfasına bakın.

  • app/lib/pricing-engine.ts — Bölgesel fiyat hesaplama; getRegionalPrice, getRegionalPriceFromRequest.
  • app/lib/pricing.ts — getCountryFromRequest, para birimi eşlemesi.
  • app/db/schema.ts — price_tiers, tier_prices (tierId, currency, amount).
  • app/db/seed-pricing.ts — Fiyat matrix seeding (Tier 1–50, USD/TRY/EUR).
  • app/routes/payment.checkout.tsx — Checkout’ta bölgesel fiyat kullanımı.