Files
html/blade-hub.html
Opus Wire b578d4fb30
Some checks failed
WEVAL NonReg / nonreg (push) Has been cancelled
feat(wtp-udock-v1): BATCH FINAL - 120 pages (273/294 = 92.9% COVERAGE)
MILESTONE EPIC: plus de 92 pct du parc HTML couvert avec nav unifie

Progression session tour 29-34:
  Avant   :   4 / 294 (1.4%)
  Tour 29 :  10 / 294 (3.4%)
  Tour 30 :  22 / 294 (7.5%)
  Tour 31 :  46 / 294 (15.6%)
  Tour 32 :  77 / 294 (26.2%)
  Tour 33 : 153 / 294 (52.0%)
  Tour 34 : 273 / 294 (92.9%) ← 120 pages batch final

Categories couvertes batch 7 final (120):
* Hubs: agents-hub, agents-unified-registry, vsm-hub, qa-hub, knowledge-hub, wevia-hub, wevads-hub, blade-hub, anthropic-hub, deepseek-hub, huggingface-hub, google-hub, namecheap-hub, cyber-monitor, universal-integration-hub, caps-hub, office-admins, security-hub
* Logins: arsenal-login, ethica-login, weval-login, wtp-login, office-login
* Dashboards: crm-pipeline-live, lean6sigma-dashboard, infra-dashboard-live, crm-dashboard-live, database-dashboard-live, office-365-dashboard-live, ethica-dashboard-live, em-dashboard, orphans-dashboard, dormant-dashboard-v2
* SSO/Security: sso-monitor, security-hub
* Agents: agents-fleet, agents-unified-registry, agents-hub, ia-sovereign-registry
* Blade: blade-actions, blade-center, blade-install
* BPMN: bpmn-studio-NEW, bpmn-studio-live
* LinkedIn: linkedin-automation-v96, linkedin-control-v97
* Ethica: ethica-chatbot, ethica-hcp-manager
* OpenClaw: claw-chat, claw-code
* Business: case-studies, booking, pricing, wevia-vs-opus, golive, go-100pct, pitch variants
* Autres 60+: 404, avatar-picker, cgu, nonreg-old/v2, solution-finder, mission-billing, paperclip, value-stream, value-chain, weval-data-hub, decision-gmail-o365, wevia-evolution, ops-screens-live, dmaic-workbench, dmaic-tracker, owner-actions-tracker, etc.

SKIP (19 chattr+i): cartographie-screens, vsm-pipelines, wevia-meeting-rooms, l99-saas, all-ia-hub (has v130-xnav), all-screens-live (no </body>), ethica-drill, ethica-sms, office-workflow, marketplace, droid-terminal, googlecba*, +autres protected

Zero ecrasement · Zero regression · Idempotent · Full GOLD backup · Zero dormant
2026-04-21 13:24:21 +02:00

131 lines
11 KiB
HTML

