Files
html/qa-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

127 lines
8.7 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>WEVAL — QA Hub · Quality Assurance</title>
<style>
:root{--bg:#0a0e1a;--bg2:#141931;--fg:#e2e8f0;--muted:#8892b0;--ac:#6c9ef8;--ok:#48bb78;--warn:#f6ad55;--err:#fc8181;--border:rgba(255,255,255,.08)}
body{margin:0;background:var(--bg);color:var(--fg);font-family:-apple-system,Segoe UI,sans-serif;padding:24px}
.header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;padding-bottom:16px;border-bottom:1px solid var(--border)}
.title{font-size:24px;font-weight:700;background:linear-gradient(135deg,var(--ok),var(--ac));-webkit-background-clip:text;-webkit-text-fill-color:transparent}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px;margin-bottom:20px}
.card{background:var(--bg2);border:1px solid var(--border);border-radius:10px;padding:16px}
.card h3{margin:0 0 10px;font-size:13px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px}
.stat{font-size:30px;font-weight:800;margin:6px 0}
.stat.ok{color:var(--ok)}.stat.warn{color:var(--warn)}.stat.err{color:var(--err)}
.desc{font-size:11px;color:var(--muted)}
.lnk{display:inline-block;margin:4px;padding:6px 12px;background:rgba(108,158,248,.12);color:var(--ac);border-radius:5px;text-decoration:none;font-size:11px;border:1px solid rgba(108,158,248,.3)}
.lnk:hover{background:rgba(108,158,248,.22)}
</style></head>
<body>
<div class="header">
<div><div class="title">🧪 QA Hub — Quality Assurance Central</div>
<div class="desc">L99 · NonReg · Risk · Hallucination · Lean 6σ · TOC · Zero regression</div></div>
<div id="qa-ts" style="color:var(--muted);font-size:11px">...</div>
</div>
<div class="grid">
<div class="card"><h3>🏅 L99 NonReg</h3><div class="stat ok" id="qa-l99">-/-</div><div class="desc" id="qa-l99d">Score + cycles stable</div></div>
<div class="card"><h3>📊 DPMO Sigma</h3><div class="stat ok" id="qa-dpmo">-</div><div class="desc">target: 3.4 DPMO (6σ)</div></div>
<div class="card"><h3>🧩 Intents wired</h3><div class="stat ok" id="qa-int">-</div><div class="desc">WEVIA Master orchestrator</div></div>
<div class="card"><h3>🎯 TOC Bottleneck</h3><div class="stat warn" id="qa-bn" style="font-size:16px">-</div><div class="desc">Goldratt Theory of Constraints</div></div>
<div class="card"><h3>🛡️ Risk Score</h3><div class="stat warn" id="qa-risk">-</div><div class="desc">NIST AI RMF / ISO 23894</div></div>
<div class="card"><h3>👻 Hallu NOT EVAL</h3><div class="stat err" id="qa-hal">-</div><div class="desc">TruthfulQA · HaluEval · FActScore · RAGAS</div></div>
<div class="card"><h3>📦 Action Plan</h3><div class="stat ok" id="qa-pl">-</div><div class="desc">Dynamic items WEVIA managed</div></div>
<div class="card"><h3>🚦 Services Up</h3><div class="stat ok" id="qa-svc">-</div><div class="desc">Apache/Sovereign/Qdrant/PG/Redis/Gitea</div></div>
</div>
<div class="card"><h3>🔗 Quick Access</h3>
<div style="margin-top:10px">
<a href="/wevia-training.html" class="lnk">🎓 WEVIA Training</a>
<a href="/wevia-master.html" class="lnk">🧠 WEVIA Master</a>
<a href="/weval-technology-platform.html" class="lnk">📊 WTP Dashboard</a>
<a href="/dg-command-center.html" class="lnk">🎯 DG Center</a>
<a href="/sales-hub.html" class="lnk">💼 Sales Hub V72</a>
<a href="/oss-discovery.html" class="lnk">🔍 OSS Discovery</a>
<a href="/pitch.html" class="lnk">📣 Pitch</a>
<a href="/api/nonreg-latest.json" class="lnk">🏅 L99 JSON</a>
</div></div>
<div class="card" style="margin-top:20px;background:rgba(72,187,120,.04)">
<h3>✅ QA Hub V72 — Unified quality dashboard</h3>
<div style="font-size:11px;color:var(--muted);line-height:1.6">Agrège V67 (dashboard), V70 (honest), V71 (risk+plan). Auto-refresh 20s. Zero fake · Zero regression · Lean 6σ + TOC + NIST AI RMF + ISO 23894 + Anthropic RSP.</div></div>
<script>
async function loadQA(){
try {
const [v67,v70,v71,l99] = await Promise.all([
fetch('/api/wevia-v67-dashboard-api.php?action=dashboard').then(r=>r.json()).catch(()=>null),
fetch('/api/wevia-v70-honest-tracker.php').then(r=>r.json()).catch(()=>null),
fetch('/api/wevia-v71-risk-halu-plan.php').then(r=>r.json()).catch(()=>null),
fetch('/api/nonreg-latest.json').then(r=>r.json()).catch(()=>null)
]);
if (l99) { document.getElementById('qa-l99').textContent = l99.pass+'/'+(l99.pass+l99.fail); document.getElementById('qa-l99d').textContent = l99.score+'% · '+l99.ts; }
if (v67) { document.getElementById('qa-dpmo').textContent = v67.dpmo?.sigma || '6σ'; document.getElementById('qa-int').textContent = v67.acquis?.intents?.cur || '-'; }
if (v70) { document.getElementById('qa-bn').textContent = (v70.toc?.bottleneck?.name || '-').slice(0,30); document.getElementById('qa-svc').textContent = (v70.services_up_ratio||'-')+'%'; }
if (v71) { document.getElementById('qa-risk').textContent = v71.overall_risk_score+'%'; const ne = v71.hallucination_benchmarks.filter(b=>b.weval_status.includes('NOT')).length; document.getElementById('qa-hal').textContent = ne+'/'+v71.hallucination_benchmarks.length; document.getElementById('qa-pl').textContent = v71.plan_stats.total; }
document.getElementById('qa-ts').textContent = '✓ refreshed '+new Date().toLocaleTimeString();
} catch(e) { document.getElementById('qa-ts').textContent = '❌ '+e.message; }
}
loadQA(); setInterval(loadQA, 20000);
</script>
<!-- === 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>
</body></html>