Files
html/knowledge-hub.html
opus e30ddf5007
Some checks failed
WEVAL NonReg / nonreg (push) Has been cancelled
auto-sync via WEVIA git_sync_all intent 2026-04-20T13:11:38+02:00
2026-04-20 13:11:38 +02:00

131 lines
9.1 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html><html lang="fr"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<title>Knowledge Hub — WEVAL</title>
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;600;800&display=swap" rel="stylesheet">
<style>
*{margin:0;padding:0;box-sizing:border-box}body{font-family:'DM Sans',sans-serif;background:#05080f;color:#e2e8f0;min-height:100vh}
.bg{position:fixed;inset:0;background:radial-gradient(ellipse at 30% 35%,rgba(139,92,246,.06),transparent 55%);pointer-events:none}
.wrap{max-width:1100px;margin:0 auto;padding:40px 24px}h1{font-size:28px;font-weight:800;margin-bottom:8px;color:#8b5cf6}
p.sub{color:#64748b;margin-bottom:32px;font-size:14px}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px}
.card{background:rgba(15,23,42,.85);border:1px solid rgba(139,92,246,.15);border-radius:16px;padding:28px;cursor:pointer;transition:all .2s;text-decoration:none;display:block;color:#e2e8f0}
.card:hover{border-color:rgba(139,92,246,.5);transform:translateY(-2px);box-shadow:0 8px 30px rgba(0,0,0,.3)}
.card h3{font-size:16px;margin-bottom:6px}.card p{font-size:12px;color:#64748b;line-height:1.5}
.tag{display:inline-block;margin-top:12px;padding:3px 10px;border-radius:6px;font-size:10px;font-weight:700}
.t1{background:rgba(139,92,246,.12);color:#8b5cf6}.t2{background:rgba(52,211,153,.12);color:#34d399}
.t3{background:rgba(251,191,36,.12);color:#fbbf24}.t4{background:rgba(248,113,113,.12);color:#f87171}
.t5{background:rgba(34,211,238,.12);color:#22d3ee}.t6{background:rgba(167,139,250,.12);color:#a78bfa}
.nav{margin-bottom:24px;display:flex;gap:8px;flex-wrap:wrap}
.nav a{padding:5px 12px;border-radius:8px;font-size:11px;font-weight:600;text-decoration:none;background:rgba(30,41,59,.8);color:#94a3b8;border:1px solid rgba(100,116,139,.2)}
.nav a:hover,.nav a.on{color:#8b5cf6;border-color:#8b5cf6}
.stats{display:flex;gap:20px;margin-bottom:32px;flex-wrap:wrap}
.stat{background:rgba(15,23,42,.6);border:1px solid rgba(139,92,246,.1);border-radius:12px;padding:16px 24px;text-align:center}
.stat .n{font-size:28px;font-weight:800;color:#8b5cf6}.stat .l{font-size:11px;color:#64748b;margin-top:4px}
</style></head><body><div class="bg"></div><div class="wrap">
<div class="nav">
<a href="/apps.html">Apps</a><a href="/wevia-hub.html">WEVIA</a><a href="/tools-hub.html">Tools</a>
<a href="/anthropic-hub.html">Anthropic</a><a href="/deepseek-hub.html">DeepSeek</a>
<a href="/knowledge-hub.html" class="on">Knowledge</a><a href="/security-hub.html">Security</a>
</div>
<h1>&#128218; Knowledge Hub</h1>
<p class="sub">Registres, Wiki, FAQ, Intents, Benchmarks — Tout le savoir WEVIA centralisé</p>
<div class="stats">
<div class="stat"><div class="n">395</div><div class="l">PHP APIs</div></div>
<div class="stat"><div class="n">310+</div><div class="l">Intents</div></div>
<div class="stat"><div class="n">28</div><div class="l">Hubs</div></div>
<div class="stat"><div class="n">18</div><div class="l">Skills</div></div>
<div class="stat"><div class="n">14</div><div class="l">AI Providers</div></div>
</div>
<div class="grid">
<a class="card" href="/ia-registre.html"><h3>&#129302; Registre IA Souveraine</h3><p>Architecture complète IA WEVIA — providers, cascades, modèles, benchmarks</p><span class="tag t1">REGISTRE</span></a>
<a class="card" href="/intents-registry.html"><h3>&#128203; Registre Intents & Skills</h3><p>310+ intents, 18 skills world-class, auto-wire, routing, cascades</p><span class="tag t2">INTENTS</span></a>
<a class="card" href="/faq-techniques.html"><h3>&#9888; FAQ Pièges & Erreurs</h3><p>Erreurs courantes, pièges techniques, solutions documentées</p><span class="tag t4">FAQ</span></a>
<a class="card" href="/deepseek.html"><h3>&#127919; WEVIA Arena</h3><p>103 modèles, 12 catégories, benchmark live, consensus multi-IA</p><span class="tag t5">ARENA</span></a>
<a class="card" href="/wevia-master.html"><h3>&#129302; WEVIA Master</h3><p>Chat IA souverain — 73 commandes, 15/15 tier 0, 0€</p><span class="tag t6">MASTER</span></a>
<a class="card" href="/api/supervisor-state.json"><h3>&#128200; Supervisor Live</h3><p>État temps réel — L99, NonReg, Docker, Disk, Arena, Blade</p><span class="tag t3">LIVE</span></a>
<a class="card" href="/ops-center.html"><h3>&#128187; Ops Center</h3><p>Dashboard opérationnel S204 — monitoring complet</p><span class="tag t1">OPS</span></a>
<a class="card" href="/l99-saas.html"><h3>&#128202; L99 Dashboard</h3><p>957/957 tests, 6σ, screenshots, vidéos, layers</p><span class="tag t2">L99</span></a>
</div></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) {
// 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>
</body></html>