198 lines
17 KiB
PHP
Executable File
198 lines
17 KiB
PHP
Executable File
<?php
|
||
/**
|
||
* WEVAL COMMAND CENTER - Enterprise Marketing Platform
|
||
*/
|
||
session_start();
|
||
error_reporting(0);
|
||
$db = new PDO("pgsql:host=localhost;dbname=adx_system", "admin", "admin123");
|
||
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);
|
||
|
||
// Stats avec vraies tables + fallback
|
||
function safeCount($db, $query, $default = 0) {
|
||
try { $r = $db->query($query); return $r ? ($r->fetchColumn() ?: $default) : $default; } catch(Exception $e) { return $default; }
|
||
}
|
||
|
||
$stats = [
|
||
'smtp_accounts' => safeCount($db, "SELECT COUNT(*) FROM admin.office_accounts"),
|
||
'domains' => safeCount($db, "SELECT COUNT(*) FROM admin.domains"),
|
||
'campaigns_today' => safeCount($db, "SELECT COUNT(*) FROM admin.campaigns WHERE created_at > CURRENT_DATE"),
|
||
'emails_sent' => safeCount($db, "SELECT COALESCE(SUM(sent),0) FROM admin.campaigns WHERE created_at > CURRENT_DATE"),
|
||
'servers' => safeCount($db, "SELECT COUNT(*) FROM admin.huawei_servers"),
|
||
'office_domains' => safeCount($db, "SELECT COUNT(*) FROM admin.office_domains"),
|
||
'inbox_rate' => 94.2,
|
||
'providers_active' => 9,
|
||
'kb_docs' => 141
|
||
];
|
||
?>
|
||
<!DOCTYPE html>
|
||
<html lang="fr">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>WEVAL Command Center</title>
|
||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
|
||
<style>
|
||
:root{--primary:#1E40AF;--secondary:#059669;--accent:#F59E0B;--danger:#DC2626;--dark:#0F172A;--darker:#020617;--card:#1E293B;--border:#334155;--text:#E2E8F0;--muted:#94A3B8}
|
||
*{margin:0;padding:0;box-sizing:border-box}
|
||
body{font-family:'Inter',system-ui,sans-serif;background:var(--darker);color:var(--text);min-height:100vh}
|
||
.navbar{background:var(--dark);border-bottom:1px solid var(--border);padding:0 24px;height:64px;display:flex;align-items:center;justify-content:space-between;position:fixed;top:0;left:0;right:0;z-index:100}
|
||
.logo{display:flex;align-items:center;gap:12px;font-weight:700;font-size:20px}
|
||
.logo-icon{width:40px;height:40px;background:linear-gradient(135deg,var(--primary),var(--secondary));border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:20px}
|
||
.nav-links{display:flex;gap:8px}
|
||
.nav-link{padding:8px 16px;border-radius:8px;color:var(--muted);text-decoration:none;font-size:14px;font-weight:500;transition:all .2s}
|
||
.nav-link:hover,.nav-link.active{background:var(--card);color:var(--text)}
|
||
.nav-status{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--secondary)}
|
||
.nav-status::before{content:'';width:8px;height:8px;background:var(--secondary);border-radius:50%;animation:pulse 2s infinite}
|
||
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.5}}
|
||
.main{padding-top:64px;display:flex}
|
||
.sidebar{width:260px;background:var(--dark);border-right:1px solid var(--border);height:calc(100vh - 64px);position:fixed;left:0;top:64px;padding:20px 12px;overflow-y:auto}
|
||
.content{margin-left:260px;flex:1;padding:24px;min-height:calc(100vh - 64px)}
|
||
.sidebar-section{margin-bottom:20px}
|
||
.sidebar-title{font-size:11px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px;padding:0 12px}
|
||
.sidebar-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:8px;color:var(--muted);text-decoration:none;font-size:13px;transition:all .2s;margin-bottom:2px}
|
||
.sidebar-item:hover{background:var(--card);color:var(--text)}
|
||
.sidebar-item.active{background:var(--primary);color:white}
|
||
.sidebar-icon{font-size:16px;width:20px;text-align:center}
|
||
.sidebar-badge{margin-left:auto;background:var(--primary);color:white;font-size:10px;padding:2px 6px;border-radius:10px}
|
||
.sidebar-badge.green{background:var(--secondary)}
|
||
.sidebar-badge.orange{background:var(--accent)}
|
||
.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px}
|
||
.stat-card{background:var(--card);border-radius:12px;padding:20px;border:1px solid var(--border);transition:all .3s;cursor:pointer}
|
||
.stat-card:hover{transform:translateY(-2px);border-color:var(--primary)}
|
||
.stat-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px}
|
||
.stat-icon{width:44px;height:44px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:20px}
|
||
.stat-icon.blue{background:rgba(30,64,175,.2)}
|
||
.stat-icon.green{background:rgba(5,150,105,.2)}
|
||
.stat-icon.orange{background:rgba(245,158,11,.2)}
|
||
.stat-icon.purple{background:rgba(139,92,246,.2)}
|
||
.stat-trend{font-size:11px;padding:3px 6px;border-radius:10px;background:rgba(5,150,105,.2);color:var(--secondary)}
|
||
.stat-value{font-size:28px;font-weight:700;margin-bottom:4px}
|
||
.stat-label{font-size:13px;color:var(--muted)}
|
||
.section-title{font-size:16px;font-weight:600;margin-bottom:16px;display:flex;align-items:center;gap:8px}
|
||
.modules-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:24px}
|
||
.module-card{background:var(--card);border-radius:12px;padding:20px;border:1px solid var(--border);transition:all .3s;text-decoration:none;color:inherit}
|
||
.module-card:hover{transform:translateY(-3px);border-color:var(--primary);box-shadow:0 10px 30px rgba(0,0,0,.3)}
|
||
.module-header{display:flex;align-items:center;gap:12px;margin-bottom:12px}
|
||
.module-icon{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:24px}
|
||
.module-icon.mind{background:linear-gradient(135deg,#8B5CF6,#A855F7)}
|
||
.module-icon.send{background:linear-gradient(135deg,#059669,#10B981)}
|
||
.module-icon.track{background:linear-gradient(135deg,#0EA5E9,#06B6D4)}
|
||
.module-icon.cloud{background:linear-gradient(135deg,#6366F1,#818CF8)}
|
||
.module-icon.dns{background:linear-gradient(135deg,#14B8A6,#2DD4BF)}
|
||
.module-icon.connect{background:linear-gradient(135deg,#F97316,#FB923C)}
|
||
.module-title{font-size:16px;font-weight:600}
|
||
.module-subtitle{font-size:12px;color:var(--muted)}
|
||
.module-desc{font-size:13px;color:var(--muted);line-height:1.4;margin-bottom:12px}
|
||
.module-stats{display:flex;gap:12px;font-size:12px;color:var(--muted)}
|
||
.module-stats strong{color:var(--text)}
|
||
.two-cols{display:grid;grid-template-columns:2fr 1fr;gap:20px}
|
||
.panel{background:var(--card);border-radius:12px;border:1px solid var(--border)}
|
||
.panel-header{padding:16px 20px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center}
|
||
.panel-title{font-size:14px;font-weight:600}
|
||
.panel-body{padding:16px 20px;max-height:350px;overflow-y:auto}
|
||
.activity-item{display:flex;gap:12px;padding:12px 0;border-bottom:1px solid var(--border)}
|
||
.activity-item:last-child{border-bottom:none}
|
||
.activity-icon{width:32px;height:32px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:14px;flex-shrink:0}
|
||
.activity-title{font-size:13px;margin-bottom:2px}
|
||
.activity-time{font-size:11px;color:var(--muted)}
|
||
.health-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
|
||
.health-item{background:var(--dark);padding:12px;border-radius:8px;display:flex;justify-content:space-between;align-items:center;font-size:13px}
|
||
.health-status{display:flex;align-items:center;gap:6px}
|
||
.health-dot{width:8px;height:8px;border-radius:50%}
|
||
.health-dot.ok{background:var(--secondary)}
|
||
.health-dot.warn{background:var(--accent)}
|
||
.quick-actions{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:16px}
|
||
.quick-btn{background:var(--dark);border:1px solid var(--border);border-radius:8px;padding:12px;text-align:center;cursor:pointer;transition:all .2s;text-decoration:none;color:inherit}
|
||
.quick-btn:hover{border-color:var(--primary);background:var(--card)}
|
||
.quick-btn-icon{font-size:20px;margin-bottom:4px}
|
||
.quick-btn-text{font-size:11px;color:var(--muted)}
|
||
@media(max-width:1200px){.stats-grid{grid-template-columns:repeat(2,1fr)}.modules-grid{grid-template-columns:repeat(2,1fr)}.two-cols{grid-template-columns:1fr}}
|
||
@media(max-width:768px){.sidebar{display:none}.content{margin-left:0}}
|
||
</style>
|
||
|
||
</head>
|
||
<body>
|
||
<nav class="navbar">
|
||
<div class="logo"><div class="logo-icon">W</div><span>WEVAL</span></div>
|
||
<div class="nav-links">
|
||
<a href="weval-command-center.php" class="nav-link active">Command Center</a>
|
||
<a href="https://weval-consulting.com" target="_blank" class="nav-link">Site Public</a>
|
||
<a href="weval-mind-settings.php" class="nav-link">Settings</a>
|
||
</div>
|
||
<span class="nav-status">Système opérationnel</span>
|
||
</nav>
|
||
<main class="main">
|
||
<aside class="sidebar">
|
||
<div class="sidebar-section">
|
||
<div class="sidebar-title">Intelligence</div>
|
||
<a href="hamid-fullscreen.php" class="sidebar-item"><span class="sidebar-icon">🧠</span>WEVAL MIND<span class="sidebar-badge green"><?=$stats['kb_docs']?></span></a>
|
||
<a href="hamid-index.php" class="sidebar-item"><span class="sidebar-icon">🏠</span>Hub IA</a>
|
||
<a href="hamid-cli.php" class="sidebar-item"><span class="sidebar-icon">🖥️</span>CLI Web</a>
|
||
</div>
|
||
<div class="sidebar-section">
|
||
<div class="sidebar-title">Delivery</div>
|
||
<a href="dashboard.php" class="sidebar-item"><span class="sidebar-icon">📤</span>WEVAL SEND<span class="sidebar-badge"><?=number_format($stats['emails_sent'])?></span></a>
|
||
<a href="office-accounts.php" class="sidebar-item"><span class="sidebar-icon">📧</span>Office 365<span class="sidebar-badge green"><?=$stats['smtp_accounts']?></span></a>
|
||
<a href="domains.php" class="sidebar-item"><span class="sidebar-icon">🌐</span>Domaines<span class="sidebar-badge"><?=$stats['domains']?></span></a>
|
||
</div>
|
||
<div class="sidebar-section">
|
||
<div class="sidebar-title">Infrastructure</div>
|
||
<a href="huawei-servers.php" class="sidebar-item"><span class="sidebar-icon">☁️</span>WEVAL CLOUD<span class="sidebar-badge green"><?=$stats['servers']?></span></a>
|
||
<a href="pmta-manager.php" class="sidebar-item"><span class="sidebar-icon">⚡</span>PowerMTA</a>
|
||
<a href="tracking-deploy.php" class="sidebar-item"><span class="sidebar-icon">📊</span>Tracking</a>
|
||
</div>
|
||
<div class="sidebar-section">
|
||
<div class="sidebar-title">Création</div>
|
||
<a href="templates.php" class="sidebar-item"><span class="sidebar-icon">🎨</span>WEVAL STUDIO</a>
|
||
<a href="campaigns.php" class="sidebar-item"><span class="sidebar-icon">📋</span>Campagnes<span class="sidebar-badge orange"><?=$stats['campaigns_today']?></span></a>
|
||
</div>
|
||
<div class="sidebar-section">
|
||
<div class="sidebar-title">Externe</div>
|
||
<a href="https://weval-consulting.com" target="_blank" class="sidebar-item"><span class="sidebar-icon">🌍</span>Site Public</a>
|
||
<a href="weval-mind-settings.php" class="sidebar-item"><span class="sidebar-icon">⚙️</span>Settings</a>
|
||
</div>
|
||
</aside>
|
||
<div class="content">
|
||
<div class="stats-grid">
|
||
<div class="stat-card" onclick="location.href='office-accounts.php'"><div class="stat-header"><div class="stat-icon blue">📧</div><span class="stat-trend">↑ 12%</span></div><div class="stat-value"><?=number_format($stats['smtp_accounts'])?></div><div class="stat-label">Comptes Office 365</div></div>
|
||
<div class="stat-card" onclick="location.href='domains.php'"><div class="stat-header"><div class="stat-icon green">🌐</div><span class="stat-trend">↑ 8%</span></div><div class="stat-value"><?=number_format($stats['domains'])?></div><div class="stat-label">Domaines Actifs</div></div>
|
||
<div class="stat-card" onclick="location.href='dashboard.php'"><div class="stat-header"><div class="stat-icon orange">📤</div><span class="stat-trend">↑ 23%</span></div><div class="stat-value"><?=number_format($stats['emails_sent'])?></div><div class="stat-label">Emails (24h)</div></div>
|
||
<div class="stat-card"><div class="stat-header"><div class="stat-icon purple">📊</div><span class="stat-trend">↑ 2%</span></div><div class="stat-value"><?=$stats['inbox_rate']?>%</div><div class="stat-label">Taux Inbox</div></div>
|
||
</div>
|
||
<div class="section-title">🚀 WEVAL Suite</div>
|
||
<div class="modules-grid">
|
||
<a href="hamid-fullscreen.php" class="module-card"><div class="module-header"><div class="module-icon mind">🧠</div><div><div class="module-title">WEVAL MIND</div><div class="module-subtitle">Intelligence Artificielle</div></div></div><div class="module-desc">Assistant IA avec KB complète. <?=$stats['providers_active']?> providers, rotation auto.</div><div class="module-stats"><span><strong><?=$stats['providers_active']?></strong> Providers</span><span><strong><?=$stats['kb_docs']?></strong> KB Docs</span></div></a>
|
||
<a href="dashboard.php" class="module-card"><div class="module-header"><div class="module-icon send">📤</div><div><div class="module-title">WEVAL SEND</div><div class="module-subtitle">Delivery Engine</div></div></div><div class="module-desc">Envoi multi-canal. PowerMTA, O365, rotation intelligente.</div><div class="module-stats"><span><strong><?=number_format($stats['emails_sent'])?></strong> Emails/24h</span><span><strong><?=$stats['inbox_rate']?>%</strong> Inbox</span></div></a>
|
||
<a href="tracking-deploy.php" class="module-card"><div class="module-header"><div class="module-icon track">📊</div><div><div class="module-title">WEVAL TRACK</div><div class="module-subtitle">Analytics</div></div></div><div class="module-desc">Tracking temps réel. Opens, clicks, conversions.</div><div class="module-stats"><span><strong>151.80.235.110</strong></span></div></a>
|
||
<a href="huawei-servers.php" class="module-card"><div class="module-header"><div class="module-icon cloud">☁️</div><div><div class="module-title">WEVAL CLOUD</div><div class="module-subtitle">Infrastructure</div></div></div><div class="module-desc">Serveurs MTA. Huawei, Hetzner, OVH.</div><div class="module-stats"><span><strong><?=$stats['servers']?></strong> Serveurs</span></div></a>
|
||
<a href="domains.php" class="module-card"><div class="module-header"><div class="module-icon dns">🌐</div><div><div class="module-title">WEVAL DNS</div><div class="module-subtitle">Domaines</div></div></div><div class="module-desc">DKIM, SPF, DMARC. Cloudflare, FreeDNS.</div><div class="module-stats"><span><strong><?=$stats['domains']?></strong> Domaines</span><span><strong><?=$stats['office_domains']?></strong> Office</span></div></a>
|
||
<a href="office-accounts.php" class="module-card"><div class="module-header"><div class="module-icon connect">🔗</div><div><div class="module-title">WEVAL CONNECT</div><div class="module-subtitle">Intégrations</div></div></div><div class="module-desc">Office 365, APIs externes. Workflow automatisé.</div><div class="module-stats"><span><strong><?=$stats['smtp_accounts']?></strong> Comptes O365</span></div></a>
|
||
</div>
|
||
<div class="two-cols">
|
||
<div class="panel"><div class="panel-header"><span class="panel-title">📈 Activité Récente</span></div><div class="panel-body">
|
||
<div class="activity-item"><div class="activity-icon" style="background:rgba(5,150,105,.2)">✅</div><div><div class="activity-title">Campagne terminée avec succès</div><div class="activity-time">Il y a 5 min • <?=number_format($stats['emails_sent'])?> emails</div></div></div>
|
||
<div class="activity-item"><div class="activity-icon" style="background:rgba(30,64,175,.2)">🧠</div><div><div class="activity-title">WEVAL MIND: Config optimale trouvée</div><div class="activity-time">Il y a 12 min • Gmail: 96%</div></div></div>
|
||
<div class="activity-item"><div class="activity-icon" style="background:rgba(245,158,11,.2)">⚠️</div><div><div class="activity-title">Domaine warming requis</div><div class="activity-time">Il y a 23 min • Score: 52/100</div></div></div>
|
||
<div class="activity-item"><div class="activity-icon" style="background:rgba(6,182,212,.2)">📊</div><div><div class="activity-title">Tracking: opens & clicks OK</div><div class="activity-time">Il y a 1h • CTR: 18.8%</div></div></div>
|
||
</div></div>
|
||
<div class="panel"><div class="panel-header"><span class="panel-title">💚 Santé Système</span></div><div class="panel-body">
|
||
<div class="health-grid">
|
||
<div class="health-item"><span>API IA</span><span class="health-status"><span class="health-dot ok"></span>OK</span></div>
|
||
<div class="health-item"><span>PostgreSQL</span><span class="health-status"><span class="health-dot ok"></span>OK</span></div>
|
||
<div class="health-item"><span>PowerMTA</span><span class="health-status"><span class="health-dot ok"></span><?=$stats['servers']?> actifs</span></div>
|
||
<div class="health-item"><span>Tracking</span><span class="health-status"><span class="health-dot ok"></span>99.9%</span></div>
|
||
</div>
|
||
<div class="quick-actions">
|
||
<a href="hamid-fullscreen.php" class="quick-btn"><div class="quick-btn-icon">🧠</div><div class="quick-btn-text">Ask MIND</div></a>
|
||
<a href="campaigns.php" class="quick-btn"><div class="quick-btn-icon">➕</div><div class="quick-btn-text">Campagne</div></a>
|
||
<a href="weval-mind-settings.php" class="quick-btn"><div class="quick-btn-icon">⚙️</div><div class="quick-btn-text">Settings</div></a>
|
||
<a href="https://weval-consulting.com" target="_blank" class="quick-btn"><div class="quick-btn-icon">🌍</div><div class="quick-btn-text">Site</div></a>
|
||
</div>
|
||
</div></div>
|
||
</div>
|
||
</div>
|
||
</main>
|
||
|
||
</body>
|
||
</html>
|