Sistem & İş Akışları
Bu bölüm, BulutFilo'nun arka planda otomatik olarak çalışan iş akışlarını anlatır. Sistem yazılım ekibi ve sistem yöneticileri için referans niteliğinde; standart son kullanıcılar bu bölümü pas geçebilir. Saatlik yakıt aktarımları, gece toplu işleri, vade ve bildirim mailleri, kamera durum senkronizasyonu, Logo ERP REST aktarımları, audit/snapshot mekanizması ve dış sistem entegrasyonları gibi otomatik süreçler burada listelenir.
| Sayfa | Kapsam |
|---|---|
| Cron / Zamanlanmış İşler | app/Console/Kernel.php içinde tanımlı ~50 cron komutunun tam listesi (sıklık, settings flag, kuruma özel skip) |
| Observer'lar | 6 observer ve ne tetiklediği (Logo ERP transferi, kupon hareketleri, personel kart geçmişi, snapshot/audit) |
| Audit & Snapshot | HistoryObserver ve Snapshot mekanizması — tüm kayıtların değişiklik geçmişi nasıl tutuluyor |
| Dış Entegrasyonlar | Logo ERP, Petrol Ofisi, Opet, Shell, HGS (TETRA / Vakıfbank), Boschcar, Hikvision, Dahua, EKAP, EGM/KGM ceza sorgu |
| Bildirim & Mail | 53 mail template'i + bildirim üreten cron/job'lar |
Genel Mimari
┌──────────────┐ ┌────────────────────┐ ┌───────────────┐
│ Kullanıcı │ ───→ │ Controller / Form │ ───→ │ Model boot() │
│ eylemi │ │ Request validation│ │ hook'ları │
└──────────────┘ └────────────────────┘ └───────┬───────┘
│
┌───────────────────────────────┤
▼ ▼
┌──────────────┐ ┌──────────────┐
│ Observer │ │ Hareket / │
│ (6 adet) │ │ Snapshot │
└──────┬───────┘ │ audit log'a │
│ │ yazar │
▼ └──────────────┘
┌──────────────┐
│ Job kuyruğu │
│ (98 adet) │
└──────┬───────┘
│
▼
┌──────────────┐
│ Mail / Logo │
│ ERP / vb. │
└──────────────┘
┌──────────────────────┐
│ Cron (~50 komut) │
│ her dakika–aylık │ ───→ Job dispatch eder
└──────────────────────┘
Hızlı Referans — Sayısal Envanter
| Mekanizma | Sayı | Notlar |
|---|---|---|
| Cron komutu | ~50 distinct | Bazıları kuruma özel (isAppName('anadolum-filo'/'sarilar'/'arnavutkoy')) |
| Observer | 6 | Transfer, Snapshot, PersonelKart, KuponKodu, YetkiliServisKuponKodu, History |
| Async Job | 98 | %50'si Excel/PDF export, %20'si Logo ERP, %20'si import |
| FormRequest | 172 | Her CRUD işlemi için ayrı validation |
| Mail template | 53 | Bildirim, alarm, hatırlatma maili |
| Model boot hook | ~92 | saving/created/updated/deleted lifecycle |
| Settings feature flag | 30+ | settings('feature-XYZ-aktif') ile açılıp kapanır |
Multi-Tenant ve Kuruma Özel Davranış
Kernel::schedule() her cron'u --env=<tenant> parametresiyle çalıştırır (multi-tenant). Bazı cron'lar yalnızca belirli kurumlar için aktiftir:
| Koşul | Etkilenen Cron Sayısı |
|---|---|
isAppName('anadolum-filo') | 6 (PTT raporlama) |
isAppName('arnavutkoy') | 1 (görev şoförleri kart yetkilendirmesi) |
isAppName('sarilar') | 13 (e-Finans firma import) |
isAppName(['fatih']) | UI: Ceza sayfasında "UHM No" sütunu |
isArvento() | 4 (Arvento GPS senkron) |
settings('feature-XXX-aktif') flag'i ile açılıp kapanan tüm cron'lar flag yoksa otomatik skip edilir (->skip(fn() => ! settings(...))).
Hata Durumunda
Cron komutları başarısız olursa otomatik olarak yazilim@bulutfilo.com adresine mail atılır (emailOutputOnFailure($failAlertMail)). Tek istisna: bfy:vakifbank-hgs-harcama-import mail göndermez (->skip koşulu yetersiz config olduğunda zaten devreyi düşürür).
Saat Dilimi
Tüm cron'lar Europe/Istanbul saat diliminde çalışır (Kernel::scheduleTimezone()).