Ne işe yarar (iş diliyle)

Fabrika, depo, şantiye gibi sinyalin kesildiği yerlerde uygulama “çalışmadı, tekrar dene” demez. Kullanıcı işini yapmaya devam eder; yaptığı her işlem cihazda güvenle kuyruğa alınır ve bağlantı gelir gelmez sunucuya gönderilir. Ekranda gördüğü liste de son bilinen hâliyle açılır — boş ekranla kalmaz. İş açısından önemi: saha ekibi bağlantıya bağımlı olmadan çalışır, hiçbir kayıt kaybolmaz.

Hangi müşteri/projelerde işe yarar

  • İnşaat/tesis/fabrika sahasında telefon/tablet kullanan ekipler.
  • Lojistik/teslimat, depo sayımı, saha denetimi gibi bağlantının garanti olmadığı işler.
  • “İnternet gidince uygulamam durmasın” diyen her mobil-öncelikli iç araç.

Nasıl çalışır (kısa, sade)

Uygulama bir web uygulaması ama telefona kurulabilir (PWA). Uygulamanın kabuğu ve son okunan veriler cihazda saklanır; çevrimdışıyken ekran yine açılır ve “çevrimdışı — son bilinen durum” uyarısı gösterir. Kullanıcının yazma işlemleri (bir adımı tamamlama, fotoğraf) bir kuyruğa (outbox) yazılır; her komut tekil bir kimlik taşır, böylece bağlantı koptuğunda tekrar gönderilse bile işlem iki kez işlenmez.

Olgunluk

canlida-kanitlanmis — Mod ERP’de çimento fabrikası sahasında çalışıyor; offline-first hem “yazma” (outbox) hem “okuma” (önbellek) yarısıyla kurulu. Genel bir çözüme paketlemek için outbox senkron mantığı ayrı bir kütüphaneye çıkarılabilir.

Teknik (geliştiriciler için)

mod-erp · service worker (apps/web/src/sw.ts, Workbox injectManifest): uygulama kabuğu precache, API okumaları NetworkFirst (4 sn timeout) + X-Mod-Onbellek işareti, fotoğraflar ayrı CacheFirst önbellek. Yazma tarafı: her komut clientCommandId (uuid) taşır; sunucuda processed_commands tablosu

  • interceptor idempotency sağlar (ağ koptuğunda cevap kaybolsa da tekrar deneme tek iş üretir). Çıkışta önbellek temizlenir (ortak cihazda sonraki kullanıcı öncekinin verisini görmesin). Sınır: gerçek local-first okuma modeli (Dexie üzerinden) faz olarak planlı; bugün okuma önbelleği HTTP düzeyinde.