From e528a91d8f629691397a6e6fd482e8a965963adb Mon Sep 17 00:00:00 2001 From: mirivlad Date: Tue, 14 Apr 2026 03:54:03 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=D0=B8=D1=81=D0=BF=D0=BE=D0=BB=D1=8C?= =?UTF-8?q?=D0=B7=D0=BE=D0=B2=D0=B0=D1=82=D1=8C=20=D0=B4=D0=B5=D1=84=D0=BE?= =?UTF-8?q?=D0=BB=D1=82=D0=BD=D1=8B=D0=B5=20=D0=B7=D0=BD=D0=B0=D1=87=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=BF=D0=BE=D1=80=D0=BE=D0=B3=D0=BE=D0=B2?= =?UTF-8?q?=20(80/90/0)=20=D0=B2=D0=BC=D0=B5=D1=81=D1=82=D0=BE=20NULL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Qwen-Coder --- src/Controllers/ServerDetailController.php | 38 +++++++++++++--------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/src/Controllers/ServerDetailController.php b/src/Controllers/ServerDetailController.php index 042c5a8..c8df1c5 100755 --- a/src/Controllers/ServerDetailController.php +++ b/src/Controllers/ServerDetailController.php @@ -297,36 +297,44 @@ class ServerDetailController extends Model VALUES (:server_id, :metric_name_id, :warning_threshold, :critical_threshold, :duration) "); + // Дефолтные значения порогов (пока хардкод, потом из настроек) + $defaultWarning = 80; + $defaultCritical = 90; + $defaultDuration = 0; + $saved = []; - $partial = []; + $usedDefaults = []; foreach ($metricTypes as $metricType) { $warning = $params[$metricType['name'] . '_warning'] ?? ''; $critical = $params[$metricType['name'] . '_critical'] ?? ''; - $duration = (int)($params[$metricType['name'] . '_duration'] ?? 0); + $duration = $params[$metricType['name'] . '_duration'] ?? ''; // Сохраняем если хотя бы один порог заполнен if ($warning !== '' || $critical !== '') { - // Если не указано - ставим NULL - $warningVal = $warning !== '' ? (float)$warning : null; - $criticalVal = $critical !== '' ? (float)$critical : null; + // Если не указано - используем дефолт + $warningVal = $warning !== '' ? (float)$warning : $defaultWarning; + $criticalVal = $critical !== '' ? (float)$critical : $defaultCritical; + $durationVal = $duration !== '' ? (int)$duration : $defaultDuration; $insertStmt->execute([ ':server_id' => $id, ':metric_name_id' => $metricType['id'], ':warning_threshold' => $warningVal, ':critical_threshold' => $criticalVal, - ':duration' => $duration + ':duration' => $durationVal ]); $name = $metricType['name']; - if ($warningVal !== null && $criticalVal !== null) { - $saved[] = $name; + $used = []; + if ($warning === '') $used[] = 'warning=' . $defaultWarning; + if ($critical === '') $used[] = 'critical=' . $defaultCritical; + if ($duration === '') $used[] = 'duration=' . $defaultDuration; + + if (count($used) > 0) { + $usedDefaults[] = $name . ' (' . implode(', ', $used) . ')'; } else { - $missing = []; - if ($warningVal === null) $missing[] = 'warning'; - if ($criticalVal === null) $missing[] = 'critical'; - $partial[] = $name . ' (нет: ' . implode(', ', $missing) . ')'; + $saved[] = $name; } } } @@ -336,15 +344,15 @@ class ServerDetailController extends Model if (count($saved) > 0) { $messages[] = 'Сохранено: ' . implode(', ', $saved); } - if (count($partial) > 0) { - $messages[] = 'Сохранено частично (используются значения по умолчанию): ' . implode(', ', $partial); + if (count($usedDefaults) > 0) { + $messages[] = 'Для остальных подставлены значения по умолчанию: ' . implode(', ', $usedDefaults); } if (count($messages) === 0) { $messages[] = 'Все пороги удалены'; } $_SESSION['flash_message'] = implode('. ', $messages); - $_SESSION['flash_type'] = count($partial) > 0 ? 'warning' : 'success'; + $_SESSION['flash_type'] = count($usedDefaults) > 0 ? 'warning' : 'success'; return $response->withHeader('Location', "/servers/{$id}?tab=thresholds")->withStatus(302); }