1. 'Çekirdek Kodu Forklama' Hatası ve Güncelleme Borcu (Technical Debt)
Geleneksel e-ticaret yazılımlarında (Opencart, eski PrestaShop veya ajansların yazdığı monolitler) bir müşteri özel bir kargo entegrasyonu, sadakat puanı algoritması veya ERP senkronizasyonu istediğinde, yazılımcı genellikle doğrudan çekirdek (core) kodları açıp araya kendi kodlarını yazar.
Bu yaklaşım kısa vadede işi çözüyor gibi görünse de 6 ay sonra şu felakete yol açar:
- Stilmerce veya ana platform kritik bir güvenlik yaması (Security Patch) ya da performans güncellemesi yayınladığında, çekirdek kodlar değiştirildiği için sistem tek tıkla güncellenemez hale gelir.
- Güncelleme yapmaya kalktığınızda özel yazılmış kargo, ödeme veya kampanya kodları ezilir; mağaza günlerce kapalı kalır.
Stilmerce mühendislik ekibi, WordPress'in esnekliği ile kurumsal NestJS mimarisinin tip güvenliğini birleştiren tescilli bir Plugin Engine (Eklenti Motoru) inşa etmiştir.
2. Stilmerce Hook & Filter Yaşam Döngüsü (Lifecycle)
Stilmerce'in her kritik iş akışında (Sepet Hesabı, Sipariş Oluşturma, Kullanıcı Kaydı, Ödeme Onayı) önceden tanımlanmış kancalar (Hooks) ve filtreler (Filters) bulunur:
+-------------------------------------------------------------------------------+
| STILMERCE EKLENTİ YAŞAM DÖNGÜSÜ AKIŞI |
| |
| [Müşteri: "Siparişi Tamamla"] |
| │ |
| ▼ |
| [Filter: 'cart.calculate_total'] ──► (Eklenti: B2B Ekstra %5 İskonto Uygula) |
| │ |
| ▼ |
| [Action: 'order.pre_checkout'] ──► (Eklenti: Kredi Kartı Fraud Skoru Tara) |
| │ |
| ▼ |
| [Çekirdek: Ödeme Çekilir & DB Sipariş Kaydı] |
| │ |
| ▼ |
| [Hook: 'order.created'] ──► 1. (Eklenti: Yurtiçi Kargo Barkodu Bas) |
| ──► 2. (Eklenti: SAP / Logo ERP Aktarımı) |
| ──► 3. (Eklenti: Müşteriye WhatsApp Gönder) |
+-------------------------------------------------------------------------------+
Bu mimaride eklentiler çekirdek kodun nerede çalıştığını bilmek zorunda değildir. Yalnızca ilgili kancaya abone olur ve işini yapar.
3. Kod İncelemesi: Gerçek Bir Kargo ve ERP Eklentisi
Aşağıda Stilmerce eklenti standardına uygun olarak yazılmış örnek bir kargo entegrasyonu yer almaktadır:
// yurtici-shipping.plugin.ts
import { StilmercePlugin, Hook, Filter, OrderContext, CartContext } from '@stilmerce/core';
@StilmercePlugin({
id: 'com.stilgen.shipping.yurtici',
name: 'Yurtiçi Kargo Otomasyonu',
version: '2.1.0',
minCoreVersion: '1.0.0',
})
export class YurticiShippingPlugin {
// 1. Sepet tutarına desiye göre kargo ücreti ekle
@Filter('cart.shipping_fee')
async calculateShippingFee(currentFee: number, cart: CartContext): Promise<number> {
const totalWeight = cart.items.reduce((acc, item) => acc + (item.weight || 0.5), 0);
return totalWeight > 10 ? 89.90 : 49.90;
}
// 2. Sipariş tamamlandığında kargo barkodu üret
@Hook('order.created')
async handleOrderCreated(order: OrderContext): Promise<void> {
const consignment = await this.yurticiApi.createBarcode({
orderNumber: order.id,
recipientName: order.shippingAddress.fullName,
address: order.shippingAddress.fullAddress,
city: order.shippingAddress.city,
});
// Barkod numarasını çekirdeğin metadata havuzuna iliştir
await order.setMetadata('tracking_number', consignment.trackingCode);
}
}
Sıfır Güncelleme Kırılması
Yarın Stilmerce 2.0 sürümüne geçtiğinizde bu eklenti aynen çalışmaya devam eder. Çekirdek güncellemesi tek bir tıkla yapılır; mağazanızda hiçbir aksama yaşanmaz.
4. Eklenti Güvenliği ve Sandbox İzolasyonu
Kötü yazılmış bir 3. parti eklenti (örneğin yanıt vermeyen bir kargo API'si) tüm mağazayı kilitleyebilir mi? Stilmerce Plugin Engine iki katmanlı koruma sağlar:
- Circuit Breaker & Zaman Aşımı (Timeout Guard): Herhangi bir eklenti kancası 3.000 milisaniye içinde yanıt vermezse çekirdek bu eklentiyi sessizce baypas eder ve siparişin tamamlanmasını engellemez.
- Hata İzolasyonu: Eklentide bir runtime exception oluşursa, bu hata global sisteme yayılmaz; eklenti loglarına yazılır ve yönetici paneline uyarı düşer.