Teknik Detaylar
Uygulama MVVM mimarisi üzerinde Swift 5.5 ve UIKit ile geliştirildi. 106 dosyalık kod tabanı 5 ana modül içeriyor: Vehicles, Maintenance, Fuel, Drivers, Reports.
CoreData Katmani:
NSPersistentContainer ile Core Data stack yönetimi. 12 entity: Vehicle, Driver, MaintenanceRecord, FuelRecord, InsurancePolicy, InspectionRecord, PenaltyRecord, DamageRecord, Assignment, CostEntry, SyncLog, UserSettings. NSFetchedResultsController ile UITableView ve UICollectionView binding — veri değiştiğinde UI otomatik güncellenir. NSBatchDeleteRequest ile toplu silme operasyonları (arsivleme). NSPersistentCloudKitContainer değerlendirildi ancak REST API ile mevcut backend uyumu için NSPersistentContainer tercih edildi.
Network Katmani:
URLSession üzerinde generic APIClient yapısı — Codable ile tip-güvenli request/response. Interceptor pattern ile her istekte auth token (Bearer) ekleme. Retry logic: 3 deneme, exponential backoff. Endpoint enum ile type-safe URL oluşturma. Multipart form-data desteği ile fotoğraf yükleme (arac hasar fotoğrafları). Response caching: URLCache ile GET istekleri 5 dakika cache'lenir.
Senkronizasyon Motoru:
SyncManager sınıfı — Reachability ile bağlantı durumu izleme. Bağlantı geldiğinde 3 adımlı senkronizasyon: (1) Yerel pending kayıtları sunucuya POST/PUT, (2) Sunucudan GET /sync?since=lastSyncTimestamp ile değişiklikleri cek, (3) Conflict resolution — lastModified karşılaştırması, son yazan kazanir, conflict log tutulur. Background fetch ile 15 dakikada bir otomatik senkronizasyon. NSManagedObjectContext performBlock ile thread-safe Core Data işlemleri.
Yakıt Analizi:
FuelAnalyzer sınıfı — araç bazlı tüketim profili oluşturma. Ortalama, medyan, standart sapma hesaplama. Z-score anomali tespiti (eşik: 2.0). Mevsimsel katsayi matrisi: [Ocak-Mart: 1.15, Nisan-Haziran: 1.05, Temmuz-Eylul: 1.10, Ekim-Aralik: 1.12]. Charts framework ile tüketim trend grafigi (LineChartView), maliyet çubuk grafigi (BarChartView), anomali noktaları vurgulanmis scatter plot.
PDF Motoru:
PDFReportBuilder — UIGraphicsBeginPDFContextToData ile A4 boyut PDF. Sayfa düzeni: 72pt margin, header (logo + tarih + rapor tipi), tablo (CGContext ile çizim, satir renk alternasyonu), grafik (ChartView'dan UIGraphicsGetImageFromCurrentImageContext ile UIImage render), footer (sayfa numarası). 4 rapor şablonu: Executive Summary, Fuel Analysis, Maintenance Schedule, Cost Breakdown.
iPad Optimizasyonu:
UISplitViewController ile 3 kolon yapısı (sidebar + master + detail). UICollectionViewCompositionalLayout ile adaptive grid — iPad'de 3 kolon, iPhone'da 1 kolon. Drag & Drop desteği ile sürücü-arac ataması (UIDropInteraction). Keyboard shortcuts: CMD+N yeni kayıt, CMD+F arama, CMD+R rapor oluşturma.