Some checks failed
WEVAL NonReg / nonreg (push) Has been cancelled
29 pages PRIO3 enrichies via inject-d60-direct.py:
registries: wtp-orphans-registry agents-unified-registry ia-sovereign-registry
hubs: wevia-hub vsm-hub wevads-hub weval-data-hub wevia-unified-hub tools-hub toolhub
dashboards: office-365-dashboard-live crm-pipeline-live orphans-dashboard
medreach-dashboard wevia-director-dashboard security-dashboard
wevia-memory-dashboard
monitors: sso-monitor monitoring
centers: mega-command-center trust-center
studios: bpmn-studio-live admin-saas
others: ethica-hcp-manager ops-screens-live vsm-pipelines lean-6sigma
office-admins weval-live-ops
Cumul session Opus:
- 121 pages UX doctrine 60 (92 + 29)
- 31 tags Opus (avec phase45)
- 28 doctrines vault (146-183)
Handler inject-d60-direct.py prouve robuste sur 65+ pages consecutives.
ZERO regression. ZERO ecrasement. NR 153/153 invariant.
233 lines
16 KiB
HTML
233 lines
16 KiB
HTML
<!-- DOCTRINE-60-UX-ENRICH direct-inject-20260424-142452 -->
|
|
<style id="doctrine60-ux-direct">
|
|
|
|
/* DOCTRINE-60-UX-ENRICH injected-direct */
|
|
body::before {
|
|
content: '';
|
|
position: fixed;
|
|
top: 0; left: 0; width: 100vw; height: 100vh;
|
|
background: radial-gradient(circle at 50% 50%, rgba(100,180,255,0.08), transparent 60%);
|
|
pointer-events: none;
|
|
z-index: -1;
|
|
}
|
|
.card, .kpi, .panel, .btn {
|
|
transition: all 0.3s cubic-bezier(0.2,0,0.1,1);
|
|
}
|
|
.card:hover, .kpi:hover, .panel:hover {
|
|
box-shadow: 0 4px 20px rgba(100,180,255,0.2);
|
|
border-color: rgba(100,180,255,0.5);
|
|
}
|
|
@keyframes pulseD60 {
|
|
0%,100% { opacity: 1; transform: scale(1); }
|
|
50% { opacity: 0.7; transform: scale(1.05); }
|
|
}
|
|
.pulse, .live-indicator, .active, .online {
|
|
animation: pulseD60 3s ease-in-out infinite;
|
|
}
|
|
.modal, .chat, .speech, .overlay {
|
|
backdrop-filter: blur(12px);
|
|
-webkit-backdrop-filter: blur(12px);
|
|
}
|
|
.enter-stagger {
|
|
animation: enterStagD60 0.5s cubic-bezier(0.2,0,0.1,1) forwards;
|
|
}
|
|
@keyframes enterStagD60 {
|
|
from { opacity: 0; transform: translateY(20px); }
|
|
to { opacity: 1; transform: translateY(0); }
|
|
}
|
|
|
|
</style>
|
|
<!-- VALUE STREAM MAPPING + PIPELINES — 2Apr2026 -->
|
|
<div id="vsm-section" style="display:none;padding:20px;background:#0a0e1a;min-height:100vh;font-family:'DM Sans',sans-serif;color:#e2e8f0">
|
|
<style>#vsm-section *{box-sizing:border-box}#vsm-section .vk{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin:16px 0}#vsm-section .vk>div{background:#111827;border:1px solid #1e293b;border-radius:10px;padding:14px;text-align:center}#vsm-section .vk .vn{font-size:24px;font-weight:700;font-family:'JetBrains Mono',monospace}#vsm-section .vk .vl{font-size:10px;color:#64748b;text-transform:uppercase;letter-spacing:1px;margin-top:4px}#vsm-section .vp{display:flex;gap:0;padding:8px 0;overflow-x:auto}#vsm-section .vs{flex:1;min-width:100px;text-align:center;position:relative;padding:8px}#vsm-section .vs::after{content:'→';position:absolute;right:-6px;top:50%;transform:translateY(-50%);color:#64748b;font-size:16px}#vsm-section .vs:last-child::after{display:none}#vsm-section .vc{background:#111827;border:1px solid #1e293b;border-radius:10px;padding:16px;margin-bottom:12px}#vsm-section .vc h4{font-size:13px;font-weight:700;margin-bottom:10px;display:flex;align-items:center;gap:8px}#vsm-section .vb{font-size:10px;background:rgba(201,100,66,.2);color:#c96442;padding:2px 8px;border-radius:99px}#vsm-section .n8g{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px}#vsm-section .n8c{background:rgba(59,130,246,.05);border:1px solid rgba(59,130,246,.2);border-radius:8px;padding:10px;font-size:11px}</style>
|
|
<div style="display:flex;justify-content:space-between;align-items:center;margin-bottom:16px">
|
|
<h2 style="margin:0;font-size:22px">🔄 Value Stream Mapping — All Pipelines</h2>
|
|
<span style="font-family:'JetBrains Mono',monospace;font-size:12px;color:#10b981">● LIVE</span>
|
|
</div>
|
|
<div class="vk" id="vsm-kpis"></div>
|
|
<div id="vsm-pipes"></div>
|
|
<h3 style="margin:24px 0 12px;font-size:16px">⚙️ n8n Automation Workflows</h3>
|
|
<div class="n8g" id="vsm-n8n"></div>
|
|
</div>
|
|
<script>
|
|
(function(){
|
|
var D=[
|
|
{n:'CEO Office',i:'👔',c:'#c96442',a:['CEO','Brain','Orch','TaskMgr','Intro'],p:['Decision','Budget','Strategy','Hiring','Review'],k:'1 brief/j'},
|
|
{n:'Prospect',i:'🎯',c:'#f59e0b',a:['Ethica','Analyst','Writer','Proposal','Contract'],p:['Leads','Qualify','Outreach','Convert','Close'],k:'1052 leads'},
|
|
{n:'Consulting',i:'🏗️',c:'#3b82f6',a:['Architect','Planner','DeerFlow','Critic','Translate','Academy','ECC36','Persona6'],p:['Analyse','Design','Propose','Deliver','Support'],k:'3 proposals'},
|
|
{n:'Dev Lab',i:'⚡',c:'#8b5cf6',a:['Executor','Debugger','Reviewer','Designer','WEDROID','Simplifier','Blueprint','DevForge'],p:['Code','Review','Test','Deploy','Monitor'],k:'12 deploy/j'},
|
|
{n:'Infra',i:'🖥️',c:'#06b6d4',a:['Watchdog','Guardian','Blade','GitMaster','Loki'],p:['Monitor','Fix','Deploy','Verify','Report'],k:'99.9% up'},
|
|
{n:'Security',i:'🔐',c:'#ef4444',a:['Security','Verifier','Nuclei'],p:['Scan','Detect','Assess','Remediate','Audit'],k:'OWASP A+'},
|
|
{n:'QA',i:'🧪',c:'#10b981',a:['QA','TestEng','Tracer','Scientist'],p:['Plan','Execute','Analyze','Report','Fix'],k:'153/153'},
|
|
{n:'Pharma',i:'💊',c:'#ec4899',a:['Explore','DocSpec','MiroFish'],p:['Scrape','Validate','Enrich','Campaign','Track'],k:'131K HCPs'},
|
|
{n:'AI Engine',i:'🧠',c:'#a855f7',a:['Groq','Cerebras','Ollama','Sovereign','ClaudeCode','OpenWebUI','Flowise'],p:['Ingest','Route','Infer','Validate','Deliver'],k:'180 models'},
|
|
{n:'MTA',i:'📧',c:'#f97316',a:['PMTA','KumoMTA','Postfix'],p:['Compose','Route','Deliver','Track','Bounce'],k:'3M contacts'},
|
|
{n:'Cognitive',i:'🎯',c:'#6366f1',a:['Analysis','Codegen','Creative','Debug','Strategy','Research','Orchestration','TokenEff','Business'],p:['Perceive','Process','Generate','Validate','Output'],k:'9 modes'},
|
|
{n:'OSS',i:'🌐',c:'#14b8a6',a:['BrowserUse','OpenClaw','Goose','AIOS','Dify','Mastra','EvoMaster','Activepieces','AEGIS','Prometheus','Flowise','OpenWebUI','CrewAI','LangChain','Scrapy','Supermemory'],p:['Discover','Evaluate','Wire','Test','Deploy'],k:'685 tools'},
|
|
{n:'SaaS',i:'📦',c:'#0ea5e9',a:['LeadForge','OutreachAI','MailWarm','ProposalAI','WhatsAppAPI','WEVIA','Manager'],p:['Build','Launch','Sell','Support','Scale'],k:'38 tools'},
|
|
{n:'Automation',i:'⏰',c:'#64748b',a:['EthicaCron','B2BCron','NonRegCron','BackupCron','OSSChain','SkillSync','L99Auto','GuardCron'],p:['Schedule','Execute','Validate','Alert','Log'],k:'30+ crons'}
|
|
];
|
|
var N=[
|
|
{n:'Ethica HCP Enrichment',t:'*/6h',nd:12,s:1,d:'Scrape→Validate→Enrich→Store'},
|
|
{n:'B2B Lead Generation',t:'*/4h',nd:8,s:1,d:'LinkedIn→Pattern→Verify→CRM'},
|
|
{n:'NonReg Watchdog',t:'6h/18h',nd:6,s:1,d:'153 tests→TG alert→HTML'},
|
|
{n:'Sovereign AI Router',t:'Webhook',nd:5,s:1,d:'Request→Provider→Infer→Cache'},
|
|
{n:'WhatsApp Campaign',t:'Manual',nd:7,s:0,d:'Template→Audience→Send→Track'},
|
|
{n:'Email Drip DZ+MA+TN',t:'*/5min',nd:9,s:1,d:'Queue→Segment→Send→Track'},
|
|
{n:'OSS Discovery Sync',t:'*/6h',nd:6,s:1,d:'GitHub→Evaluate→Wire→Alert'},
|
|
{n:'DeerFlow Research',t:'Webhook',nd:8,s:1,d:'Query→Sources→Synth→Store'},
|
|
{n:'Paperclip Agent Chain',t:'API',nd:10,s:1,d:'Trigger→Agent→Execute→Learn'},
|
|
{n:'Azure AD O365 Sync',t:'Daily',nd:5,s:1,d:'Tenants→Sync→Refresh→Report'},
|
|
{n:'Guardian Auto-Heal',t:'*/5min',nd:4,s:1,d:'Check→Detect→Restart→Alert'},
|
|
{n:'Stripe Billing',t:'Webhook',nd:6,s:0,d:'Event→Payment→Invoice→Email'},
|
|
{n:'L99 Alive Monitor',t:'*/30min',nd:7,s:1,d:'Scan→PW test→Screenshot→TG'},
|
|
{n:'Backup GOLD',t:'Daily 4am',nd:5,s:1,d:'PG dump→GOLD→S3→Verify→Clean'},
|
|
{n:'IP Warmup Pipeline',t:'Daily',nd:8,s:1,d:'Select→Ramp→Monitor→Adjust'}
|
|
];
|
|
var kpis=[{v:'150',l:'Agents',c:'#c96442'},{v:'14',l:'Pipelines',c:'#3b82f6'},{v:'15',l:'n8n Flows',c:'#8b5cf6'},{v:'685',l:'OSS Tools',c:'#14b8a6'},{v:'3M',l:'Contacts',c:'#f59e0b'},{v:'141K+',l:'HCPs',c:'#10b981'},{v:'93%',l:'L99 Score',c:'#c96442'},{v:'12',l:'SaaS',c:'#0ea5e9'}];
|
|
var el=document.getElementById;
|
|
document.getElementById('vsm-kpis').innerHTML=kpis.map(function(k){return '<div><div class="vn" style="color:'+k.c+'">'+k.v+'</div><div class="vl">'+k.l+'</div></div>'}).join('');
|
|
var ph='';D.forEach(function(d){
|
|
ph+='<div class="vc"><h4>'+d.i+' '+d.n+' <span class="vb">'+d.a.length+' agents</span> <span class="vb" style="background:rgba(16,185,129,.2);color:#10b981">'+d.k+'</span></h4>';
|
|
ph+='<div class="vp">'+d.p.map(function(s,i){return '<div class="vs"><div style="width:32px;height:32px;border-radius:8px;background:'+d.c+'22;color:'+d.c+';display:flex;align-items:center;justify-content:center;margin:0 auto 4px;font-size:12px;font-weight:700">'+(i+1)+'</div><div style="font-size:11px;font-weight:600">'+s+'</div></div>'}).join('')+'</div>';
|
|
ph+='<div style="display:flex;flex-wrap:wrap;gap:4px;margin-top:8px">'+d.a.map(function(a){return '<span style="font-size:10px;background:'+d.c+'15;color:'+d.c+';padding:2px 8px;border-radius:4px">'+a+'</span>'}).join('')+'</div></div>';
|
|
});
|
|
document.getElementById('vsm-pipes').innerHTML=ph;
|
|
document.getElementById('vsm-n8n').innerHTML=N.map(function(w){return '<div class="n8c"><div style="font-weight:700">⚙️ '+w.n+'</div><div style="color:#64748b;margin:2px 0">'+w.t+' • '+w.nd+' nodes</div><div style="color:'+(w.s?'#10b981':'#f59e0b')+';font-size:10px">'+(w.s?'● Active':'○ Ready')+'</div><div style="margin-top:4px;opacity:.7">'+w.d+'</div></div>'}).join('');
|
|
// Add VSM tab to nav
|
|
var nav=document.querySelector('.tbar')||document.querySelector('nav')||document.querySelector('[style*="position:sticky"]');
|
|
if(nav){var btn=document.createElement('div');btn.textContent='🔄 VSM';btn.style.cssText='padding:6px 14px;border-radius:6px;cursor:pointer;font-size:12px;font-weight:600;color:#c96442;background:rgba(201,100,66,.1);margin-left:8px;display:inline-block';btn.onclick=function(){var s=document.getElementById('vsm-section');s.style.display=s.style.display==='none'?'block':'none'};nav.appendChild(btn)}
|
|
else{var t=document.querySelector('.tabs,.tab-bar')||document.body.firstElementChild;if(t){var btn2=document.createElement('button');btn2.textContent='🔄 Value Stream Map';btn2.style.cssText='position:fixed;bottom:20px;right:20px;z-index:9999;padding:12px 20px;border-radius:12px;background:#c96442;color:white;border:none;cursor:pointer;font-weight:700;font-size:13px;box-shadow:0 4px 12px rgba(0,0,0,.3)';btn2.onclick=function(){var s=document.getElementById('vsm-section');s.style.display=s.style.display==='none'?'block':'none'};document.body.appendChild(btn2)}}
|
|
})();
|
|
</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 === -->
|
|
|
|
<!-- === OPUS HONEST NR/L99 OVERLAY v1 19avr - append-only doctrine #14 === -->
|
|
<script>
|
|
(function(){
|
|
if (window.__opusHonestOverlay) return; window.__opusHonestOverlay = true;
|
|
async function updateHonestValues(){
|
|
try {
|
|
const r = await fetch('/api/l99-honest.php', {cache:'no-store'});
|
|
const d = await r.json();
|
|
if (!d.ok) return;
|
|
const realNR = `${d.combined.pass}/${d.combined.total}`;
|
|
const realSigma = d.sigma;
|
|
// Find elements showing the myth values
|
|
const mythRegex = /(153\/153|304\/304|NR status 153\/153|L99 status 304\/304|NR 153\/153|L99 304\/304)/g;
|
|
// Walk text nodes
|
|
const walker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT, null);
|
|
const toReplace = [];
|
|
let node;
|
|
while (node = walker.nextNode()) {
|
|
if (node.nodeValue && mythRegex.test(node.nodeValue)) toReplace.push(node);
|
|
}
|
|
toReplace.forEach(textNode => {
|
|
const parent = textNode.parentNode;
|
|
if (!parent || parent.hasAttribute('data-opus-honest-applied')) return;
|
|
const newText = textNode.nodeValue.replace(/153\/153/g, realNR).replace(/304\/304/g, realNR);
|
|
textNode.nodeValue = newText;
|
|
parent.setAttribute('data-opus-honest-applied', '1');
|
|
});
|
|
// Add a small badge bottom-right showing honest live status
|
|
if (!document.getElementById('opus-honest-badge')) {
|
|
const b = document.createElement('div');
|
|
b.id = 'opus-honest-badge';
|
|
b.style.cssText = 'position:fixed;bottom:12px;right:12px;background:linear-gradient(90deg,#14b8a6,#a855f7);color:#05060a;padding:6px 12px;font:10px/1.3 Inter,system-ui,sans-serif;font-weight:700;border-radius:8px;z-index:99993;box-shadow:0 4px 12px rgba(0,0,0,0.3);cursor:pointer;max-width:280px';
|
|
b.title = 'Cliquer pour détails';
|
|
b.innerHTML = `✓ NR ${realNR} · ${realSigma} live`;
|
|
b.onclick = () => {
|
|
alert(`HONEST NonReg (doctrine #4):\n\nmaster: ${d.master.pass}/${d.master.total}\nopus: ${d.opus.pass}/${d.opus.total}\ncombined: ${realNR}\nsigma: ${realSigma}\n\n${d.myth_153}\n${d.myth_304}`);
|
|
};
|
|
document.body.appendChild(b);
|
|
}
|
|
} catch(e){console.error('L99-honest fetch error:', e);}
|
|
}
|
|
if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', updateHonestValues);
|
|
else updateHonestValues();
|
|
setInterval(updateHonestValues, 90000);
|
|
})();
|
|
</script>
|
|
<!-- === OPUS HONEST END === -->
|
|
<!-- WTP_UDOCK_V1 (Opus 21-avr t37-100pct) --><script src="/wtp-unified-dock.js" defer></script>
|
|
|
|
<!-- DOCTRINE-60-UX-JS --><script id="doctrine60-ux-js-direct">
|
|
|
|
// DOCTRINE-60-UX-JS staggered entrance
|
|
(function(){
|
|
if (!('IntersectionObserver' in window)) return;
|
|
const obs = new IntersectionObserver((entries) => {
|
|
entries.forEach((e, i) => {
|
|
if (e.isIntersecting) {
|
|
setTimeout(() => e.target.classList.add('enter-stagger'), i * 80);
|
|
obs.unobserve(e.target);
|
|
}
|
|
});
|
|
});
|
|
document.querySelectorAll('.card, .kpi, .panel').forEach(el => obs.observe(el));
|
|
})();
|
|
|
|
</script> |