ffe0e46e3d
Changes: - Constants.kt: Add KEY_LAST_GLOBAL_SYNC_TIME and MIN_GLOBAL_SYNC_INTERVAL_MS (30s) - SyncStateManager.kt: Add canSyncGlobally() and markGlobalSyncStarted() methods - MainViewModel.triggerAutoSync(): Check global cooldown before individual throttle - MainViewModel.triggerAutoSync(): Mark global sync start before viewModelScope.launch - MainViewModel.triggerManualSync(): Mark global sync start after tryStartSync() - SyncWorker.doWork(): Add SyncStateManager.tryStartSync() coordination with silent=true - SyncWorker.doWork(): Check global cooldown before expensive server checks - SyncWorker.doWork(): Call markCompleted()/markError() to update SyncStateManager - WifiSyncReceiver: Add global cooldown check and KEY_SYNC_TRIGGER_WIFI_CONNECT validation