Ticaret
Bu grup, alıcının gördüğü vitrin ile sipariş belgesinin kurulmasını kapsar. Siparişin yaşam döngüsü v1 order modülündedir; akış Alışveriş sayfasında anlatılır.
catalog
Görevi: Ürün gerçeği. İsim, KDV, birim, kategori, görsel, HKS kodu, depo fiyatı ve arama.
| Yol | Kimin için |
|---|---|
catalog/public, catalog/third-party | Açık |
catalog/buyer | Alıcı |
catalog/officer | Yetkili |
catalog/admin | Yönetici (birim/KDV için ek izin) |
Alıcı listesi şu sırayı izler: alıcının seçili adresi → depo kararı → MeiliSearch filtresi (depo, şirket tipi, kategori, isteğe bağlı yalnız indirimli) → depo fiyatlarıyla zenginleştirme. Sonuç yoksa BigQuery’ye “bulunamadı” olayı yazılır.
Ürünün seçenekleri (ProductOption) kalite tipi, artı/eksi maddeler ve görsel taşır. Depo, seçeneğe kg başına ek fiyat (WarehouseProductOptionPrice.additionalPrice) verir. Taban fiyat kademeli WarehouseProductPrice satırındandır; nihai birim fiyat indirimli taban + ek fiyattır. Ek fiyat satırı yoksa o seçenek o depoda satılmaz.
Ürün kaydı, seçenek değişimi veya silinmesi product.upsert / product.deleted olaylarıyla arama indeksini günceller. Saatlik cron indeksi baştan kurar (üretimde).
Alıcı, katalogda olmayan ürün için ürün talebi açabilir. Bu talep Mongo productRequests koleksiyonundadır; durum PENDING veya REVIEWED. Sohbet, alıcı başına tek PRODUCT odasına düşer (contextId = alıcının kullanıcı id’si, oda adı Ürün Talepleri). Eski ürün-başına odalar artık sorgulanmaz.
Şema: Katalog ve stok kartı.
v2 yeni mobil kataloğu MeiliSearch yerine doğrudan veritabanından okur. Arama, fiyat ve satılabilirlik kararları ProductSearchDecider ile katalog/sepette paylaşılan decider'lar üzerinden kurulur.
basket
Görevi: Alıcının henüz sipariş olmamış satırları.
Yol: basket/buyer. Satırlar Prisma ProductBasket tablosundadır (kullanıcı + ürün, miktar, isteğe bağlı optionId, aktiflik). Sepet, satın alma önizlemesinde depo fiyatı, seçenek ek fiyatı ve asgari tutarla birleştirilir.
purchase
Görevi: Sepeti sipariş belgesine çevirmek; henüz yaşam döngüsünü yürütmez.
| Yol | Kimin için |
|---|---|
purchase/buyer | Alıcı |
purchase/officer | Yetkili (alıcı adına) |
Önizleme: adres ve fatura adresi doğrulanır, depo seçilir, cari okunur, grup indirimi ve hediye bakiye mesajı kurulur, kargo / içeride taşıma / bakiye kullanımı hesaplanır, teslimat bloğu kurulur. Asgari sepet, grubun isMinBasketRequired bayrağına göre atlanabilir. Nakit ödeme yöntemi reddedilir.
Oluşturma: kullanıcı kimliğine MurLock konur; ödeme bekleyen eski siparişler iptal edilebilir; OrderBuyerService.createOrder çağrılır. Ödeme yöntemine göre ilk sipariş durumu değişir — Alışveriş akışı.
Sabitler kodda: ücretsiz kargo eşiği 3000, içeride teslim hizmet bedeli 250 (para birimi TRY).
post
Görevi: Uygulama içi içerik. Prisma Post. Tipler: SLIDER, BANNER, STORY, ACADEMY. Hedef kitle userType alanıdır.
Haftalık aktiflik penceresi isteğe bağlıdır: startDayOfWeek / startTime / endDayOfWeek / endTime (Europe/Istanbul, HH:mm, gün 0=Pazar … 6=Cumartesi). Dördü birden boşsa içerik her zaman aktiftir; dördü birlikte dolu olmalıdır. Alıcı ve satıcı listeleri bu pencereye göre süzülür.
Alıcı listesi post/buyer yolunda herkese açıktır. Satıcı, yetkili ve yönetici uçları rollüdür. Bu, satıcı teklifi değildir; vitrin / akademi içeriğidir.
procurement
Görevi: Satıcının “mal tedarik etmek istiyorum” talebi.
Yol: procurement/seller. Kayıt Mongo procurementRequests koleksiyonuna gider; satıcı ve ilçe gömülü kopyadır. Görseller dosya deposuna yüklenir. Durumlar: PENDING, APPROVED, IN_PROGRESS, COMPLETED, CANCELLED.
static
Görevi: Politika metinleri (static/policy, açık) ve alıcıya özel statik içerik (static/buyer).
Sipariş modülü nerede?
Sipariş belgesi, durum makinesi, iade ve teslimat order + transfer + warehouse üçlüsündedir: