Beyoğlu, İstanbul
1. Paket Satın Alma
Frontend → Kullanıcı paket seçer ve ödeme yapar
Gambit → POST /api/v1/orders (işlemi tamamlanır)
Gambit → OrderBought eventi yayınlar → SQS topic: gambit.order.bought
Skylab → SQS'den event'i dinler → user_packages tablosuna kayıt + site_users.is_paid = True günceller
2. İlan Yayınlama
Frontend → İlan formu doldurulur ve gönderilir
Panamera API → POST /api/v1/ads (ilan veritabanına kaydedilir)
Panamera Core → İlan kaydı oluşturulur (status = 'limited')
Panamera Core → Mudra'ya GET /api/v1/checkFreeLimit isteği gönderir
Mudra → Kullanıcının free limit'ini kontrol eder → consumption_type = 'PENDING' olarak kaydeder
3. Paket Tüketimi
Frontend → Kullanıcı "İlanı Aktif Et" butonuna basar
Panamera Core → Mudra'ya POST /api/v1/consume isteği gönderir
Mudra → Paket tüketimi yapar → consumption_type = 'PAID' olarak günceller
Mudra → PAID_LIMIT_APPLIED eventi yayınlar → SQS topic: mudra.paid.limit.applied
4. Event İşleme
SQS → Event'i tüm dinleyicilere yayınlar
Skylab → SQS'den event'i dinler → ad_payments tablosuna kayıt + site_ads.is_paid = True günceller
paid_limit_applied_event_handler Lambda → SQS'den event'i dinler → POST https://core.internal.eks.prd.eu-west-1.horizontals.letgo.com/api/v1/monetizer/events/monetizationPaidLimitApplied/ isteği gönderir
Panamera Monetizer API → Event'i işler → İlanı limited durumundan new durumuna çevirir
5. Sonuç
İlan aktif hale gelir ve kullanıcılar tarafından görülebilir