diff --git a/app/Jobs/Machine/ProcessCommandAck.php b/app/Jobs/Machine/ProcessCommandAck.php index b6e074e..9962467 100644 --- a/app/Jobs/Machine/ProcessCommandAck.php +++ b/app/Jobs/Machine/ProcessCommandAck.php @@ -79,6 +79,19 @@ class ProcessCommandAck implements ShouldQueue return; } + // OTA 更新例外處理:APK 下載/安裝為長時程作業,機台會持續回報「進度」ACK + // (result="progress",如「Downloading 45%」「Installing...」)。這些屬於過程回報, + // 不可視為終態,否則指令會在「剛開始下載」就被標記完成,與機台實際版本不符。 + // 僅將進度文字寫入 note 供後台檢視,並保持 pending,等待最終 success/failed。 + if ($command->command_type === 'update_app' && $resultCode === 'progress') { + $command->update(['note' => $this->payload['message'] ?? $command->note]); + Log::info('MQTT CommandAck: update_app progress (kept pending)', [ + 'command_id' => $commandId, + 'message' => $this->payload['message'] ?? null, + ]); + return; + } + // 判定執行結果 (result: "success" 或 "0" 代表成功) $status = in_array($resultCode, ['success', '0'], true) ? 'success' : 'failed';