All checks were successful
star-cloud-deploy-demo / deploy-demo (push) Successful in 36s
46 lines
1.1 KiB
PHP
46 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace App\Services\Machine;
|
|
|
|
use App\Models\Machine\Machine;
|
|
use App\Models\Machine\MachineLog;
|
|
use Illuminate\Support\Facades\Log;
|
|
|
|
class MachineService
|
|
{
|
|
/**
|
|
* 處理機台日誌寫入與狀態更新
|
|
*/
|
|
public function recordLog(int $machineId, array $data): MachineLog
|
|
{
|
|
$machine = Machine::findOrFail($machineId);
|
|
|
|
// 建立日誌紀錄
|
|
$log = $machine->logs()->create([
|
|
'level' => $data['level'] ?? 'info',
|
|
'message' => $data['message'],
|
|
'context' => $data['context'] ?? null,
|
|
]);
|
|
|
|
// 同步更新機台最後活耀時間與狀態
|
|
$machine->update([
|
|
'last_heartbeat_at' => now(),
|
|
'status' => $this->resolveStatus($data),
|
|
]);
|
|
|
|
return $log;
|
|
}
|
|
|
|
/**
|
|
* 根據日誌內容判斷機台是否應標記成錯誤
|
|
*/
|
|
protected function resolveStatus(array $data): string
|
|
{
|
|
if (isset($data['level']) && $data['level'] === 'error') {
|
|
return 'error';
|
|
}
|
|
|
|
return 'online';
|
|
}
|
|
}
|