Ne işe yarar (iş diliyle)
Karmaşık süreçlerde (onaylar, geçişler, “şu olmadan bu yapılamaz” kuralları) en sık hata, aynı kuralın iki yerde — arayüzde ve sunucuda — ayrı yazılıp zamanla ayrışmasıdır: buton açık görünür ama işlem reddedilir, ya da tersi. Bu yetenek bütün iş kurallarını tek bir pakette toplar; arayüz o kuralla butonu söndürüp gerekçeyi gösterir, sunucu aynı kuralla isteği reddeder. Kural bir kez yazılır, iki yer onu kullanır. Sonuç: tutarlı davranış ve bakımı kolay bir sistem.
Hangi müşteri/projelerde işe yarar
- Çok adımlı onay/iş akışı olan her ürün (başvuru, teklif, üretim hattı, saha operasyonu).
- Regülasyon/kural yükü ağır süreçler (“kuran kişi kendi işini onaylayamaz” gibi katı kısıtlar).
- Arayüz ve backend’in ayrı ekiplerce yazıldığı, kuralın senkron kalması gereken projeler.
Nasıl çalışır (kısa, sade)
İş kuralları ne arayüzde ne veritabanında; ikisinden de bağımsız, saf bir mantık paketinde yaşar. Bir işin hangi durumdan hangisine geçebileceği (durum makinesi) ve her geçişin koşulları (kurallar) burada tanımlanır. Kurallar test edilirken “kod çalışıyor mu” değil, “iş kuralı doğru mu” (kabul kriteri) ölçülür — bir test kırmızıysa sistem sahada yanlış çalışıyor demektir, düzeltilecek olan testi değil koddur.
Olgunluk
canlida-kanitlanmis — Mod ERP’de 12 değişmez kural (K1–K12) + tam durum makinesi bu şekilde yaşıyor; kabul kriterleri olarak test ediliyor. Gerçek fayda üretimde defalarca kanıtlandı: kural sunucuda genişlediğinde arayüzün ayrışması bu yapı sayesinde tek yerden düzeldi.
Teknik (geliştiriciler için)
mod-erp · packages/domain (UI ve API’den bağımsız): Zod şemaları + canTransition durum makinesi +
K1–K12 saf fonksiyonlar (rules.ts), kabul kriteri testleri (rules.test.ts). Client kuralı çağırıp
butonu söndürür + gerekçe gösterir; server aynı fonksiyonu çağırıp isteği reddeder. Örnek incelik: K1
(“kuran kişi onaylayamaz”) çalışan id’siyle ölçülür, User.id ile değil — ikisi karıştırıldığında kural
“kodda var, sahada yok” durumuna düşer (bu repoda bilfiil yaşandı ve teste bağlandı). Sınır: kuralın saf
kalması disiplin ister; bir kural pakete girmezse iki yerde ayrışma riski geri döner.