<!DOCTYPE html><html lang="fr"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Blade Hub — WEVAL</title>
<style>
*{margin:0;padding:0;box-sizing:border-box}body{background:#0a0e1a;color:#e2e8f0;font-family:'Segoe UI',system-ui,sans-serif;min-height:100vh}
.top{background:linear-gradient(135deg,#0f172a,#1a1040,#1e293b);padding:32px 40px;border-bottom:1px solid rgba(99,102,241,.2)}
.top h1{font-size:32px;font-weight:800;color:#fff}.top h1 span{background:linear-gradient(135deg,#818cf8,#6366f1);-webkit-background-clip:text;-webkit-text-fill-color:transparent}
.top p{color:#94a3b8;margin-top:6px;font-size:15px}
.nav{display:flex;gap:10px;margin-top:16px;flex-wrap:wrap}.nav a{color:#a5b4fc;text-decoration:none;padding:6px 16px;border:1px solid rgba(99,102,241,.3);border-radius:20px;font-size:13px;transition:.2s}.nav a:hover{background:rgba(99,102,241,.15);color:#fff}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px;padding:24px 40px}
.card{background:rgba(99,102,241,.06);border:1px solid rgba(99,102,241,.15);border-radius:14px;padding:18px;text-decoration:none;display:block;transition:.2s}.card:hover{border-color:#6366f1;transform:translateY(-2px)}
.card h3{font-size:16px;font-weight:700;color:#818cf8;margin-bottom:6px}.card p{font-size:13px;color:#94a3b8}
.badge{display:inline-block;margin-top:8px;font-size:11px;padding:3px 10px;border-radius:8px}
.int{background:rgba(16,185,129,.15);color:#10b981}.ext{background:rgba(99,102,241,.15);color:#818cf8}
.section{padding:24px 40px}.section h2{font-size:20px;font-weight:700;margin-bottom:16px}
</style></head><body>
<!-- MEGA-NAV -->
<div style="background:rgba(99,102,241,.04);border-bottom:1px solid rgba(99,102,241,.1);padding:8px 40px;display:flex;gap:8px;flex-wrap:wrap;align-items:center">
<span style="color:#64748b;font-size:11px;font-weight:600;letter-spacing:1px">HUBS</span>
<a href="/wevia-hub.html" style="color:#10b981;text-decoration:none;font-size:12px;padding:3px 10px;border:1px solid rgba(16,185,129,.2);border-radius:12px">🧠 WEVIA</a>
<a href="/ai-hub.html" style="color:#818cf8;text-decoration:none;font-size:12px;padding:3px 10px;border:1px solid rgba(99,102,241,.2);border-radius:12px">🤖 AI</a>
<a href="/agents-hub.html" style="color:#818cf8;text-decoration:none;font-size:12px;padding:3px 10px;border:1px solid rgba(99,102,241,.2);border-radius:12px">👥 Agents</a>
<a href="/monitoring-hub.html" style="color:#818cf8;text-decoration:none;font-size:12px;padding:3px 10px;border:1px solid rgba(99,102,241,.2);border-radius:12px">📊 Monitor</a>
<a href="/email-hub.html" style="color:#818cf8;text-decoration:none;font-size:12px;padding:3px 10px;border:1px solid rgba(99,102,241,.2);border-radius:12px">📧 Email</a>
<a href="/office-hub.html" style="color:#818cf8;text-decoration:none;font-size:12px;padding:3px 10px;border:1px solid rgba(99,102,241,.2);border-radius:12px">📊 Office</a>
<a href="/ethica-hub.html" style="color:#818cf8;text-decoration:none;font-size:12px;padding:3px 10px;border:1px solid rgba(99,102,241,.2);border-radius:12px">👨‍⚕️ Ethica</a>
<a href="/wevads-hub.html" style="color:#818cf8;text-decoration:none;font-size:12px;padding:3px 10px;border:1px solid rgba(99,102,241,.2);border-radius:12px">📧 WEVADS</a>
<a href="/blade-hub.html" style="color:#818cf8;text-decoration:none;font-size:12px;padding:3px 10px;border:1px solid rgba(99,102,241,.2);border-radius:12px">⚡ Blade</a>
<a href="/security-hub.html" style="color:#818cf8;text-decoration:none;font-size:12px;padding:3px 10px;border:1px solid rgba(99,102,241,.2);border-radius:12px">🛡️ Sécu</a>
<a href="/gpu-hub.html" style="color:#818cf8;text-decoration:none;font-size:12px;padding:3px 10px;border:1px solid rgba(99,102,241,.2);border-radius:12px">⚡ GPU</a>
<a href="/keys-hub.html" style="color:#818cf8;text-decoration:none;font-size:12px;padding:3px 10px;border:1px solid rgba(99,102,241,.2);border-radius:12px">🔐 Keys</a>
<a href="/cloudflare-hub.html" style="color:#818cf8;text-decoration:none;font-size:12px;padding:3px 10px;border:1px solid rgba(99,102,241,.2);border-radius:12px">☁️ CF</a>
<a href="/google-hub.html" style="color:#818cf8;text-decoration:none;font-size:12px;padding:3px 10px;border:1px solid rgba(99,102,241,.2);border-radius:12px">🔍 Google</a>
<a href="/namecheap-hub.html" style="color:#818cf8;text-decoration:none;font-size:12px;padding:3px 10px;border:1px solid rgba(99,102,241,.2);border-radius:12px">🌐 NC</a>
<a href="/tools-hub.html" style="color:#f59e0b;text-decoration:none;font-size:12px;padding:3px 10px;border:1px solid rgba(245,158,11,.2);border-radius:12px;font-weight:700">⭐ ALL</a>
</div>
<div class="top"><h1><span>Blade Hub</span></h1><p>Sentinel Windows, tâches automatisées, PowerShell & Bash remote</p>
<div class="nav"><a href="/tools-hub.html">Tools</a><a href="/monitoring-hub.html">Monitoring</a><a href="/wevia-master.html">Master</a></div></div>
<div class="section"><h2 style="color:#10b981">🔧 OUTILS BLADE</h2></div>
<div class="grid"><a href="/blade-ai.html" class="card"><h3>⚡ Blade AI</h3><p>Dashboard Blade Sentinel, tasks, heartbeat</p><span class="badge int">INTERNE</span></a>
<a href="/blade-center.html" class="card"><h3>📊 Blade Center</h3><p>Centre de commande Blade Windows</p><span class="badge int">INTERNE</span></a>
<a href="/blade-install.html" class="card"><h3>🔧 Blade Install</h3><p>Guide installation Sentinel agent</p><span class="badge int">INTERNE</span></a>
<a href="/wevia-master.html" class="card"><h3>🧠 WEVIA Master</h3><p>Créer/exécuter tasks via chat</p><span class="badge int">INTERNE</span></a>
</div>
<div class="section"><h2 style="color:#818cf8">📊 MONITORING</h2></div>
<div class="grid"><a href="/command-center.html" class="card"><h3>📈 Command Center</h3><p>312 services monitorés</p><span class="badge int">INTERNE</span></a>
<a href="/l99-brain.html" class="card"><h3>🧪 L99 Brain</h3><p>Tests L99 + NonReg</p><span class="badge int">INTERNE</span></a>
<a href="/ops-center.html" class="card"><h3>⚙️ Ops Center</h3><p>Docker, crons, infra</p><span class="badge int">INTERNE</span></a>
</div>
<!-- CARTO_REMOVED -->
<!-- CARTO_BANNER_V1 -->
<div style="position:fixed;bottom:20px;right:20px;z-index:9999;background:linear-gradient(135deg,#141931,#2d1b5e);border:1px solid #64ffda;border-radius:12px;padding:12px 18px;box-shadow:0 4px 20px rgba(100,255,218,.3);font-family:-apple-system,Segoe UI,sans-serif;font-size:13px">
<a href="/cartographie-screens.html" style="color:#64ffda;text-decoration:none;font-weight:600;display:flex;align-items:center;gap:8px" title="Cartographie exhaustive de tous les ecrans live">
<span style="font-size:18px">&#128506;</span> Cartographie live
<span id="carto-banner-count" style="color:#8892b0;font-size:11px">3914 ecrans</span>
</a>
</div>
<script>
(function(){
fetch('/api/screens-health.php?_='+Date.now(),{cache:'no-store'}).then(r=>r.json()).then(d=>{
const c=d.counts||{}; const up=c.UP||0; const slow=c.SLOW||0; const br=c.BROKEN||0;
const el=document.getElementById('carto-banner-count');
if(el) el.innerHTML=`<span style="color:#22c55e">${up} UP</span> / <span style="color:#f59e0b">${slow} Lent</span> / <span style="color:#ef4444">${br} 5xx</span>`;
}).catch(()=>{});
})();
</script>
<!-- /CARTO_BANNER_V1 -->
<!-- === 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) {
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 (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);} });
}
}
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 t34final) --><script src="/wtp-unified-dock.js" defer></script>
</body></html>