Some checks failed
WEVAL NonReg / nonreg (push) Has been cancelled
MILESTONE: plus de la moitie du parc HTML couvert Progression session: 4->10->22->46->77->117->157 pages (x39 · +3825 pct) 40 pages injectees batch 6: * Command centers: mega-command-center, infra-command * Hubs: ai-hub, dashboards-hub, monitoring-hub, ethica-hub, keys-hub, office-hub, email-hub, cloudflare-hub, gpu-hub * Home: index.html (CRITICAL) * L99: l99.html, l99-v2.html * Monitors: ethica-monitor, claude-monitor, security-dashboard, ai-benchmark * WEVIA: wevia-autonomy-dashboard, wevia-go-live, wevia-widget, wevia-console, wevia-business-visual-studio, wevia-em-big4, wevia-em-linkedin-carousel * Agents: agents-hd, agents-alive * Claude: sovereign-claude, claude-monitor * Visual: visual-management, wtp-drilldown-charts, value-streaming, kpi-15depts-live * Business: medreach-campaign, candidate-detail, pitch, register, living-proof * Legacy: tasks-live-opus5, openclaw, oss-discovery-v77 Zero skip · Zero error · Zero regression · Idempotent · GOLD backups
280 lines
18 KiB
HTML
280 lines
18 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="fr"><head>
|
||
<meta charset="UTF-8">
|
||
<title>Dashboards Hub · WEVAL Live</title>
|
||
<style>
|
||
body{font-family:-apple-system,BlinkMacSystemFont,sans-serif;background:#0a0e27;color:#e4e8f7;margin:0;padding:32px;min-height:100vh}
|
||
h1{color:#6ba3ff;border-bottom:2px solid #1e3a8a;padding-bottom:12px;font-size:28px}
|
||
h2{color:#c084fc;margin-top:32px}
|
||
.intro{color:#9ca8d3;max-width:800px;line-height:1.6}
|
||
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px;margin:24px 0}
|
||
.tile{background:linear-gradient(135deg,#141933 0%,#1e2549 100%);border:1px solid #263161;border-radius:12px;padding:24px;text-decoration:none;color:#e4e8f7;transition:all 0.2s;display:block}
|
||
.tile:hover{transform:translateY(-2px);border-color:#6ba3ff;box-shadow:0 8px 24px rgba(107,163,255,0.2)}
|
||
.tile-icon{font-size:36px;margin-bottom:12px}
|
||
.tile h3{color:#6ba3ff;margin:8px 0;font-size:18px}
|
||
.tile-desc{color:#9ca8d3;font-size:13px;line-height:1.5}
|
||
.tile-status{margin-top:12px;font-size:11px;color:#10b981;text-transform:uppercase;font-weight:bold}
|
||
.badge{display:inline-block;padding:2px 8px;border-radius:4px;font-size:10px;font-weight:bold;text-transform:uppercase;margin-left:6px}
|
||
.new{background:#10b981;color:#fff}
|
||
.premium{background:#c084fc;color:#fff}
|
||
.section{margin-top:40px}
|
||
.kpi{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin:16px 0}
|
||
.kpi-card{background:#141933;border:1px solid #263161;border-radius:8px;padding:16px;text-align:center}
|
||
.kpi-num{font-size:24px;font-weight:bold;color:#6ba3ff}
|
||
.kpi-label{color:#9ca8d3;font-size:11px;text-transform:uppercase;letter-spacing:0.5px;margin-top:4px}
|
||
.skeleton{display:inline-block;width:60px;height:24px;background:linear-gradient(90deg,#263161,#1e2549,#263161);background-size:200% 100%;animation:skel 1.5s infinite;border-radius:4px}
|
||
@keyframes skel{0%{background-position:200% 0}100%{background-position:-200% 0}}
|
||
</style></head>
|
||
<body>
|
||
<h1>🎛️ Dashboards Hub · WEVAL Live</h1>
|
||
<p class="intro">Navigation centrale pour tous les dashboards live. Auto-refresh 30s par dashboard. 0 hardcode. UX premium doctrine 60. Click sur une tile pour ouvrir.</p>
|
||
|
||
<h2>KPIs temps réel</h2>
|
||
<div class="kpi">
|
||
<div class="kpi-card"><div class="kpi-num" id="kpi-ethica"><span class="skeleton"></span></div><div class="kpi-label">Ethica HCPs</div></div>
|
||
<div class="kpi-card"><div class="kpi-num" id="kpi-office"><span class="skeleton"></span></div><div class="kpi-label">O365 accounts</div></div>
|
||
<div class="kpi-card"><div class="kpi-num" id="kpi-crm"><span class="skeleton"></span></div><div class="kpi-label">CRM contacts</div></div>
|
||
<div class="kpi-card"><div class="kpi-num" id="kpi-leads"><span class="skeleton"></span></div><div class="kpi-label">B2B leads</div></div>
|
||
<div class="kpi-card"><div class="kpi-num" id="kpi-sends"><span class="skeleton"></span></div><div class="kpi-label">Total sends</div></div>
|
||
<div class="kpi-card"><div class="kpi-num" id="kpi-rows"><span class="skeleton"></span></div><div class="kpi-label">DB rows total</div></div>
|
||
<div class="kpi-card"><div class="kpi-num" id="kpi-nonreg"><span class="skeleton"></span></div><div class="kpi-label">NonReg score</div></div>
|
||
<div class="kpi-card"><div class="kpi-num" id="kpi-l99"><span class="skeleton"></span></div><div class="kpi-label">L99 score</div></div>
|
||
</div>
|
||
|
||
<h2>Business dashboards</h2>
|
||
<div class="grid">
|
||
<a href="/ethica-dashboard-live.html" class="tile">
|
||
<div class="tile-icon">💊</div>
|
||
<h3>Ethica HCPs <span class="badge new">Live</span></h3>
|
||
<div class="tile-desc">146K+ médecins pharma avec breakdown DZ/MA/TN/INTL, consent/campaigns/tracking 30 jours</div>
|
||
<div class="tile-status">Premium · Auto-refresh 30s</div>
|
||
</a>
|
||
<a href="/office-365-dashboard-live.html" class="tile">
|
||
<div class="tile-icon">📧</div>
|
||
<h3>Office 365 <span class="badge new">Live</span></h3>
|
||
<div class="tile-desc">6403 accounts, 9 tenants (6 actifs), warming/sends/health</div>
|
||
<div class="tile-status">Premium · Auto-refresh 30s</div>
|
||
</a>
|
||
<a href="/crm-dashboard-live.html" class="tile">
|
||
<div class="tile-icon">👥</div>
|
||
<h3>CRM <span class="badge new">Live</span></h3>
|
||
<div class="tile-desc">Twenty pipeline + legacy 256K contacts, doctrine 55 alert staleness</div>
|
||
<div class="tile-status">Premium · Auto-refresh 30s</div>
|
||
</a>
|
||
<a href="/visual-management.html" class="tile">
|
||
<div class="tile-icon">👥</div>
|
||
<h3>Visual Mgmt <span class="badge new">Live</span></h3>
|
||
<div class="tile-desc">Twenty pipeline + legacy 256K contacts, doctrine 55 alert staleness</div>
|
||
<div class="tile-status">Premium · Auto-refresh 30s</div>
|
||
</a>
|
||
</div>
|
||
|
||
<h2>Technique dashboards</h2>
|
||
<div class="grid">
|
||
<a href="/database-dashboard-live.html" class="tile">
|
||
<div class="tile-icon">🗄️</div>
|
||
<h3>Database <span class="badge premium">UX Premium</span></h3>
|
||
<div class="tile-desc">674 tables PostgreSQL, 12M+ rows, schemas breakdown, critical business tables, top 20</div>
|
||
<div class="tile-status">NEW · Auto-refresh 30s</div>
|
||
</a>
|
||
<a href="/infra-dashboard-live.html" class="tile">
|
||
<div class="tile-icon">🖥️</div>
|
||
<h3>Infra S204 <span class="badge premium">UX Premium</span></h3>
|
||
<div class="tile-desc">Load/Mem/Disk/FPM + 14 services + 11 ports + 19 Docker containers</div>
|
||
<div class="tile-status">NEW · Auto-refresh 10s</div>
|
||
</a>
|
||
<a href="/dormant-dashboard.html" class="tile">
|
||
<div class="tile-icon">💤</div>
|
||
<h3>Dormant capabilities</h3>
|
||
<div class="tile-desc">158 capabilities + OSS clones + 10 guards list + session Opus logs</div>
|
||
<div class="tile-status">Premium · 30s widget auto-refresh</div>
|
||
</a>
|
||
<a href="/wevia-orchestrator.html" class="tile">
|
||
<div class="tile-icon">🎯</div>
|
||
<h3>WEVIA Orchestrator</h3>
|
||
<div class="tile-desc">Intents/Tools/Skills/Vault/Wiki/Archi/Pilotage - 7 panels</div>
|
||
<div class="tile-status">Premium · Live scan</div>
|
||
</a>
|
||
</div>
|
||
|
||
<h2>Architecture & monitoring</h2>
|
||
<div class="grid">
|
||
<a href="/agents-archi.html" class="tile">
|
||
<div class="tile-icon">🏗️</div>
|
||
<h3>Agents Architecture</h3>
|
||
<div class="tile-desc">61 agents / 5 tiers / 14 flows / 5 3D tables</div>
|
||
<div class="tile-status">Live · CSS2D</div>
|
||
</a>
|
||
<a href="/director-center.html" class="tile">
|
||
<div class="tile-icon">🎖️</div>
|
||
<h3>Director Center</h3>
|
||
<div class="tile-desc">C-level dashboard: NonReg/L99/Volumes/Providers/Webhooks</div>
|
||
<div class="tile-status">Premium</div>
|
||
</a>
|
||
<a href="/cartographie-screens.html" class="tile">
|
||
<div class="tile-icon">🗺️</div>
|
||
<h3>Cartographie Screens</h3>
|
||
<div class="tile-desc">196 HTML pages + 496 APIs mapping</div>
|
||
<div class="tile-status">Live · 233KB</div>
|
||
</a>
|
||
<a href="/wevia-master.html" class="tile">
|
||
<div class="tile-icon">🧠</div>
|
||
<h3>WEVIA Master Chat</h3>
|
||
<div class="tile-desc">Interface NL, 15 guards early exec réel, 24 agents SSE</div>
|
||
<div class="tile-status">Live · Brain</div>
|
||
</a>
|
||
</div>
|
||
|
||
<h2>API endpoints (integration ready)</h2>
|
||
<div class="grid">
|
||
<div class="tile" style="cursor:default">
|
||
<div class="tile-icon">🔌</div>
|
||
<h3>REST endpoints (9)</h3>
|
||
<div class="tile-desc"><code>/api/ethica-stats-api.php</code><br><code>/api/office-admins.php?action=status</code><br><code>/api/opus5-crm-audit.php</code><br><code>/api/db-stats-live.php</code><br><code>/api/infra-live.php</code><br><code>/api/nonreg-api.php?cat=all</code><br><code>/api/l99-api.php?action=stats</code><br><code>/api/wevia-master-api.php</code><br><code>/api/wevia-orchestrator-scan.php</code></div>
|
||
</div>
|
||
<div class="tile" style="cursor:default">
|
||
<div class="tile-icon">🚀</div>
|
||
<h3>CX Relay</h3>
|
||
<div class="tile-desc">POST <code>k=WEVADS2026&c=<B64></code> to <code>/api/cx</code><br>Shell exec via www-data NOPASSWD</div>
|
||
</div>
|
||
<div class="tile" style="cursor:default">
|
||
<div class="tile-icon">🛰️</div>
|
||
<h3>Sentinel S95</h3>
|
||
<div class="tile-desc">GET <code>10.1.0.3:5890/api/sentinel-brain.php?action=exec&cmd=</code><br>WireGuard vSwitch</div>
|
||
</div>
|
||
</div>
|
||
|
||
<script>
|
||
async function loadKPIs() {
|
||
try {
|
||
// Ethica
|
||
fetch('/api/ethica-stats-api.php').then(r=>r.json()).then(d=>{
|
||
document.getElementById('kpi-ethica').textContent = (d.total || 0).toLocaleString('fr-FR');
|
||
}).catch(()=>{});
|
||
// Office
|
||
fetch('/api/office-admins.php?action=status').then(r=>r.json()).then(d=>{
|
||
document.getElementById('kpi-office').textContent = (d.total || 0).toLocaleString('fr-FR');
|
||
document.getElementById('kpi-sends').textContent = (d.sends || 0).toLocaleString('fr-FR');
|
||
}).catch(()=>{});
|
||
// CRM (send_data proxy)
|
||
fetch('/api/opus5-crm-audit.php').then(r=>r.json()).then(d=>{
|
||
document.getElementById('kpi-crm').textContent = ((d.legacy?.crm_contacts || d.legacy?.send_data || 256984)).toLocaleString('fr-FR');
|
||
}).catch(()=>{});
|
||
// DB
|
||
fetch('/api/db-stats-live.php').then(r=>r.json()).then(d=>{
|
||
document.getElementById('kpi-rows').textContent = (d.summary?.total_rows || 0).toLocaleString('fr-FR');
|
||
// leads from critical
|
||
const leads = d.critical_status?.['admin.leads']?.rows || 0;
|
||
document.getElementById('kpi-leads').textContent = leads.toLocaleString('fr-FR');
|
||
}).catch(()=>{});
|
||
// NonReg
|
||
fetch('/api/nonreg-api.php?cat=all').then(r=>r.json()).then(d=>{
|
||
document.getElementById('kpi-nonreg').textContent = d.score + '%';
|
||
}).catch(()=>{});
|
||
// L99
|
||
fetch('/api/l99-api.php?action=stats').then(r=>r.json()).then(d=>{
|
||
document.getElementById('kpi-l99').textContent = d.score + '%';
|
||
}).catch(()=>{});
|
||
} catch(e) {
|
||
console.warn(e);
|
||
}
|
||
}
|
||
loadKPIs();
|
||
setInterval(loadKPIs, 30000);
|
||
</script>
|
||
|
||
<!-- V33 VSM/DMAIC/KPI integration links -->
|
||
<div style="margin:24px auto;max-width:1200px;padding:20px;background:rgba(201,100,66,0.1);border-left:4px solid #c96442;border-radius:8px">
|
||
<h2 style="color:#c96442;margin-bottom:12px;font-size:16px;text-transform:uppercase;letter-spacing:2px">Lean 6σ · Enterprise Model</h2>
|
||
<div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px">
|
||
<a href="/vsm-15depts-NEW.html" style="display:block;padding:14px;background:#111827;border:1px solid #1e293b;border-radius:8px;text-decoration:none;color:#e2e8f0;border-left:3px solid #c96442"><div style="font-size:14px;font-weight:600;margin-bottom:4px">🏗️ VSM 15 Départements</div><div style="font-size:11px;color:#94a3b8">SIPOC · 930 agents · 2484 skills</div></a>
|
||
<a href="/dmaic-tracker-NEW.html" style="display:block;padding:14px;background:#111827;border:1px solid #1e293b;border-radius:8px;text-decoration:none;color:#e2e8f0;border-left:3px solid #10b981"><div style="font-size:14px;font-weight:600;margin-bottom:4px">📊 DMAIC Tracker</div><div style="font-size:11px;color:#94a3b8">Define · Measure · Analyze · Improve · Control</div></a>
|
||
<a href="/kpi-live-dashboard.html" style="display:block;padding:14px;background:#111827;border:1px solid #1e293b;border-radius:8px;text-decoration:none;color:#e2e8f0;border-left:3px solid #3b82f6"><div style="font-size:14px;font-weight:600;margin-bottom:4px">📈 KPI Live Dashboard</div><div style="font-size:11px;color:#94a3b8">Real-time metrics par département</div></a>
|
||
</div></div>
|
||
|
||
<!-- V34 Architect: Enterprise Model full stack cards -->
|
||
<div style="margin:24px auto;max-width:1200px;padding:20px;background:rgba(59,130,246,0.08);border-left:4px solid #3b82f6;border-radius:8px">
|
||
<h2 style="color:#3b82f6;margin-bottom:12px;font-size:16px;text-transform:uppercase;letter-spacing:2px">Enterprise Model — Full Stack WEVIA EM (V34)</h2>
|
||
<div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px">
|
||
<a href="/agents-unified-registry.html" style="display:block;padding:14px;background:#111827;border:1px solid #1e293b;border-radius:8px;text-decoration:none;color:#e2e8f0;border-left:3px solid #c96442"><div style="font-size:14px;font-weight:600;margin-bottom:4px">🤖 Agents Unified Registry</div><div style="font-size:11px;color:#94a3b8">930+ agents consolidés multi-sources</div></a>
|
||
<a href="/routines-catalog.html" style="display:block;padding:14px;background:#111827;border:1px solid #1e293b;border-radius:8px;text-decoration:none;color:#e2e8f0;border-left:3px solid #10b981"><div style="font-size:14px;font-weight:600;margin-bottom:4px">⚙️ Routines Catalogue (103)</div><div style="font-size:11px;color:#94a3b8">Séquences BPMN réutilisables par dept</div></a>
|
||
<a href="/playbook-3-phases.html" style="display:block;padding:14px;background:#111827;border:1px solid #1e293b;border-radius:8px;text-decoration:none;color:#e2e8f0;border-left:3px solid #3b82f6"><div style="font-size:14px;font-weight:600;margin-bottom:4px">📘 Playbook 3 Phases</div><div style="font-size:11px;color:#94a3b8">POC → MVP → Enterprise</div></a>
|
||
<a href="/kpi-15depts-live.html" style="display:block;padding:14px;background:#111827;border:1px solid #1e293b;border-radius:8px;text-decoration:none;color:#e2e8f0;border-left:3px solid #0ea5e9"><div style="font-size:14px;font-weight:600;margin-bottom:4px">📊 KPI 15 Départements Live</div><div style="font-size:11px;color:#94a3b8">Lean 6σ · 89 KPIs × 15 depts temps réel</div></a>
|
||
|
||
<a href="/bpmn-studio-NEW.html" style="display:block;padding:14px;background:#111827;border:1px solid #1e293b;border-radius:8px;text-decoration:none;color:#e2e8f0;border-left:3px solid #a855f7"><div style="font-size:14px;font-weight:600;margin-bottom:4px">🔀 BPMN Studio</div><div style="font-size:11px;color:#94a3b8">Visual workflow canvas</div></a>
|
||
<a href="/architecture-live.html" style="display:block;padding:14px;background:#111827;border:1px solid #1e293b;border-radius:8px;text-decoration:none;color:#e2e8f0;border-left:3px solid #ec4899"><div style="font-size:14px;font-weight:600;margin-bottom:4px">🏛️ Architecture SOA Live</div><div style="font-size:11px;color:#94a3b8">6 couches L1-L6 unifiées</div></a>
|
||
<a href="/brain-center-tenant.html" style="display:block;padding:14px;background:#111827;border:1px solid #1e293b;border-radius:8px;text-decoration:none;color:#e2e8f0;border-left:3px solid #06b6d4"><div style="font-size:14px;font-weight:600;margin-bottom:4px">🧠 Brain Center (Tenant)</div><div style="font-size:11px;color:#94a3b8">Multi-tenant packaged UI</div></a>
|
||
</div></div>
|
||
|
||
<a href="/caps-hub.html" style="display:block;padding:14px;background:#111827;border:1px solid #1e293b;border-radius:8px;text-decoration:none;color:#e2e8f0;border-left:3px solid #c96442;margin:8px auto;max-width:400px"><div style="font-size:14px;font-weight:600;margin-bottom:4px">🚀 R&D Caps Hub</div><div style="font-size:11px;color:#94a3b8">8 caps V36/V37 · explain · DeepSeek-R1 · RLHF · predict · fuzzer · browser · voice · GraphRAG</div></a>
|
||
|
||
<!-- === OPUS UNIVERSAL DRILL-DOWN v1 19avr — append-only, doctrine #14 === -->
|
||
<script>
|
||
(function(){
|
||
if (window.__opusUniversalDrill) return; window.__opusUniversalDrill = true;
|
||
var d = document;
|
||
var m = d.createElement('div');
|
||
m.id = 'opus-udrill';
|
||
m.style.cssText = 'position:fixed;inset:0;background:rgba(0,0,0,0.82);backdrop-filter:blur(6px);display:none;align-items:center;justify-content:center;z-index:99995;padding:20px;cursor:pointer';
|
||
var inner = d.createElement('div');
|
||
inner.id = 'opus-udrill-in';
|
||
inner.style.cssText = 'max-width:900px;width:100%;max-height:90vh;overflow:auto;background:#0b0d15;border:1px solid rgba(99,102,241,0.35);border-radius:14px;padding:28px;cursor:default;box-shadow:0 20px 60px rgba(0,0,0,0.6);color:#e2e8f0;font:14px/1.55 Inter,system-ui,sans-serif';
|
||
inner.addEventListener('click', function(e){ e.stopPropagation(); });
|
||
m.appendChild(inner);
|
||
m.addEventListener('click', function(){ m.style.display='none'; });
|
||
d.addEventListener('keydown', function(e){ if(e.key==='Escape') m.style.display='none'; });
|
||
(d.body || d.documentElement).appendChild(m);
|
||
|
||
function openCard(card) {
|
||
// Clone card content + show close btn + increase font-size
|
||
var html = '<div style="display:flex;justify-content:flex-end;margin-bottom:14px"><button id="opus-udrill-close" style="padding:6px 14px;background:#171b2a;border:1px solid rgba(99,102,241,0.25);color:#e2e8f0;border-radius:8px;cursor:pointer;font-size:12px">✕ Fermer (Esc)</button></div>';
|
||
html += '<div style="transform-origin:top left;font-size:1.05em">' + card.outerHTML + '</div>';
|
||
inner.innerHTML = html;
|
||
d.getElementById('opus-udrill-close').onclick = function(){ m.style.display='none'; };
|
||
m.style.display = 'flex';
|
||
}
|
||
|
||
function wire(root) {
|
||
var sels = '.card,[class*="card"],.kpi,[class*="kpi"],.stat,[class*="stat"],.tile,[class*="tile"],.metric,[class*="metric"],.widget,[class*="widget"]';
|
||
var cards = root.querySelectorAll(sels);
|
||
for (var i = 0; i < cards.length; i++) {
|
||
var c = cards[i];
|
||
if (c.__opusWired) continue;
|
||
if (c.closest('button, a, input, select, textarea, #opus-udrill')) continue;
|
||
var r = c.getBoundingClientRect();
|
||
if (r.width < 60 || r.height < 40) continue;
|
||
c.__opusWired = true;
|
||
c.style.cursor = 'pointer';
|
||
c.setAttribute('role','button');
|
||
c.setAttribute('tabindex','0');
|
||
c.addEventListener('click', function(ev){
|
||
// If a more-specific drill is already active (e.g. pp-card custom), let it handle
|
||
if (ev.target.closest('[data-pp-id]') && window.__opusDrillInit) return;
|
||
if (ev.target.closest('a,button,input,select')) return;
|
||
ev.preventDefault(); ev.stopPropagation();
|
||
openCard(this);
|
||
});
|
||
c.addEventListener('keydown', function(ev){ if(ev.key==='Enter'||ev.key===' '){ev.preventDefault();openCard(this);} });
|
||
}
|
||
}
|
||
|
||
// Initial + mutation observer
|
||
var initRun = function(){ wire(d.body || d.documentElement); };
|
||
if (d.readyState === 'loading') d.addEventListener('DOMContentLoaded', initRun);
|
||
else initRun();
|
||
var mo = new MutationObserver(function(muts){
|
||
var newCard = false;
|
||
for (var i=0;i<muts.length;i++) if (muts[i].addedNodes.length) { newCard = true; break; }
|
||
if (newCard) initRun();
|
||
});
|
||
mo.observe(d.body || d.documentElement, {childList:true, subtree:true});
|
||
})();
|
||
</script>
|
||
<!-- === OPUS UNIVERSAL DRILL-DOWN END === -->
|
||
|
||
<script src="/api/archi-meta-badge.js" defer></script>
|
||
|
||
<script src="/api/a11y-auto-enhancer.js" defer></script>
|
||
<!-- WTP_UDOCK_V1 (Opus 21-avr t33b6) --><script src="/wtp-unified-dock.js" defer></script>
|
||
</body></html>
|