📋 Overview
Dokumentasi ini menjelaskan implementasi lengkap fitur offline-first untuk transaksi POS di MStore Mobile menggunakan Isar database dan batch sync ke backend.🎯 Fitur Utama
Offline Transaction
Simpan transaksi lokal saat offline menggunakan Isar
Auto Batch Sync
Sinkronisasi otomatis saat koneksi kembali online
Conflict Detection
Deteksi duplikasi menggunakan offline_reference
Sync Status Tracking
Tracking status: pending, syncing, synced, failed
🏗️ Arsitektur
📦 Komponen Utama
1. TransactionLocalEntity
Entity Isar untuk menyimpan transaksi offline:lib/database/isar/entities/transaction_local_entity.dart
2. TransactionLocalService
Service untuk CRUD transaksi offline:lib/core/transaction/transaction_local_service.dart
3. BatchSyncService
Service untuk batch sync ke backend:lib/core/sync/batch_sync_service.dart
4. OfflineSyncService Integration
Integrasi auto-sync saat online:lib/core/sync/offline_sync_service.dart
5. TransactionApi Endpoint
Endpoint untuk batch sync:lib/core/transaction/transaction_api.dart
🔧 Dependency Injection
Registrasi diNetworkModule:
📝 Cara Penggunaan
1. Create Offline Transaction
2. Manual Sync
3. Check Sync Statistics
4. Retry Failed Transactions
🚀 Setup & Installation
1. Update IsarDb Schema
TambahkanTransactionLocalEntity ke schema Isar:
2. Run Build Runner
Generate file.g.dart:
3. Initialize OfflineSyncService
Dimain.dart:
🔍 Monitoring & Debugging
AppLog Integration
Semua operasi offline-first sudah terintegrasi dengan AppLog:Isar Inspector
Gunakan Isar Inspector untuk debug database lokal:⚠️ Best Practices
TTL default untuk transaction sync adalah 2 menit. Sesuaikan berdasarkan kebutuhan bisnis.
🐛 Troubleshooting
Transaksi Tidak Tersinkronisasi
- Periksa koneksi internet
- Cek status sync:
await transactionLocalService.getStatistics() - Lihat log error di AppLog
- Retry manual:
await transactionLocalService.retryFailedTransactions()
Duplikasi Transaksi
Backend sudah menangani duplikasi menggunakanoffline_reference. Jika tetap terjadi duplikasi:
- Pastikan
offline_referenceunik (format:DEVICE_ID-timestamp) - Periksa index unique di database backend
- Cek response dari batch-sync endpoint
Build Runner Error
📚 Referensi
🎯 Next Steps
UI Implementation
Implementasi UI untuk monitoring sync status
Backend Setup
Setup backend untuk batch-sync endpoint
Testing
Testing strategi untuk offline-first
Performance
Optimasi performa offline-first