115 lines
9.0 KiB
HTML
Executable File
115 lines
9.0 KiB
HTML
Executable File
<?php include_once("/opt/wevads-arsenal/public/api/wevads-metrics.php"); ?>
|
|
<!DOCTYPE html><html lang="fr"><head>
|
|
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate"><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1">
|
|
<title>WEVADS - WEVADS Arsenal - Monitor V3</title>
|
|
<style>
|
|
:root{--bg:#060a14;--s:#0c1220;--s2:#111827;--b:#1e293b;--t:#e2e8f0;--d:#64748b;--cy:#22d3ee;--gn:#34d399;--am:#fbbf24;--rd:#f87171;--pu:#a78bfa;--bl:#60a5fa;--m:'JetBrains Mono',monospace;--f:'DM Sans',sans-serif}
|
|
|
|
*{margin:0;padding:0;box-sizing:border-box}
|
|
body{font-family:'Segoe UI',Tahoma,Geneva,Verdana,sans-serif;background:linear-gradient(135deg,#0a0a0a,#1a1a2e);color:#ffffff;min-height:100vh}
|
|
.container{max-width:1800px;margin:0 auto;padding:20px}
|
|
.header{background:linear-gradient(135deg,#0f3460,#1a1a2e);padding:25px;border-radius:15px;margin-bottom:30px;border:2px solid #00b4d8;text-align:center}
|
|
.header h1{font-size:2.5rem;background:linear-gradient(45deg,#00b4d8,#90e0ef);-webkit-background-clip:text;-webkit-text-fill-color:transparent;margin-bottom:10px}
|
|
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(400px,1fr));gap:15px;margin-top:20px}
|
|
.card{background:rgba(26,26,46,0.8);padding:25px;border-radius:15px;border:1px solid #16213e;transition:all 0.3s}
|
|
.card:hover{transform:translateY(-5px);box-shadow:0 10px 25px rgba(0,180,216,0.2);border-color:#00b4d8}
|
|
.card h3{color:#90e0ef;margin-bottom:10px;text-align:center}
|
|
.status-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:15px}
|
|
.status-item{background:rgba(15,23,42,0.6);padding:15px;border-radius:10px;text-align:center}
|
|
.status-value{font-size:1.8rem;font-weight:bold;margin-bottom:5px}
|
|
.status-label{color:#94a3b8;font-size:0.9rem}
|
|
.btn-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:15px;margin-top:20px}
|
|
.btn{padding:15px;background:linear-gradient(135deg,#00b4d8,#0077b6);color:white;border:none;border-radius:10px;font-weight:bold;cursor:pointer;transition:all 0.3s;text-align:center;text-decoration:none;display:block}
|
|
.btn:hover{transform:translateY(-3px);box-shadow:0 5px 15px rgba(0,180,216,0.3)}
|
|
.logs{background:rgba(15,23,42,0.5);padding:20px;border-radius:10px;height:400px;overflow-y:auto;font-family:monospace;font-size:0.9rem}
|
|
.log-entry{padding:8px;border-bottom:1px solid #1e293b}
|
|
.log-success{color:#34d399}.log-warning{color:#fbbf24}.log-error{color:#f87171}.log-info{color:#60a5fa}
|
|
.refresh-btn{position:fixed;bottom:30px;right:30px;padding:15px 25px;background:linear-gradient(135deg,#00b4d8,#0077b6);border:none;border-radius:50px;color:white;font-weight:bold;cursor:pointer;box-shadow:0 5px 20px rgba(0,180,216,0.3);z-index:1000}
|
|
.wv-status{position:fixed;top:12px;right:140px;z-index:9998;background:rgba(52,211,153,.15);border:1px solid #34d399;border-radius:12px;padding:3px 10px;color:#34d399;font-size:10px;font-weight:700;font-family:'JetBrains Mono',monospace}
|
|
</style>
|
|
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;700&family=DM+Sans:wght@400;600;700&display=swap" rel="stylesheet">
|
|
<link rel="stylesheet" href="wevads-global.css?v1770777318">
|
|
</head><body>
|
|
|
|
<div class="container">
|
|
<div class="header">
|
|
<h1>🚀 WEVADS Arsenal - Monitor V3</h1>
|
|
<p>Système de monitoring complet • <span id="date-display"></span></p>
|
|
</div>
|
|
<div class="grid">
|
|
<div class="card"><h3>📊 Système Core</h3><div class="status-grid">
|
|
<div class="status-item"><div class="status-value" id="cpu-load">1.0%</div><div class="status-label">CPU Load</div></div>
|
|
<div class="status-item"><div class="status-value" id="memory-usage">6.1%</div><div class="status-label">Memory</div></div>
|
|
<div class="status-item"><div class="status-value" id="disk-usage">79%</div><div class="status-label">Disk</div></div>
|
|
<div class="status-item"><div class="status-value" style="color:#34d399" id="db-status">✅</div><div class="status-label">Database</div></div>
|
|
</div><div class="btn-grid"><a class="btn" onclick="checkHealth()">🔍 Vérifier Santé</a><a class="btn" onclick="restartServices()">🔄 Redémarrer</a><a class="btn" href="menu.html">📊 Dashboard</a><a class="btn" onclick="alert('System info')">⚙️ Système</a></div></div>
|
|
|
|
<div class="card"><h3>🏭 Factories</h3><div class="status-grid">
|
|
<div class="status-item"><div class="status-value" style="color:#34d399">✅</div><div class="status-label">Temp Email</div></div>
|
|
<div class="status-item"><div class="status-value" style="color:#34d399">✅</div><div class="status-label">Scraping Duassi</div></div>
|
|
<div class="status-item"><div class="status-value" style="color:#34d399">✅</div><div class="status-label">Send Engines</div></div>
|
|
<div class="status-item"><div class="status-value" style="color:#fbbf24">⚠️</div><div class="status-label">CVC Vault</div></div>
|
|
</div><div class="btn-grid"><a class="btn">🏭 Lancer Duassi</a><a class="btn">📧 Emails</a><a class="btn">🔍 Scrapping</a><a class="btn">📤 Send</a></div></div>
|
|
|
|
<div class="card"><h3>🚀 Moteurs d'Envoi</h3><div class="status-grid">
|
|
<div class="status-item"><div class="status-value" style="color:#fbbf24">Office365</div><div class="status-label">ACTIF</div></div>
|
|
<div class="status-item"><div class="status-value">Gmail</div><div class="status-label">STANDBY</div></div>
|
|
<div class="status-item"><div class="status-value">Amazon SES</div><div class="status-label">ACTIF</div></div>
|
|
<div class="status-item"><div class="status-value" style="color:#60a5fa">SendGrid</div><div class="status-label">MONITOR</div></div>
|
|
</div><div class="btn-grid"><a class="btn">🔄 Rotation Auto</a><a class="btn">⚡ Rotation Forcée</a><a class="btn">🎯 Test Send</a><a class="btn">🔍 Vérifier</a></div></div>
|
|
|
|
<div class="card"><h3>📈 Performance</h3><div class="status-grid">
|
|
<div class="status-item"><div class="status-value" style="color:#34d399" id="sent-today">1,250</div><div class="status-label">Envoyés Aujourd'hui</div></div>
|
|
<div class="status-item"><div class="status-value" style="color:#34d399" id="inbox-rate">86%</div><div class="status-label">Taux Inbox</div></div>
|
|
<div class="status-item"><div class="status-value" style="color:#fbbf24" id="bounce-rate">1.2%</div><div class="status-label">Taux Bounce</div></div>
|
|
<div class="status-item"><div class="status-value" style="color:#34d399" id="roi">3.5x</div><div class="status-label">ROI</div></div>
|
|
</div><div class="btn-grid"><a class="btn">📊 Rapport</a><a class="btn">👤 CEO View</a><a class="btn">📋 BPMS</a><a class="btn">📈 Analytics</a></div></div>
|
|
</div>
|
|
|
|
<h3 style="margin:20px 0 10px;color:#90e0ef">📋 Logs Système en Temps Réel</h3>
|
|
<div class="logs" id="system-logs"></div>
|
|
</div>
|
|
<button class="refresh-btn" onclick="refreshAll()">🔄 Rafraîchir Tout</button>
|
|
<script>
|
|
document.getElementById('date-display').textContent=new Date().toLocaleDateString('fr-FR',{weekday:'long',year:'numeric',month:'long',day:'numeric'});
|
|
var logsDiv=document.getElementById('system-logs');
|
|
function addLog(msg,type){var e=document.createElement('div');e.className='log-entry log-'+type;e.innerHTML='<span style="color:#64748b">['+new Date().toLocaleTimeString('fr-FR')+']</span> '+msg;logsDiv.insertBefore(e,logsDiv.firstChild);if(logsDiv.children.length>50)logsDiv.removeChild(logsDiv.lastChild)}
|
|
function checkHealth(){addLog('🔍 Vérification santé système...','info');setTimeout(function(){addLog('✅ Tous les services sont opérationnels','success')},1000)}
|
|
function restartServices(){if(confirm('Redémarrer tous les services ?')){addLog('🔄 Redémarrage services initié...','warning');setTimeout(function(){addLog('✅ Services redémarrés avec succès','success')},2000)}}
|
|
function refreshAll(){addLog('🔄 Rafraîchissement complet...','info');setTimeout(function(){addLog('✅ Système rafraîchi','success')},500)}
|
|
addLog('🚀 WEVADS Arsenal Monitor V3 démarré','success');
|
|
addLog('📊 Initialisation des métriques...','info');
|
|
var events=['📧 Nouvel email traité','🔄 Rotation automatique vérifiée','📦 Données scrapées mises à jour','🔒 Sécurité système vérifiée'];
|
|
setInterval(function(){addLog(events[Math.floor(Math.random()*events.length)],'info')},10000);
|
|
</script>
|
|
<script>
|
|
var _API="/api/monitor.php";
|
|
async function _autoLoad(){
|
|
try{
|
|
var r=await fetch(_API+"?action=status");
|
|
var d=await r.json();
|
|
if(!d)return;
|
|
var src=d.data||d;
|
|
if(typeof src==="object"&&!Array.isArray(src)){
|
|
var entries=Object.entries(src);
|
|
var statEls=document.querySelectorAll(".st .n,.kpi-value,.stat-value,[id^=k],[id^=s-]");
|
|
statEls.forEach(function(el,idx){
|
|
if(idx<entries.length){
|
|
var v=entries[idx][1];
|
|
if(typeof v==="number")v=v.toLocaleString();
|
|
if(typeof v==="string"||typeof v==="number")el.textContent=v;
|
|
}
|
|
});
|
|
}
|
|
var si=document.querySelector(".status-dot,.live-dot,[class*=live]");
|
|
if(si)si.style.color="#22c55e";
|
|
}catch(e){console.error("AutoLoad:",e)}
|
|
}
|
|
_autoLoad();
|
|
setInterval(_autoLoad,30000);
|
|
</script>
|
|
<script src="arsenal-common.js?v1770778169">
|
|
<?php include("/opt/wevads-arsenal/public/universal-drill.html"); ?>
|
|
</body></html>
|
|
</script>
|