Files
html/ultimate-quality.html
2026-04-19 21:20:03 +02:00

66 lines
7.8 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.0"><title>WEVAL Ultimate Quality</title><link href="https://fonts.googleapis.com/css2?family=Space+Mono:wght@400;700&family=Outfit:wght@300;400;500;600;700;800&display=swap" rel="stylesheet"><style>:root{--bg:#080b12;--s:rgba(255,255,255,.03);--b:rgba(255,255,255,.06);--t:#94a3b8;--w:#f1f5f9;--a:#6366f1;--g:#22c55e;--r:#ef4444;--R:12px}*{margin:0;padding:0;box-sizing:border-box}body{font-family:"Outfit",system-ui,sans-serif;background:var(--bg);color:var(--t);font-size:14px}.wrap{max-width:900px;margin:0 auto;padding:2rem 4%}.hero{text-align:center;padding:2rem 0}h1{font-size:2rem;font-weight:800;color:var(--w)}h1 em{font-style:normal}.stats{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap;margin:1.5rem 0}.stat{background:var(--s);border:1px solid var(--b);border-radius:var(--R);padding:.8rem 1.5rem;text-align:center}.sn{font-family:"Space Mono";font-size:1.8rem;font-weight:700}.sl{font-size:.65rem;text-transform:uppercase;letter-spacing:.05em;margin-top:.2rem}.btn{display:inline-flex;align-items:center;gap:8px;background:var(--a);color:#fff;border:none;padding:14px 36px;border-radius:var(--R);font-family:inherit;font-size:1rem;font-weight:700;cursor:pointer}.btn:disabled{opacity:.5}.spin{display:none;width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top:2px solid #fff;border-radius:50%;animation:sp .8s linear infinite}.loading .spin{display:inline-block}.loading .play{display:none}@keyframes sp{to{transform:rotate(360deg)}}.out{margin-top:1.5rem;display:none}.out.show{display:block}.t{display:flex;justify-content:space-between;padding:.3rem .6rem;border-radius:6px;font-size:.8rem;margin:1px 0}.t.pass{background:rgba(34,197,94,.05)}.t.fail{background:rgba(239,68,68,.08)}.t .d{color:#64748b;font-size:.72rem;font-family:"Space Mono"}footer{text-align:center;padding:1.5rem;font-size:.75rem;color:#475569;border-top:1px solid var(--b);margin-top:2rem}footer a{color:var(--a);text-decoration:none}</style></head><body><div class="wrap"><div class="hero"><h1>WEVAL Ultimate <em id="sigma">Quality</em></h1><p style="margin-top:.5rem;font-size:.85rem">48 tests · Infra + WEVIA + S95 + Pages + Security + Ethica + External</p></div><div class="stats"><div class="stat"><div class="sn" style="color:var(--a)" id="sTotal"></div><div class="sl">Tests</div></div><div class="stat"><div class="sn" style="color:var(--g)" id="sPass"></div><div class="sl">Pass</div></div><div class="stat"><div class="sn" style="color:var(--r)" id="sFail"></div><div class="sl">Fail</div></div><div class="stat"><div class="sn" id="sSigma"></div><div class="sl">Sigma</div></div><div class="stat"><div class="sn" style="color:var(--w)" id="sTime"></div><div class="sl">ms</div></div></div><div style="text-align:center"><button class="btn" id="btn" onclick="run()"><span class="play"></span><span class="spin"></span> Lancer les tests</button></div><div class="out" id="out"></div></div><footer>© 2026 <a href="/">WEVAL</a> · <a href="/nonreg.html">NonReg 67</a> · <a href="/trust-center.html">Trust</a> · <a href="/products/workspace.html">62 Produits</a></footer><script>async function run(){var b=document.getElementById("btn"),o=document.getElementById("out");b.classList.add("loading");b.disabled=true;o.className="out show";o.innerHTML="<p style=\"text-align:center;padding:2rem\">Tests en cours...</p>";try{var r=await fetch("/api/ultimate-quality.php?k=WEVADS2026");var d=await r.json();document.getElementById("sTotal").textContent=d.total;document.getElementById("sPass").textContent=d.pass;document.getElementById("sFail").textContent=d.fail;document.getElementById("sTime").textContent=d.elapsed_ms;var sig=d.sigma==="6"?"6σ":d.pass+"/"+d.total;document.getElementById("sSigma").textContent=sig;document.getElementById("sSigma").style.color=d.fail===0?"var(--g)":"var(--r)";document.getElementById("sigma").textContent=d.fail===0?"6σ":"Quality";document.getElementById("sigma").style.color=d.fail===0?"var(--g)":"var(--r)";var h="";d.tests.forEach(function(t){var ic=t.s==="pass"?"✓":"✗";var cl=t.s==="pass"?"color:var(--g)":"color:var(--r)";h+="<div class=\"t "+t.s+"\"><span><span style=\""+cl+";margin-right:6px\">"+ic+"</span>"+t.n+"</span><span class=\"d\">"+t.d+"</span></div>"});o.innerHTML=h}catch(e){o.innerHTML="<p style=\"color:var(--r)\">Erreur: "+e.message+"</p>"}b.classList.remove("loading");b.disabled=false}</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) {
// 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 === -->
</body></html>