Compare commits
1 Commits
opus-sessi
...
wave-214-d
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b1a2a6490d |
@@ -3350,6 +3350,144 @@ if (typeof window.navigateTo === 'function'){
|
||||
</script>
|
||||
</section>
|
||||
|
||||
<section id="wtp-drill-resolver-wave214" data-added-by="opus-wave-214" style="margin:24px 16px;padding:24px;background:linear-gradient(135deg,#3b0764 0%,#083344 100%);border:1px solid #a855f7;border-radius:12px;font-family:system-ui,sans-serif;box-shadow:0 10px 40px rgba(168,85,247,.2)">
|
||||
<div style="display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:18px">
|
||||
<div>
|
||||
<div style="display:flex;align-items:center;gap:10px">
|
||||
<span style="font-size:22px">🧩</span>
|
||||
<h2 style="margin:0;color:#e9d5ff;font-size:20px;font-weight:700">Drill-down 7σ Fails · Resolver Catalog</h2>
|
||||
<span style="padding:3px 10px;border-radius:12px;background:linear-gradient(135deg,#a855f7,#22d3ee);color:#fff;font-size:10px;font-weight:700;letter-spacing:.6px">WAVE 214</span>
|
||||
</div>
|
||||
<p style="margin:4px 0 0 0;color:#c4b5fd;font-size:12.5px">49 dimensions à fixer vers 7σ · 310 intents Resolver · 224 wired · gap 86</p>
|
||||
</div>
|
||||
<div id="wtp-dr-status" style="padding:6px 14px;border-radius:16px;background:rgba(168,85,247,.15);color:#ddd6fe;font-size:11px;font-weight:600;border:1px solid rgba(168,85,247,.3)">LOADING</div>
|
||||
</div>
|
||||
|
||||
<!-- Two columns: 7σ fails + Resolver catalog -->
|
||||
<div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:16px">
|
||||
|
||||
<!-- 7σ Fails drill-down -->
|
||||
<div style="padding:18px;background:rgba(255,255,255,.03);border:1px solid rgba(251,146,60,.25);border-radius:10px">
|
||||
<div style="display:flex;align-items:center;gap:8px;margin-bottom:12px">
|
||||
<span style="font-size:18px">🎯</span>
|
||||
<h3 style="margin:0;color:#fed7aa;font-size:14px;font-weight:700">7σ Fails par page</h3>
|
||||
<span id="wtp-dr-7s-count" style="margin-left:auto;padding:2px 8px;border-radius:10px;background:rgba(251,146,60,.15);color:#fdba74;font-size:10px;font-weight:700">...</span>
|
||||
</div>
|
||||
<div id="wtp-dr-7s-grid" style="max-height:340px;overflow-y:auto"></div>
|
||||
</div>
|
||||
|
||||
<!-- Resolver Catalog -->
|
||||
<div style="padding:18px;background:rgba(255,255,255,.03);border:1px solid rgba(139,92,246,.25);border-radius:10px">
|
||||
<div style="display:flex;align-items:center;gap:8px;margin-bottom:12px">
|
||||
<span style="font-size:18px">🧠</span>
|
||||
<h3 style="margin:0;color:#ddd6fe;font-size:14px;font-weight:700">Resolver Catalog</h3>
|
||||
<span id="wtp-dr-res-count" style="margin-left:auto;padding:2px 8px;border-radius:10px;background:rgba(139,92,246,.15);color:#c4b5fd;font-size:10px;font-weight:700">...</span>
|
||||
</div>
|
||||
<div id="wtp-dr-res-kpi" style="display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:12px"></div>
|
||||
<div id="wtp-dr-res-domains" style="max-height:270px;overflow-y:auto"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<script>
|
||||
(function(){
|
||||
function dimChip(name, ok){
|
||||
var col = ok ? '#10b981' : '#ef4444';
|
||||
return '<span style="padding:1px 6px;border-radius:8px;background:'+col+'22;color:'+col+';font-size:9.5px;font-weight:700;font-family:monospace;margin:1px">'+name+'</span>';
|
||||
}
|
||||
function pageRow(pg){
|
||||
var fails = pg.fails || [];
|
||||
var total_dims = pg.total_dims || 0;
|
||||
var name = pg.id || pg.url || '?';
|
||||
var col = fails.length === 0 ? '#10b981' : (fails.length <= 2 ? '#fbbf24' : '#ef4444');
|
||||
var chips = fails.map(function(f){ return dimChip(f,false); }).join('');
|
||||
return '<div style="padding:8px 10px;margin-bottom:6px;background:rgba(255,255,255,.02);border-left:3px solid '+col+';border-radius:4px">'
|
||||
+'<div style="display:flex;align-items:center;justify-content:space-between;gap:8px"><div style="font-size:11.5px;color:#fed7aa;font-family:monospace;font-weight:600">'+name+'</div><div style="font-size:10px;color:'+col+';font-weight:700">'+fails.length+' fails</div></div>'
|
||||
+'<div style="margin-top:4px">'+chips+'</div>'
|
||||
+'</div>';
|
||||
}
|
||||
function kpiCard(label, value, color){
|
||||
return '<div style="padding:8px 10px;background:rgba(139,92,246,.08);border:1px solid rgba(139,92,246,.18);border-radius:6px;text-align:center">'
|
||||
+'<div style="font-size:9.5px;color:#c4b5fd;text-transform:uppercase;letter-spacing:.4px">'+label+'</div>'
|
||||
+'<div style="font-size:18px;font-weight:700;color:'+color+';margin-top:2px">'+value+'</div>'
|
||||
+'</div>';
|
||||
}
|
||||
function domainChip(name, info){
|
||||
var cnt = (typeof info === 'number') ? info : (info.count || info.intents || 0);
|
||||
return '<div style="display:flex;align-items:center;justify-content:space-between;padding:6px 10px;margin-bottom:4px;background:rgba(139,92,246,.05);border:1px solid rgba(139,92,246,.12);border-radius:6px;font-size:11px;color:#ddd6fe"><span style="font-family:monospace">'+name+'</span><span style="font-weight:700;color:#a78bfa">'+cnt+'</span></div>';
|
||||
}
|
||||
|
||||
function render(){
|
||||
// 7σ fails
|
||||
fetch('/api/seven-sigma-latest.json?cb='+Date.now())
|
||||
.then(function(r){return r.json();})
|
||||
.then(function(d){
|
||||
var pages = d.pages || [];
|
||||
var grid = document.getElementById('wtp-dr-7s-grid');
|
||||
var badge = document.getElementById('wtp-dr-7s-count');
|
||||
if (!grid) return;
|
||||
var total_fails = 0;
|
||||
var items = pages.map(function(p){
|
||||
var dims = p.dimensions || {};
|
||||
var fails = [];
|
||||
Object.keys(dims).forEach(function(k){
|
||||
var v = dims[k];
|
||||
if (v && typeof v === 'object' && (v.status === 'FAIL' || v.status === 'fail')) fails.push(k);
|
||||
});
|
||||
total_fails += fails.length;
|
||||
return {id: p.id || p.url, fails: fails, total_dims: Object.keys(dims).length};
|
||||
}).sort(function(a,b){return b.fails.length - a.fails.length;});
|
||||
if (badge) badge.textContent = total_fails+' fails / '+pages.length+' pages';
|
||||
grid.innerHTML = items.map(pageRow).join('');
|
||||
})
|
||||
.catch(function(){
|
||||
var grid = document.getElementById('wtp-dr-7s-grid');
|
||||
if (grid) grid.innerHTML = '<div style="color:#f87171;font-size:11px;padding:10px">seven-sigma unavailable</div>';
|
||||
});
|
||||
|
||||
// Resolver catalog
|
||||
fetch('/api/arena-intent-registry.json?cb='+Date.now())
|
||||
.then(function(r){return r.json();})
|
||||
.then(function(d){
|
||||
var kpi = document.getElementById('wtp-dr-res-kpi');
|
||||
var doms = document.getElementById('wtp-dr-res-domains');
|
||||
var cnt = document.getElementById('wtp-dr-res-count');
|
||||
var wired = d.wired || 0;
|
||||
var gap = d.gap || 0;
|
||||
var total = d.total_intents || (wired + gap);
|
||||
var pct = total ? Math.round(wired*100/total) : 0;
|
||||
if (cnt) cnt.textContent = wired+'/'+total+' ('+pct+'%)';
|
||||
if (kpi) {
|
||||
kpi.innerHTML = kpiCard('INTENTS', total, '#ddd6fe')
|
||||
+ kpiCard('SKILLS', d.total_skills||0, '#c4b5fd')
|
||||
+ kpiCard('WIRED', wired, '#10b981')
|
||||
+ kpiCard('GAP', gap, gap===0?'#10b981':'#fbbf24');
|
||||
}
|
||||
if (doms) {
|
||||
var domains = d.domains || {};
|
||||
var html = '<div style="font-size:10px;color:#c4b5fd;text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px">Domains · '+Object.keys(domains).length+'</div>';
|
||||
if (Array.isArray(domains)) {
|
||||
html += domains.map(function(n){return domainChip(n, 0);}).join('');
|
||||
} else {
|
||||
Object.keys(domains).forEach(function(k){ html += domainChip(k, domains[k]); });
|
||||
}
|
||||
doms.innerHTML = html;
|
||||
}
|
||||
})
|
||||
.catch(function(){
|
||||
var doms = document.getElementById('wtp-dr-res-domains');
|
||||
if (doms) doms.innerHTML = '<div style="color:#f87171;font-size:11px;padding:10px">registry unavailable</div>';
|
||||
});
|
||||
|
||||
var status = document.getElementById('wtp-dr-status');
|
||||
if (status) { status.textContent = 'LIVE'; status.style.background='rgba(16,185,129,.2)'; status.style.color='#6ee7b7'; }
|
||||
}
|
||||
render();
|
||||
setInterval(render, 180000);
|
||||
})();
|
||||
</script>
|
||||
</section>
|
||||
|
||||
<section id="wtp-visual-mgmt-wave212" data-added-by="opus-wave-212" style="margin:32px 16px 20px;padding:28px;background:linear-gradient(135deg,#164e63 0%,#1e3a8a 100%);border:1px solid #0ea5e9;border-radius:14px;font-family:system-ui,sans-serif;box-shadow:0 10px 40px rgba(14,165,233,.2)">
|
||||
<div style="display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:18px">
|
||||
<div>
|
||||
|
||||
Reference in New Issue
Block a user