wave(220): AI Capability Gap 8+4 OSS wires + CRM filter drill-warn + 6/6 PW
Some checks failed
WEVAL NonReg / nonreg (push) Has been cancelled
Some checks failed
WEVAL NonReg / nonreg (push) Has been cancelled
This commit is contained in:
@@ -4244,6 +4244,88 @@ if (typeof window.navigateTo === 'function'){
|
||||
</script>
|
||||
</section>
|
||||
|
||||
<section id="wtp-ai-capability-wave220" data-added-by="opus-wave-220" style="margin:24px 16px;padding:22px;background:linear-gradient(135deg,#1e1b4b 0%,#064e3b 100%);border:1px solid #8b5cf6;border-radius:12px;font-family:system-ui,sans-serif;box-shadow:0 10px 40px rgba(139,92,246,.2)">
|
||||
<div style="display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:16px">
|
||||
<div>
|
||||
<div style="display:flex;align-items:center;gap:10px">
|
||||
<span style="font-size:22px">🧠</span>
|
||||
<h2 style="margin:0;color:#ddd6fe;font-size:18px;font-weight:700">AI Capability Gap · Priority Wires OSS</h2>
|
||||
<span style="padding:3px 10px;border-radius:12px;background:linear-gradient(135deg,#8b5cf6,#10b981);color:#fff;font-size:10px;font-weight:700">WAVE 220</span>
|
||||
</div>
|
||||
<p style="margin:4px 0 0 0;color:#c4b5fd;font-size:12px">8 capability gaps audit · 4 priority OSS wires · sovereign stack target</p>
|
||||
</div>
|
||||
<div id="wtp-ai-ts" style="padding:4px 10px;border-radius:10px;background:rgba(139,92,246,.15);color:#c4b5fd;font-size:11px;font-weight:600">loading...</div>
|
||||
</div>
|
||||
|
||||
<div style="display:grid;grid-template-columns:1.4fr 1fr;gap:14px">
|
||||
<!-- 8 Capability Gaps -->
|
||||
<div style="padding:14px;background:rgba(0,0,0,.3);border:1px solid rgba(139,92,246,.2);border-radius:10px">
|
||||
<div style="font-size:11px;color:#c4b5fd;text-transform:uppercase;letter-spacing:.6px;margin-bottom:10px;font-weight:700">📉 8 Capability Gaps · scored /90</div>
|
||||
<div id="wtp-ai-gaps-list" style="display:flex;flex-direction:column;gap:6px"></div>
|
||||
</div>
|
||||
<!-- 4 Priority OSS Wires -->
|
||||
<div style="padding:14px;background:rgba(0,0,0,.3);border:1px solid rgba(16,185,129,.2);border-radius:10px">
|
||||
<div style="font-size:11px;color:#6ee7b7;text-transform:uppercase;letter-spacing:.6px;margin-bottom:10px;font-weight:700">🔗 4 Priority OSS to wire</div>
|
||||
<div id="wtp-ai-wires-list" style="display:flex;flex-direction:column;gap:6px"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
(function(){
|
||||
function gapRow(key, g){
|
||||
var pri = g.priority || 'low';
|
||||
var priCol = pri==='critical'?'#ef4444':(pri==='high'?'#f97316':(pri==='medium'?'#fbbf24':'#64748b'));
|
||||
var score = g.current_score || 0;
|
||||
var pct = score * 100 / 90;
|
||||
var gapVal = g.gap || 0;
|
||||
var cand = (g.candidates || []).length;
|
||||
return '<div style="padding:8px 10px;background:rgba(255,255,255,.02);border-left:3px solid '+priCol+';border-radius:4px">'
|
||||
+'<div style="display:flex;align-items:center;justify-content:space-between;gap:6px">'
|
||||
+'<div style="display:flex;align-items:center;gap:6px"><span style="font-size:12px;color:#ddd6fe;font-weight:600;font-family:monospace">'+key+'</span>'
|
||||
+'<span style="padding:1px 6px;border-radius:8px;background:'+priCol+'22;color:'+priCol+';font-size:9px;font-weight:700;text-transform:uppercase">'+pri+'</span></div>'
|
||||
+'<span style="font-size:11px;color:#a78bfa;font-weight:700">'+score+'/90</span>'
|
||||
+'</div>'
|
||||
+'<div style="display:flex;align-items:center;gap:6px;margin-top:4px">'
|
||||
+'<div style="flex:1;height:4px;background:rgba(255,255,255,.05);border-radius:2px;overflow:hidden"><div style="width:'+pct+'%;height:100%;background:'+priCol+'"></div></div>'
|
||||
+'<span style="font-size:10px;color:#94a3b8">gap -'+gapVal+'</span>'
|
||||
+(cand>0?'<span style="font-size:10px;color:#10b981">'+cand+' OSS</span>':'<span style="font-size:10px;color:#64748b">— tools</span>')
|
||||
+'</div>'
|
||||
+'</div>';
|
||||
}
|
||||
function wireRow(w){
|
||||
return '<div style="padding:8px 10px;background:rgba(16,185,129,.05);border:1px solid rgba(16,185,129,.15);border-radius:6px">'
|
||||
+'<div style="display:flex;align-items:center;justify-content:space-between;gap:6px">'
|
||||
+'<span style="font-family:monospace;font-size:11.5px;color:#a7f3d0;font-weight:600">'+(w.tool||'?')+'</span>'
|
||||
+'<span style="font-size:10px;color:#fbbf24;font-weight:700">★'+(w.stars||0).toLocaleString()+'</span>'
|
||||
+'</div>'
|
||||
+'<div style="font-size:10px;color:#94a3b8;margin-top:2px"><b style="color:#6ee7b7">'+(w.category||'?')+'</b> · '+(w.reason||'')+'</div>'
|
||||
+'</div>';
|
||||
}
|
||||
fetch('/api/ai-gap-cache.json?cb='+Date.now())
|
||||
.then(function(r){return r.json();})
|
||||
.then(function(d){
|
||||
var ts = document.getElementById('wtp-ai-ts');
|
||||
if (ts) { ts.textContent = (d.timestamp||'').slice(0,10); ts.style.background='rgba(16,185,129,.15)'; ts.style.color='#6ee7b7'; }
|
||||
var gl = document.getElementById('wtp-ai-gaps-list');
|
||||
if (gl) {
|
||||
var gaps = d.gaps || {};
|
||||
var sorted = Object.keys(gaps).sort(function(a,b){return (gaps[a].gap||0) - (gaps[b].gap||0);}).reverse();
|
||||
gl.innerHTML = sorted.map(function(k){return gapRow(k, gaps[k]);}).join('');
|
||||
}
|
||||
var wl = document.getElementById('wtp-ai-wires-list');
|
||||
if (wl) {
|
||||
var wires = d.priority_wires || [];
|
||||
wl.innerHTML = wires.map(wireRow).join('');
|
||||
}
|
||||
})
|
||||
.catch(function(){
|
||||
var ts = document.getElementById('wtp-ai-ts');
|
||||
if (ts) { ts.textContent='err'; ts.style.background='rgba(239,68,68,.15)'; ts.style.color='#fca5a5'; }
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
</section>
|
||||
|
||||
<section id="wtp-drill-warn-wave219" data-added-by="opus-wave-219" style="margin:24px 16px;padding:22px;background:linear-gradient(135deg,#451a03 0%,#3b0764 100%);border:1px solid #fb923c;border-radius:12px;font-family:system-ui,sans-serif;box-shadow:0 10px 40px rgba(251,146,60,.18)">
|
||||
<div style="display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:16px">
|
||||
<div>
|
||||
@@ -4260,7 +4342,39 @@ if (typeof window.navigateTo === 'function'){
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:12px">
|
||||
<div id="wtp-dw-filters" style="display:flex;flex-wrap:wrap;gap:5px;margin-bottom:12px;padding:10px;background:rgba(0,0,0,.2);border:1px solid rgba(251,146,60,.15);border-radius:8px">
|
||||
<span style="font-size:10.5px;color:#fdba74;text-transform:uppercase;font-weight:700;padding:3px 6px">Filter:</span>
|
||||
<button data-wtp-dw-cat="all" onclick="window.__wtpDwFilter('all')" style="padding:3px 10px;border-radius:12px;background:rgba(251,146,60,.2);color:#fdba74;border:1px solid rgba(251,146,60,.4);font-size:10.5px;cursor:pointer;font-weight:700">ALL</button>
|
||||
<button data-wtp-dw-cat="revenue" onclick="window.__wtpDwFilter('revenue')" style="padding:3px 10px;border-radius:12px;background:rgba(16,185,129,.12);color:#6ee7b7;border:1px solid rgba(16,185,129,.3);font-size:10.5px;cursor:pointer">revenue</button>
|
||||
<button data-wtp-dw-cat="customer_success" onclick="window.__wtpDwFilter('customer_success')" style="padding:3px 10px;border-radius:12px;background:rgba(244,114,182,.12);color:#f9a8d4;border:1px solid rgba(244,114,182,.3);font-size:10.5px;cursor:pointer">customer_success</button>
|
||||
<button data-wtp-dw-cat="growth" onclick="window.__wtpDwFilter('growth')" style="padding:3px 10px;border-radius:12px;background:rgba(251,191,36,.12);color:#fde68a;border:1px solid rgba(251,191,36,.3);font-size:10.5px;cursor:pointer">growth</button>
|
||||
<button data-wtp-dw-cat="engagement" onclick="window.__wtpDwFilter('engagement')" style="padding:3px 10px;border-radius:12px;background:rgba(34,211,238,.12);color:#a5f3fc;border:1px solid rgba(34,211,238,.3);font-size:10.5px;cursor:pointer">engagement</button>
|
||||
<button data-wtp-dw-cat="predictive" onclick="window.__wtpDwFilter('predictive')" style="padding:3px 10px;border-radius:12px;background:rgba(168,85,247,.12);color:#ddd6fe;border:1px solid rgba(168,85,247,.3);font-size:10.5px;cursor:pointer">predictive</button>
|
||||
<button data-wtp-dw-cat="platform_sla" onclick="window.__wtpDwFilter('platform_sla')" style="padding:3px 10px;border-radius:12px;background:rgba(110,231,183,.12);color:#a7f3d0;border:1px solid rgba(110,231,183,.3);font-size:10.5px;cursor:pointer">platform_sla</button>
|
||||
<button data-wtp-dw-cat="productivity" onclick="window.__wtpDwFilter('productivity')" style="padding:3px 10px;border-radius:12px;background:rgba(253,186,116,.12);color:#fed7aa;border:1px solid rgba(253,186,116,.3);font-size:10.5px;cursor:pointer">productivity</button>
|
||||
</div>
|
||||
<script>
|
||||
window.__wtpDwFilter = function(cat){
|
||||
// Highlight active button
|
||||
document.querySelectorAll('[data-wtp-dw-cat]').forEach(function(btn){
|
||||
var isActive = btn.dataset.wtpDwCat === cat;
|
||||
btn.style.background = isActive ? 'rgba(251,146,60,.3)' : btn.style.background.replace(/\.3\)/g,'.12)');
|
||||
btn.style.fontWeight = isActive ? '700' : '400';
|
||||
});
|
||||
// Filter kpi rows in fix & wire lists: match category chip color or data-category
|
||||
['wtp-dw-fix-list','wtp-dw-wire-list'].forEach(function(id){
|
||||
var el = document.getElementById(id);
|
||||
if (!el) return;
|
||||
el.querySelectorAll(':scope > div').forEach(function(row){
|
||||
if (cat === 'all') { row.style.display = 'block'; return; }
|
||||
var txt = row.textContent.toLowerCase();
|
||||
var short = cat.slice(0,8).toUpperCase();
|
||||
row.style.display = txt.indexOf(short.toLowerCase()) !== -1 || txt.indexOf(cat.replace('_',' ').toLowerCase()) !== -1 ? 'block' : 'none';
|
||||
});
|
||||
});
|
||||
};
|
||||
</script>
|
||||
<div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:12px">
|
||||
<!-- WARN list (priority_fix_list) -->
|
||||
<div style="padding:14px;background:rgba(0,0,0,.3);border:1px solid rgba(251,146,60,.2);border-radius:10px">
|
||||
<div style="display:flex;align-items:center;gap:6px;margin-bottom:10px">
|
||||
|
||||
Reference in New Issue
Block a user