feat(wtp-erp-command-center-v105): nouvelle section ERP Command Center 5 Pillars Unified - consolidation ERP penta-pivot visualisee - 5 cards cliquables gradient (WTP gold + All-IA pink + Arena purple + Orchestrator green + WevCode emerald) avec HTTP status live per pillar - 8 KPI agreges live (Autonomy% + Components X/Y + NonReg + Registry tools + Dashboards count + Tips count + Orphans + Pillars UP) fetched master-api chat + registry JSON + dashboards-registry + tips catalog - UX doctrine 60 glassmorphism backdrop-filter blur gradient multi-color - hover effects transform translateY + border color transition - 12.5KB ajoutes WTP 184 to 197KB - footer doctrine ERP: WTP point entree unique + referentiels uniques + zero orphelin + zero doublon + zero hardcode + UX premium + GOLD + chattr safe + Git dual-remote - cause racine user demandait KPI pilotage global + dashboards graphique consolide - 5 markers validated live publique - GOLD wtp_erp_cc preserve - chattr safe relock - zero regression HTTP 200
Some checks failed
WEVAL NonReg / nonreg (push) Has been cancelled

This commit is contained in:
opus
2026-04-21 11:18:36 +02:00
parent d9142c5a46
commit 14ecacd24e

View File

@@ -2729,6 +2729,199 @@ if (typeof window.navigateTo === 'function'){
</script>
<!-- ═══ END COGNITIVE OPUS 4.6 V94 SECTION ═══ -->
<!-- ═══ ERP COMMAND CENTER · 5 PILLARS LIVE V105 (Opus session 21-avr 2026) ═══ -->
<section id="erp-command-center-v105" style="margin:24px 18px;padding:26px 28px;background:linear-gradient(135deg,rgba(6,214,160,.08),rgba(34,211,238,.06),rgba(167,139,250,.05));border:1px solid rgba(6,214,160,.28);border-radius:18px;backdrop-filter:blur(12px);box-shadow:0 12px 40px rgba(6,78,59,.18),0 4px 12px rgba(0,0,0,.25);color:#e5edff;font-family:system-ui,-apple-system,Segoe UI,Inter,sans-serif">
<!-- Header -->
<div style="display:flex;align-items:center;gap:14px;margin-bottom:10px;flex-wrap:wrap">
<span style="font-size:32px;filter:drop-shadow(0 2px 8px rgba(6,214,160,.5))">🎯</span>
<h2 style="margin:0;font-size:24px;font-weight:700;letter-spacing:-.015em;background:linear-gradient(90deg,#6ee7b7,#67e8f9,#c4b5fd);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text">
ERP Command Center · 5 Pillars Unified
</h2>
<span style="margin-left:auto;font-size:11px;padding:5px 12px;background:rgba(6,214,160,.18);border:1px solid rgba(6,214,160,.45);border-radius:20px;color:#6ee7b7;font-weight:600;letter-spacing:.3px">
🔥 PENTA-PIVOT LIVE
</span>
</div>
<div style="color:#94a3b8;font-size:13px;margin-bottom:20px;line-height:1.5">
Point d'entrée unique ERP · 5 piliers bidirectionnellement liés · KPI live master-api · référentiels uniques · zéro orphelin
</div>
<!-- 5 Pillars grid -->
<div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin-bottom:18px">
<!-- Pillar 1: WTP -->
<a href="/weval-technology-platform.html" style="text-decoration:none;display:block;padding:16px 18px;background:linear-gradient(135deg,rgba(252,211,77,.10),rgba(0,0,0,.25));border:1px solid rgba(252,211,77,.30);border-radius:12px;transition:all .2s" onmouseover="this.style.borderColor='rgba(252,211,77,.6)';this.style.transform='translateY(-2px)'" onmouseout="this.style.borderColor='rgba(252,211,77,.3)';this.style.transform='translateY(0)'">
<div style="display:flex;align-items:center;gap:8px;margin-bottom:6px">
<span style="font-size:20px">🏠</span>
<div style="color:#fcd34d;font-size:12px;text-transform:uppercase;letter-spacing:.7px;font-weight:700">Pillar 1 · WTP</div>
</div>
<div style="color:#fff;font-size:14px;font-weight:600;margin-bottom:4px">Technology Platform</div>
<div style="color:#94a3b8;font-size:11px;line-height:1.4">Point d'entrée ERP · 17 composants · autonomie 100%</div>
<div style="color:#6ee7b7;font-size:10px;margin-top:6px;font-family:monospace" id="pillar-wtp-status">HTTP ⏳</div>
</a>
<!-- Pillar 2: All-IA Hub -->
<a href="/all-ia-hub.html" style="text-decoration:none;display:block;padding:16px 18px;background:linear-gradient(135deg,rgba(249,168,212,.10),rgba(0,0,0,.25));border:1px solid rgba(249,168,212,.30);border-radius:12px;transition:all .2s" onmouseover="this.style.borderColor='rgba(249,168,212,.6)';this.style.transform='translateY(-2px)'" onmouseout="this.style.borderColor='rgba(249,168,212,.3)';this.style.transform='translateY(0)'">
<div style="display:flex;align-items:center;gap:8px;margin-bottom:6px">
<span style="font-size:20px">🌈</span>
<div style="color:#f9a8d4;font-size:12px;text-transform:uppercase;letter-spacing:.7px;font-weight:700">Pillar 2 · All-IA</div>
</div>
<div style="color:#fff;font-size:14px;font-weight:600;margin-bottom:4px">Hub 7 Tabs</div>
<div style="color:#94a3b8;font-size:11px;line-height:1.4">Chat · Code · Arena · Capabilities · Training · Orchestrator · Dashboards</div>
<div style="color:#6ee7b7;font-size:10px;margin-top:6px;font-family:monospace" id="pillar-allia-status">HTTP ⏳</div>
</a>
<!-- Pillar 3: Arena -->
<a href="/weval-arena.html" style="text-decoration:none;display:block;padding:16px 18px;background:linear-gradient(135deg,rgba(167,139,250,.10),rgba(0,0,0,.25));border:1px solid rgba(167,139,250,.30);border-radius:12px;transition:all .2s" onmouseover="this.style.borderColor='rgba(167,139,250,.6)';this.style.transform='translateY(-2px)'" onmouseout="this.style.borderColor='rgba(167,139,250,.3)';this.style.transform='translateY(0)'">
<div style="display:flex;align-items:center;gap:8px;margin-bottom:6px">
<span style="font-size:20px">⚔️</span>
<div style="color:#a78bfa;font-size:12px;text-transform:uppercase;letter-spacing:.7px;font-weight:700">Pillar 3 · Arena</div>
</div>
<div style="color:#fff;font-size:14px;font-weight:600;margin-bottom:4px">Command Center</div>
<div style="color:#94a3b8;font-size:11px;line-height:1.4">Multi-provider benchmarks · Chat · L99 · Tools · Wiring</div>
<div style="color:#6ee7b7;font-size:10px;margin-top:6px;font-family:monospace" id="pillar-arena-status">HTTP ⏳</div>
</a>
<!-- Pillar 4: Orchestrator -->
<a href="/wevia-orchestrator.html" style="text-decoration:none;display:block;padding:16px 18px;background:linear-gradient(135deg,rgba(6,214,160,.10),rgba(0,0,0,.25));border:1px solid rgba(6,214,160,.30);border-radius:12px;transition:all .2s" onmouseover="this.style.borderColor='rgba(6,214,160,.6)';this.style.transform='translateY(-2px)'" onmouseout="this.style.borderColor='rgba(6,214,160,.3)';this.style.transform='translateY(0)'">
<div style="display:flex;align-items:center;gap:8px;margin-bottom:6px">
<span style="font-size:20px">🎛️</span>
<div style="color:#06d6a0;font-size:12px;text-transform:uppercase;letter-spacing:.7px;font-weight:700">Pillar 4 · Orch</div>
</div>
<div style="color:#fff;font-size:14px;font-weight:600;margin-bottom:4px">Orchestrator GODMODE</div>
<div style="color:#94a3b8;font-size:11px;line-height:1.4">Agent fleet · tools registry · archi 3D · director · growth</div>
<div style="color:#6ee7b7;font-size:10px;margin-top:6px;font-family:monospace" id="pillar-orch-status">HTTP ⏳</div>
</a>
<!-- Pillar 5: WevCode -->
<a href="/wevcode.html" style="text-decoration:none;display:block;padding:16px 18px;background:linear-gradient(135deg,rgba(110,231,183,.10),rgba(0,0,0,.25));border:1px solid rgba(110,231,183,.30);border-radius:12px;transition:all .2s" onmouseover="this.style.borderColor='rgba(110,231,183,.6)';this.style.transform='translateY(-2px)'" onmouseout="this.style.borderColor='rgba(110,231,183,.3)';this.style.transform='translateY(0)'">
<div style="display:flex;align-items:center;gap:8px;margin-bottom:6px">
<span style="font-size:20px">💻</span>
<div style="color:#6ee7b7;font-size:12px;text-transform:uppercase;letter-spacing:.7px;font-weight:700">Pillar 5 · WevCode</div>
</div>
<div style="color:#fff;font-size:14px;font-weight:600;margin-bottom:4px">Sovereign Coding Agent</div>
<div style="color:#94a3b8;font-size:11px;line-height:1.4">635 fns · 5231 skills · 4 modes code/analyze/plan/execute</div>
<div style="color:#6ee7b7;font-size:10px;margin-top:6px;font-family:monospace" id="pillar-wevcode-status">HTTP ⏳</div>
</a>
</div>
<!-- Aggregated KPI live bar -->
<div style="padding:14px 16px;background:rgba(0,0,0,.30);border:1px solid rgba(6,214,160,.18);border-radius:10px;margin-bottom:14px">
<div style="color:#6ee7b7;font-size:11px;text-transform:uppercase;letter-spacing:.5px;margin-bottom:10px;font-weight:600">📊 Unified KPI Live (agrégés master-api)</div>
<div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;font-size:12px;color:#cbd5e1">
<div><span style="color:#64748b">Autonomy:</span> <b id="erp-kpi-autonomy" style="color:#6ee7b7"></b></div>
<div><span style="color:#64748b">Components:</span> <b id="erp-kpi-components" style="color:#67e8f9"></b></div>
<div><span style="color:#64748b">NonReg:</span> <b id="erp-kpi-nonreg" style="color:#86efac"></b></div>
<div><span style="color:#64748b">Registry:</span> <b id="erp-kpi-registry" style="color:#fcd34d"></b></div>
<div><span style="color:#64748b">Dashboards:</span> <b id="erp-kpi-dashboards" style="color:#c4b5fd"></b></div>
<div><span style="color:#64748b">Tips:</span> <b id="erp-kpi-tips" style="color:#f9a8d4"></b></div>
<div><span style="color:#64748b">Orphans:</span> <b id="erp-kpi-orphans" style="color:#10b981"></b></div>
<div><span style="color:#64748b">Pillars HTTP:</span> <b id="erp-kpi-pillars" style="color:#fbbf24"></b></div>
</div>
</div>
<!-- Footer doctrine -->
<div style="padding:10px 14px;background:rgba(6,214,160,.06);border-left:3px solid rgba(6,214,160,.45);border-radius:6px;font-size:11px;color:#94a3b8;line-height:1.6">
<b style="color:#6ee7b7">Doctrine ERP:</b> WTP = point d'entrée unique · référentiels uniques · zéro orphelin · zéro doublon · zéro hardcode · UX premium doctrine 60 · GOLD avant modif · chattr safe · Git dual-remote sync
</div>
</section>
<script>
// ERP Command Center live fetcher
(async () => {
// 1. HTTP status per pillar
const pillars = [
['wtp', '/weval-technology-platform.html'],
['allia', '/all-ia-hub.html'],
['arena', '/weval-arena.html'],
['orch', '/wevia-orchestrator.html'],
['wevcode', '/wevcode.html'],
];
let upCount = 0;
for (const [key, url] of pillars) {
try {
const r = await fetch(url, {method: 'HEAD'});
const el = document.getElementById('pillar-' + key + '-status');
const ok = r.ok || r.status === 302;
if (el) el.textContent = 'HTTP ' + r.status + (ok ? ' ✓' : ' ⚠');
if (ok) upCount++;
} catch(e) {
const el = document.getElementById('pillar-' + key + '-status');
if (el) el.textContent = 'HTTP ❌';
}
}
const pe = document.getElementById('erp-kpi-pillars');
if (pe) pe.textContent = upCount + '/5';
// 2. Autonomy + components from master-api
try {
const r = await fetch('/api/wevia-master-api.php', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({message: 'autonomie wevia', session: 'erp-cc-' + Date.now(), history: [], attachments: []})
});
const data = await r.json();
const text = (data.response || '');
const autMatch = text.match(/~?(\d+)%/);
const compMatch = text.match(/(\d+\/\d+) \(/);
if (autMatch) document.getElementById('erp-kpi-autonomy').textContent = autMatch[1] + '%';
if (compMatch) document.getElementById('erp-kpi-components').textContent = compMatch[1];
} catch(e) {}
// 3. Registry tools count
try {
const r = await fetch('/api/wevia-tool-registry.json');
const reg = await r.json();
const cnt = (reg.tools || []).length;
document.getElementById('erp-kpi-registry').textContent = cnt + ' tools';
} catch(e) {}
// 4. Dashboards count
try {
const r = await fetch('/api/dashboards-registry.php');
const d = await r.json();
document.getElementById('erp-kpi-dashboards').textContent = d.total + ' dashboards';
} catch(e) {}
// 5. Tips catalog
try {
const r = await fetch('/api/wevia-v82-tips-catalog.php');
const d = await r.json();
document.getElementById('erp-kpi-tips').textContent = d.total_tips + ' tips';
} catch(e) {}
// 6. NonReg from multi-agent
try {
const r = await fetch('/api/wevia-master-api.php', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({message: 'multi agents', session: 'erp-nr-' + Date.now(), history: [], attachments: []})
});
const data = await r.json();
const ag = data.agents || {};
const nrMatch = (ag.nonreg || '').match(/(\d+\/\d+)/);
if (nrMatch) document.getElementById('erp-kpi-nonreg').textContent = nrMatch[1];
} catch(e) {}
// 7. Orphans count (from architecture_quality intent)
try {
const r = await fetch('/api/wevia-master-api.php', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({message: 'orphans count', session: 'erp-orph-' + Date.now(), history: [], attachments: []})
});
const data = await r.json();
const txt = data.response || '';
const m = txt.match(/"value"\s*:\s*(\d+)/);
if (m) document.getElementById('erp-kpi-orphans').textContent = m[1] + ' pages';
} catch(e) {}
})();
</script>
<!-- ═══ END ERP COMMAND CENTER V105 ═══ -->
<!-- OPUS_v932_ORPHANS_HUB_LINK -->
<a href="/orphans-hub.html" id="opus-orphans-hub-anchor" style="position:fixed;bottom:20px;left:20px;background:rgba(34,197,94,0.12);color:#22c55e;padding:6px 12px;border-radius:20px;text-decoration:none;font-size:11px;font-weight:500;border:1px solid rgba(34,197,94,0.3);z-index:100;backdrop-filter:blur(10px)" title="Orphans Hub - 7 rescued pages + hub self">Orphans Hub (8)</a>