query("SELECT * FROM shs_records ORDER BY id DESC LIMIT 12")->fetchAll(); // Current SHS $shs = $pdo->query("SELECT * FROM shs_records ORDER BY id DESC LIMIT 1")->fetch(); // MRR $stmt = $pdo->query("SELECT SUM(sla_price_monthly) as mrr FROM sla_contracts WHERE status='active'"); $mrrData = $stmt->fetch(); $mrr = (float)($mrrData['mrr'] ?? 0); // Active SLA contracts $stmt = $pdo->query("SELECT COUNT(*) FROM sla_contracts WHERE status='active'"); $activeSla = $stmt->fetchColumn(); // Total objects $stmt = $pdo->query("SELECT COUNT(*) FROM objects WHERE status='active'"); $totalObjects = $stmt->fetchColumn(); // Engineer count $stmt = $pdo->query("SELECT COUNT(*) FROM users WHERE role IN ('engineer','technician') AND is_active=1"); $engineerCount = $stmt->fetchColumn(); // SLA compliance $stmt = $pdo->query("SELECT COUNT(*) as total, SUM(CASE WHEN sla_compliant=TRUE THEN 1 ELSE 0 END) as compliant FROM tasks WHERE closed_at IS NOT NULL"); $slaData = $stmt->fetch(); $slaCompliance = $slaData['total'] > 0 ? round(($slaData['compliant'] / $slaData['total']) * 100, 1) : 0; // Incident rate $stmt = $pdo->query("SELECT COUNT(*) FROM incidents WHERE created_at > NOW() - INTERVAL '30 days'"); $incident30 = $stmt->fetchColumn(); $incidentRate = $totalObjects > 0 ? round($incident30 / $totalObjects, 2) : 0; // Retention (active sla / total ever) $stmt = $pdo->query("SELECT COUNT(DISTINCT object_id) FROM sla_contracts WHERE status IN ('active','expired','cancelled')"); $totalEver = $stmt->fetchColumn(); $retention = $totalEver > 0 ? round(($activeSla / $totalEver) * 100, 1) : 0; // Engineer KPI last period $kpiLatest = $pdo->query("SELECT ek.*, u.full_name FROM engineer_kpi ek JOIN users u ON u.id=ek.engineer_id ORDER BY ek.period_end DESC LIMIT 10")->fetchAll(); // Avg engineer score $stmt = $pdo->query("SELECT AVG(engineer_score) FROM engineer_kpi WHERE period_end > NOW() - INTERVAL '30 days'"); $avgEngineerScore = round((float)$stmt->fetchColumn(), 1); // Revenue per engineer $rpe = $engineerCount > 0 ? round($mrr / $engineerCount, 2) : 0; require __DIR__ . '/../../inc/header.php'; ?>

CEO Дашборд

Обновлено:
⚠ SHS . Рекомендуется: снизить продажи, запустить аудит, пересмотреть назначения.
⚠ SHS . Требуется внимание.
⚠ SLA Compliance % — ниже 90%. Рекомендуется заморозить неприоритетные проекты, увеличить частоту проверок.
⚠ Удержание клиентов % — ниже 90%. Обязательный аудит клиентов, пересмотр назначений инженеров.
SHS (System Health)
'.$shs['shs_status'].'' : 'Нет данных' ?>
MRR (месячный доход)
активных контрактов
SLA Compliance
%
Удержание (Retention)
%
Incident Rate (30 дн)
Средний Engineer Score
Revenue per Engineer
Активных объектов
Инженеров / техников:

SHS Trend

Нет данных SHS. Записи появятся после создания KPI и расчётов.

Период SLA Stability Revenue Retention Engineer Perf Incident Stability SHS Score Статус
% % % % %

Engineer KPI (последние)

Нет KPI записей.

Инженер Период SLA Compliance Engineer Score Грейд
%

Расчёт SHS

На основе текущих данных системы