Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

Mimari

İki API nasıl birlikte çalışıyor

Haljet’in sunucu tarafında geçiş boyunca iki NestJS uygulaması çalışır:

  • haljet-api (v1) geniş üretim yüzeyini, eski mobili, cron'ları ve henüz taşınmamış entegrasyonları yürütür.
  • haljet-api-new (v2) taşınmış panel uçlarını, yeni domain yüzeylerini ve yeni BUYER uygulamasını yürütür.

İkisi de api genel önekini kullanır ve aynı MySQL, MongoDB ve Redis altyapısına bağlanır. Aynı jeton sırları sayesinde tek oturum iki serviste de geçerlidir.

Birlikte çalışma

Prisma şeması ve migration'ların sahibi v1'dir. v2 aynı şemanın ayna kopyasıyla istemci üretir; ortak Mongo belgelerine v1 biçimini koruyarak yazar. Ayrıntı: Geçiş ve veri sahipliği.

v1 katmanları

KatmanGörevi
HTTPNestJS denetleyicileri. Varsayılan önek api.
İş kuralıModül servisleri. Sipariş, ödeme, stok gibi kurallar burada.
Olaylarİç olay yayıcı. Sipariş oluşunca bildirim, rapor, Firestore senkronu gibi yan işler tetiklenir.
KuyrukBull + Redis. Transfer sevk, rapor toplama, mesaj yapay zekası.
Zamanlanmış işNest Schedule. Fatura, heatmap, grup değerlendirme, indeks yenileme.
KilitMurLock (Redis). Aynı kullanıcının aynı anda iki sipariş oluşturması gibi yarışları keser.

v1 modül listesi: Modül haritası.

v2 katmanları

v2 düz bir modül listesi yerine üç katman kullanır:

KatmanGörevi
coreKimlik, hesap, yapılandırma, veritabanı bağlantıları ve ortak entegrasyonlar
domainscatalog, comms, finance, logistics, orders, parties
opsPanel ürünü olmayan rebuild ve backfill işlemleri

Her Mongo koleksiyonunun tek bir yazma sahibi vardır. Alanlar genel olarak birbirinin verisini yayımlanan servislerden okur; stok/fatura eşleştirmesindeki açık salt-okuma istisnaları sahipliği değiştirmez. Detay: v2 mimarisi.

Güvenlik varsayılanları

v1'de uygulama genelinde JWT erişim jetonu zorunludur (AtGuard). Açık uçlar @Public() ile işaretlenir: giriş, bölge listesi, genel katalog, ödeme geri bildirimi, İzibiz web kancası gibi.

MekanizmaNe zaman kullanılır
JWT erişim jetonuNeredeyse tüm uçlar. Süre: 1 gün.
JWT yenileme jetonuOturum yenileme. Süre: 7 gün.
API anahtarıÖzellikle auth uçları.
RolAlıcı / satıcı / yetkili / yönetici ayrımı.
İzin koduÖrneğin admin:buyer:full, officer:buyer-order-transfer:full.

İstek ve yanıt

v1 doğrulaması class-validator ile yapılır. Dil, Accept-Language başlığından okunur; varsayılan dil Türkçe. Sayfalı listelerde yanıt gövdesi çoğunlukla data ve isteğe bağlı meta kullanır.

v2 tanımsız parametreyi sessizce atmak yerine 400 döndürür. Yeni v2 uçlarında sayfalama { data, page, limit, total, totalPages }, sayfasız liste { data } biçimindedir. Taşınan uçlar geçerli v1 yanıtını koruduğu için iki biçim geçiş boyunca yan yana bulunur.

Çevredeki sistemler

Bunların her biri Altyapı ve dış sistemler sayfasında açıklanır.

SistemRol
MySQLAna ilişkisel kayıt
MongoDBSipariş ve operasyon belgeleri
RedisKuyruk, kilit, önbellek
MeiliSearchv1 ürün araması; v2 katalog aramasını veritabanından yapar
FirebasePush, Firestore alıcı senkronu, dosya
BigQueryv1 analitik olay akışı; v2'nin kendi ödendi yaptığı akışlara taşınmadı
PayTR / PaywallKart ve EFT ödeme
İzibizE-fatura / e-arşiv
HKSHal kayıt sistemi bildirimleri
NetgsmSMS
ResendE-posta
TelegramOperasyon uyarıları
Google Geminiİç yapay zeka metinleri

Uygulama içi dil

API kodu İngilizce isimler kullanır. İş dilinde karşılıklar:

Kod adıİş adı
BuyerAlıcı
SellerSatıcı
OfficerYetkili / saha veya depo personeli
AdminYönetici
WarehouseDepo
BuyerOrderAlıcı siparişi
TransferTeslimat taşıması
FinancialAccountCari hesap