V33 architect: gap analysis 12 gaps + VSM/DMAIC integration in hub + doctrine 77
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:
@@ -335,6 +335,17 @@ if (preg_match('/active.*powerdns.*confirmed|pdns.*go.*live.*confirmed/i', $msg)
|
||||
}
|
||||
// === END CF-BYPASS INTENTS ===
|
||||
|
||||
// === CF-BYPASS V33 — PDNS ACTIVATE PROMPT (UX guide) ===
|
||||
// Cause racine V32: utilisateur tapait "activate powerdns" sans "confirmed"
|
||||
// → orchestrator ne détectait pas pdns_activate_gated → UX cassée, pas de guide
|
||||
// V33 fix: intent guide qui répond AVANT activation avec pre-flight + mot magique
|
||||
if (preg_match('/activ.*powerdns|activ.*pdns|go.*live.*pdns|start.*pdns|enable.*pdns|finir.*pdns|finish.*pdns|phase.*1.*finish|cf-bypass.*phase.*1/i', $msg)
|
||||
&& !preg_match('/confirmed|valide|ok.*activ|go.*live.*confirmed/i', $msg)) {
|
||||
$intents[] = ['id'=>'pdns_activate_prompt','cmd'=>'curl -s --max-time 8 "http://127.0.0.1:5890/api/wevia-pdns-prompt-intent.php?msg=' . urlencode($msg) . '" 2>&1 | head -c 1800'];
|
||||
}
|
||||
// === END V33 ===
|
||||
|
||||
|
||||
// EXECUTE detected intents
|
||||
if (!empty($intents)) {
|
||||
sse(['type'=>'executor','status'=>'start','intents'=>count($intents)]);
|
||||
|
||||
32
api/��X��KKH
32
api/��X��KKH
@@ -1,32 +0,0 @@
|
||||
# PowerDNS config WEVADS CF-Bypass
|
||||
# Souverain, bind priv\u00e9 uniquement, no conflict systemd-resolved
|
||||
# GOLD: /var/backups/gold_cf_bypass_s204_20260417_180728/pdns.conf.original
|
||||
|
||||
launch=bind
|
||||
bind-config=/etc/powerdns/named.conf
|
||||
local-address=10.1.0.2
|
||||
local-port=53
|
||||
setgid=pdns
|
||||
setuid=pdns
|
||||
|
||||
# Performance
|
||||
distributor-threads=2
|
||||
receiver-threads=1
|
||||
queue-limit=1500
|
||||
|
||||
# Security: only internal AS
|
||||
allow-axfr-ips=10.0.0.0/8,172.16.0.0/12
|
||||
disable-axfr=no
|
||||
|
||||
# Logs
|
||||
loglevel=4
|
||||
log-dns-queries=no
|
||||
log-dns-details=no
|
||||
|
||||
# API disabled (on cause via bind zone files directly)
|
||||
api=no
|
||||
webserver=no
|
||||
|
||||
# Version cache
|
||||
cache-ttl=60
|
||||
query-cache-ttl=60
|
||||
@@ -182,4 +182,13 @@ async function loadKPIs() {
|
||||
loadKPIs();
|
||||
setInterval(loadKPIs, 30000);
|
||||
</script>
|
||||
|
||||
<!-- V33 VSM/DMAIC/KPI integration links -->
|
||||
<div style="margin:24px auto;max-width:1200px;padding:20px;background:rgba(201,100,66,0.1);border-left:4px solid #c96442;border-radius:8px">
|
||||
<h2 style="color:#c96442;margin-bottom:12px;font-size:16px;text-transform:uppercase;letter-spacing:2px">Lean 6σ · Enterprise Model</h2>
|
||||
<div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px">
|
||||
<a href="/vsm-15depts-NEW.html" style="display:block;padding:14px;background:#111827;border:1px solid #1e293b;border-radius:8px;text-decoration:none;color:#e2e8f0;border-left:3px solid #c96442"><div style="font-size:14px;font-weight:600;margin-bottom:4px">🏗️ VSM 15 Départements</div><div style="font-size:11px;color:#94a3b8">SIPOC · 930 agents · 2484 skills</div></a>
|
||||
<a href="/dmaic-tracker-NEW.html" style="display:block;padding:14px;background:#111827;border:1px solid #1e293b;border-radius:8px;text-decoration:none;color:#e2e8f0;border-left:3px solid #10b981"><div style="font-size:14px;font-weight:600;margin-bottom:4px">📊 DMAIC Tracker</div><div style="font-size:11px;color:#94a3b8">Define · Measure · Analyze · Improve · Control</div></a>
|
||||
<a href="/kpi-live-dashboard.html" style="display:block;padding:14px;background:#111827;border:1px solid #1e293b;border-radius:8px;text-decoration:none;color:#e2e8f0;border-left:3px solid #3b82f6"><div style="font-size:14px;font-weight:600;margin-bottom:4px">📈 KPI Live Dashboard</div><div style="font-size:11px;color:#94a3b8">Real-time metrics par département</div></a>
|
||||
</div></div>
|
||||
</body></html>
|
||||
|
||||
@@ -0,0 +1,185 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr"><head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Dashboards Hub · WEVAL Live</title>
|
||||
<style>
|
||||
body{font-family:-apple-system,BlinkMacSystemFont,sans-serif;background:#0a0e27;color:#e4e8f7;margin:0;padding:32px;min-height:100vh}
|
||||
h1{color:#6ba3ff;border-bottom:2px solid #1e3a8a;padding-bottom:12px;font-size:28px}
|
||||
h2{color:#c084fc;margin-top:32px}
|
||||
.intro{color:#9ca8d3;max-width:800px;line-height:1.6}
|
||||
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px;margin:24px 0}
|
||||
.tile{background:linear-gradient(135deg,#141933 0%,#1e2549 100%);border:1px solid #263161;border-radius:12px;padding:24px;text-decoration:none;color:#e4e8f7;transition:all 0.2s;display:block}
|
||||
.tile:hover{transform:translateY(-2px);border-color:#6ba3ff;box-shadow:0 8px 24px rgba(107,163,255,0.2)}
|
||||
.tile-icon{font-size:36px;margin-bottom:12px}
|
||||
.tile h3{color:#6ba3ff;margin:8px 0;font-size:18px}
|
||||
.tile-desc{color:#9ca8d3;font-size:13px;line-height:1.5}
|
||||
.tile-status{margin-top:12px;font-size:11px;color:#10b981;text-transform:uppercase;font-weight:bold}
|
||||
.badge{display:inline-block;padding:2px 8px;border-radius:4px;font-size:10px;font-weight:bold;text-transform:uppercase;margin-left:6px}
|
||||
.new{background:#10b981;color:#fff}
|
||||
.premium{background:#c084fc;color:#fff}
|
||||
.section{margin-top:40px}
|
||||
.kpi{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin:16px 0}
|
||||
.kpi-card{background:#141933;border:1px solid #263161;border-radius:8px;padding:16px;text-align:center}
|
||||
.kpi-num{font-size:24px;font-weight:bold;color:#6ba3ff}
|
||||
.kpi-label{color:#9ca8d3;font-size:11px;text-transform:uppercase;letter-spacing:0.5px;margin-top:4px}
|
||||
.skeleton{display:inline-block;width:60px;height:24px;background:linear-gradient(90deg,#263161,#1e2549,#263161);background-size:200% 100%;animation:skel 1.5s infinite;border-radius:4px}
|
||||
@keyframes skel{0%{background-position:200% 0}100%{background-position:-200% 0}}
|
||||
</style></head>
|
||||
<body>
|
||||
<h1>🎛️ Dashboards Hub · WEVAL Live</h1>
|
||||
<p class="intro">Navigation centrale pour tous les dashboards live. Auto-refresh 30s par dashboard. 0 hardcode. UX premium doctrine 60. Click sur une tile pour ouvrir.</p>
|
||||
|
||||
<h2>KPIs temps réel</h2>
|
||||
<div class="kpi">
|
||||
<div class="kpi-card"><div class="kpi-num" id="kpi-ethica"><span class="skeleton"></span></div><div class="kpi-label">Ethica HCPs</div></div>
|
||||
<div class="kpi-card"><div class="kpi-num" id="kpi-office"><span class="skeleton"></span></div><div class="kpi-label">O365 accounts</div></div>
|
||||
<div class="kpi-card"><div class="kpi-num" id="kpi-crm"><span class="skeleton"></span></div><div class="kpi-label">CRM contacts</div></div>
|
||||
<div class="kpi-card"><div class="kpi-num" id="kpi-leads"><span class="skeleton"></span></div><div class="kpi-label">B2B leads</div></div>
|
||||
<div class="kpi-card"><div class="kpi-num" id="kpi-sends"><span class="skeleton"></span></div><div class="kpi-label">Total sends</div></div>
|
||||
<div class="kpi-card"><div class="kpi-num" id="kpi-rows"><span class="skeleton"></span></div><div class="kpi-label">DB rows total</div></div>
|
||||
<div class="kpi-card"><div class="kpi-num" id="kpi-nonreg"><span class="skeleton"></span></div><div class="kpi-label">NonReg score</div></div>
|
||||
<div class="kpi-card"><div class="kpi-num" id="kpi-l99"><span class="skeleton"></span></div><div class="kpi-label">L99 score</div></div>
|
||||
</div>
|
||||
|
||||
<h2>Business dashboards</h2>
|
||||
<div class="grid">
|
||||
<a href="/ethica-dashboard-live.html" class="tile">
|
||||
<div class="tile-icon">💊</div>
|
||||
<h3>Ethica HCPs <span class="badge new">Live</span></h3>
|
||||
<div class="tile-desc">146K+ médecins pharma avec breakdown DZ/MA/TN/INTL, consent/campaigns/tracking 30 jours</div>
|
||||
<div class="tile-status">Premium · Auto-refresh 30s</div>
|
||||
</a>
|
||||
<a href="/office-365-dashboard-live.html" class="tile">
|
||||
<div class="tile-icon">📧</div>
|
||||
<h3>Office 365 <span class="badge new">Live</span></h3>
|
||||
<div class="tile-desc">6403 accounts, 9 tenants (6 actifs), warming/sends/health</div>
|
||||
<div class="tile-status">Premium · Auto-refresh 30s</div>
|
||||
</a>
|
||||
<a href="/crm-dashboard-live.html" class="tile">
|
||||
<div class="tile-icon">👥</div>
|
||||
<h3>CRM <span class="badge new">Live</span></h3>
|
||||
<div class="tile-desc">Twenty pipeline + legacy 256K contacts, doctrine 55 alert staleness</div>
|
||||
<div class="tile-status">Premium · Auto-refresh 30s</div>
|
||||
</a>
|
||||
<a href="/visual-management.html" class="tile">
|
||||
<div class="tile-icon">👥</div>
|
||||
<h3>Visual Mgmt <span class="badge new">Live</span></h3>
|
||||
<div class="tile-desc">Twenty pipeline + legacy 256K contacts, doctrine 55 alert staleness</div>
|
||||
<div class="tile-status">Premium · Auto-refresh 30s</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<h2>Technique dashboards</h2>
|
||||
<div class="grid">
|
||||
<a href="/database-dashboard-live.html" class="tile">
|
||||
<div class="tile-icon">🗄️</div>
|
||||
<h3>Database <span class="badge premium">UX Premium</span></h3>
|
||||
<div class="tile-desc">674 tables PostgreSQL, 12M+ rows, schemas breakdown, critical business tables, top 20</div>
|
||||
<div class="tile-status">NEW · Auto-refresh 30s</div>
|
||||
</a>
|
||||
<a href="/infra-dashboard-live.html" class="tile">
|
||||
<div class="tile-icon">🖥️</div>
|
||||
<h3>Infra S204 <span class="badge premium">UX Premium</span></h3>
|
||||
<div class="tile-desc">Load/Mem/Disk/FPM + 14 services + 11 ports + 19 Docker containers</div>
|
||||
<div class="tile-status">NEW · Auto-refresh 10s</div>
|
||||
</a>
|
||||
<a href="/dormant-dashboard.html" class="tile">
|
||||
<div class="tile-icon">💤</div>
|
||||
<h3>Dormant capabilities</h3>
|
||||
<div class="tile-desc">158 capabilities + OSS clones + 10 guards list + session Opus logs</div>
|
||||
<div class="tile-status">Premium · 30s widget auto-refresh</div>
|
||||
</a>
|
||||
<a href="/wevia-orchestrator.html" class="tile">
|
||||
<div class="tile-icon">🎯</div>
|
||||
<h3>WEVIA Orchestrator</h3>
|
||||
<div class="tile-desc">Intents/Tools/Skills/Vault/Wiki/Archi/Pilotage - 7 panels</div>
|
||||
<div class="tile-status">Premium · Live scan</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<h2>Architecture & monitoring</h2>
|
||||
<div class="grid">
|
||||
<a href="/agents-archi.html" class="tile">
|
||||
<div class="tile-icon">🏗️</div>
|
||||
<h3>Agents Architecture</h3>
|
||||
<div class="tile-desc">61 agents / 5 tiers / 14 flows / 5 3D tables</div>
|
||||
<div class="tile-status">Live · CSS2D</div>
|
||||
</a>
|
||||
<a href="/director-center.html" class="tile">
|
||||
<div class="tile-icon">🎖️</div>
|
||||
<h3>Director Center</h3>
|
||||
<div class="tile-desc">C-level dashboard: NonReg/L99/Volumes/Providers/Webhooks</div>
|
||||
<div class="tile-status">Premium</div>
|
||||
</a>
|
||||
<a href="/cartographie-screens.html" class="tile">
|
||||
<div class="tile-icon">🗺️</div>
|
||||
<h3>Cartographie Screens</h3>
|
||||
<div class="tile-desc">196 HTML pages + 496 APIs mapping</div>
|
||||
<div class="tile-status">Live · 233KB</div>
|
||||
</a>
|
||||
<a href="/wevia-master.html" class="tile">
|
||||
<div class="tile-icon">🧠</div>
|
||||
<h3>WEVIA Master Chat</h3>
|
||||
<div class="tile-desc">Interface NL, 15 guards early exec réel, 24 agents SSE</div>
|
||||
<div class="tile-status">Live · Brain</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<h2>API endpoints (integration ready)</h2>
|
||||
<div class="grid">
|
||||
<div class="tile" style="cursor:default">
|
||||
<div class="tile-icon">🔌</div>
|
||||
<h3>REST endpoints (9)</h3>
|
||||
<div class="tile-desc"><code>/api/ethica-stats-api.php</code><br><code>/api/office-admins.php?action=status</code><br><code>/api/opus5-crm-audit.php</code><br><code>/api/db-stats-live.php</code><br><code>/api/infra-live.php</code><br><code>/api/nonreg-api.php?cat=all</code><br><code>/api/l99-api.php?action=stats</code><br><code>/api/wevia-master-api.php</code><br><code>/api/wevia-orchestrator-scan.php</code></div>
|
||||
</div>
|
||||
<div class="tile" style="cursor:default">
|
||||
<div class="tile-icon">🚀</div>
|
||||
<h3>CX Relay</h3>
|
||||
<div class="tile-desc">POST <code>k=WEVADS2026&c=<B64></code> to <code>/api/cx</code><br>Shell exec via www-data NOPASSWD</div>
|
||||
</div>
|
||||
<div class="tile" style="cursor:default">
|
||||
<div class="tile-icon">🛰️</div>
|
||||
<h3>Sentinel S95</h3>
|
||||
<div class="tile-desc">GET <code>10.1.0.3:5890/api/sentinel-brain.php?action=exec&cmd=</code><br>WireGuard vSwitch</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
async function loadKPIs() {
|
||||
try {
|
||||
// Ethica
|
||||
fetch('/api/ethica-stats-api.php').then(r=>r.json()).then(d=>{
|
||||
document.getElementById('kpi-ethica').textContent = (d.total || 0).toLocaleString('fr-FR');
|
||||
}).catch(()=>{});
|
||||
// Office
|
||||
fetch('/api/office-admins.php?action=status').then(r=>r.json()).then(d=>{
|
||||
document.getElementById('kpi-office').textContent = (d.total || 0).toLocaleString('fr-FR');
|
||||
document.getElementById('kpi-sends').textContent = (d.sends || 0).toLocaleString('fr-FR');
|
||||
}).catch(()=>{});
|
||||
// CRM (send_data proxy)
|
||||
fetch('/api/opus5-crm-audit.php').then(r=>r.json()).then(d=>{
|
||||
document.getElementById('kpi-crm').textContent = ((d.legacy?.crm_contacts || d.legacy?.send_data || 256984)).toLocaleString('fr-FR');
|
||||
}).catch(()=>{});
|
||||
// DB
|
||||
fetch('/api/db-stats-live.php').then(r=>r.json()).then(d=>{
|
||||
document.getElementById('kpi-rows').textContent = (d.summary?.total_rows || 0).toLocaleString('fr-FR');
|
||||
// leads from critical
|
||||
const leads = d.critical_status?.['admin.leads']?.rows || 0;
|
||||
document.getElementById('kpi-leads').textContent = leads.toLocaleString('fr-FR');
|
||||
}).catch(()=>{});
|
||||
// NonReg
|
||||
fetch('/api/nonreg-api.php?cat=all').then(r=>r.json()).then(d=>{
|
||||
document.getElementById('kpi-nonreg').textContent = d.score + '%';
|
||||
}).catch(()=>{});
|
||||
// L99
|
||||
fetch('/api/l99-api.php?action=stats').then(r=>r.json()).then(d=>{
|
||||
document.getElementById('kpi-l99').textContent = d.score + '%';
|
||||
}).catch(()=>{});
|
||||
} catch(e) {
|
||||
console.warn(e);
|
||||
}
|
||||
}
|
||||
loadKPIs();
|
||||
setInterval(loadKPIs, 30000);
|
||||
</script>
|
||||
</body></html>
|
||||
Reference in New Issue
Block a user