diff --git a/api/business-kpi-dashboard.php b/api/business-kpi-dashboard.php
new file mode 100644
index 000000000..e49394240
--- /dev/null
+++ b/api/business-kpi-dashboard.php
@@ -0,0 +1,5 @@
+ /business-kpi-dashboard.php
+// Root cause: clients call /api/ path but file at root
+header('X-V93-alias: root->api');
+require_once __DIR__ . '/../business-kpi-dashboard.php';
diff --git a/api/v83-business-kpi-dashboard-data.php b/api/v83-business-kpi-dashboard-data.php
new file mode 100644
index 000000000..13252102c
--- /dev/null
+++ b/api/v83-business-kpi-dashboard-data.php
@@ -0,0 +1,11 @@
+false,'note'=>'cache not yet populated','ts'=>date('c')]);
+}
diff --git a/api/v83-business-kpi-latest.json b/api/v83-business-kpi-latest.json
index 8d5f440ce..38820091a 100644
--- a/api/v83-business-kpi-latest.json
+++ b/api/v83-business-kpi-latest.json
@@ -1,7 +1,7 @@
{
"ok": true,
"version": "V83-business-kpi",
- "ts": "2026-04-20T12:13:44+00:00",
+ "ts": "2026-04-20T12:14:13+00:00",
"summary": {
"total_categories": 7,
"total_kpis": 56,
diff --git a/api/visual-management-data.php b/api/visual-management-data.php
index 0c9199d75..1941d857f 100644
--- a/api/visual-management-data.php
+++ b/api/visual-management-data.php
@@ -1,3 +1,17 @@
visual-management-live (fix Primary script unknown error)
-require_once __DIR__ . '/visual-management-live.php';
+// V93 cached wrapper - fixes 8sec psql queries
+header('Content-Type: application/json');
+header('Access-Control-Allow-Origin: *');
+header('X-V93-cache: 60s-wrapper');
+$cache = '/tmp/visual-management-data.cache.json';
+if (file_exists($cache) && (time() - filemtime($cache)) < 60) {
+ header('X-V93-cache-hit: 1');
+ readfile($cache);
+ exit;
+}
+ob_start();
+require __DIR__ . '/visual-management-live.php';
+$body = ob_get_clean();
+@file_put_contents($cache, $body);
+header('X-V93-cache-hit: 0');
+echo $body;
diff --git a/crm-dashboard-live.html b/crm-dashboard-live.html
index ea33c2848..67c931dfe 100644
--- a/crm-dashboard-live.html
+++ b/crm-dashboard-live.html
@@ -59,11 +59,11 @@ h1{background:linear-gradient(90deg,#f59e0b,#ef4444);-webkit-background-clip:tex
π Volumes Business Live
-
Ethica HCPsβ
-
Office 365β
-
Inbox acctsβ
-
ADS acctsβ
-
Weval leadsβ
+
Ethica HCPsβ
+
Office 365β
+
Inbox acctsβ
+
ADS acctsβ
+
Weval leadsβ
diff --git a/crm-dashboard-live.html.GOLD-V93-20260420-1413 b/crm-dashboard-live.html.GOLD-V93-20260420-1413
new file mode 100644
index 000000000..ea33c2848
--- /dev/null
+++ b/crm-dashboard-live.html.GOLD-V93-20260420-1413
@@ -0,0 +1,175 @@
+
+
+
+
+CRM Dual Dashboard β WEVAL
+
+
+
+
+
+
CRM Dual Dashboard
+
+ Twenty (active) + Legacy (stale) β auto-refresh 30s
+
+
+
+
β Doctrine 55 CRM STALENESS β Le job
send_contacts_merge est stoppΓ© depuis 2026-02-19 (2+ mois sans activitΓ© CRM). Pipeline Twenty inactif.
+
Lire doctrine complΓ¨te β
+
+
+
+
+
π Twenty CRM (Pipeline Actif)
+
Dealsβ
+
Contactsβ
+
Companiesβ
+
Leadsβ
+
Last dealβ
+
+
+
+
π¦ CRM Legacy (Stale)
+
CRM Contacts (vue)β
+
Send contacts (base)β
+
Last mergeβ
+
Days since lastβ
+
Verdictβ
+
+
+
+
π Volumes Business Live
+
Ethica HCPsβ
+
Office 365β
+
Inbox acctsβ
+
ADS acctsβ
+
Weval leadsβ
+
+
+
+
Initialisation...
+
+
+
+
+
+
+
+
+
+
+
diff --git a/oss-discovery-v77.html b/oss-discovery-v77.html
index 24265e41f..0b7443bae 100644
--- a/oss-discovery-v77.html
+++ b/oss-discovery-v77.html
@@ -199,14 +199,14 @@ async function load() {
function renderStats() {
const s = ALL_DATA.summary;
document.getElementById('stats').innerHTML = `
- Total tools
${s.total_tools}
OSS integrated in stack
- Wired
${s.wired_tools}/${s.total_tools}
All connected to WEVIA
- Total skills
${s.total_skills.toLocaleString()}
Across 72 tools
- Injected in RAG
${s.injected_skills.toLocaleString()}
Qdrant vectors live
- Coverage
${s.coverage_pct}%
Injected / Total
- With Docker
${s.with_docker}
Production-ready
- With README
${s.with_readme}
Documented
- Production
${s.production_count}
Docker + wired live
+ Total tools
${s.total_tools}
OSS integrated in stack
+ Wired
${s.wired_tools}/${s.total_tools}
All connected to WEVIA
+ Total skills
${s.total_skills.toLocaleString()}
Across 72 tools
+ Injected in RAG
${s.injected_skills.toLocaleString()}
Qdrant vectors live
+ Coverage
${s.coverage_pct}%
Injected / Total
+ With Docker
${s.with_docker}
Production-ready
+ With README
${s.with_readme}
Documented
+ Production
${s.production_count}
Docker + wired live
`;
}
diff --git a/oss-discovery-v77.html.GOLD-V93-20260420-1413 b/oss-discovery-v77.html.GOLD-V93-20260420-1413
new file mode 100644
index 000000000..24265e41f
--- /dev/null
+++ b/oss-discovery-v77.html.GOLD-V93-20260420-1413
@@ -0,0 +1,321 @@
+
+
+
+
+
+WEVAL β OSS Discovery V77 Drill-down
+
+
+
+
+
+
+
+
OSS
+
+
WEVAL OSS Discovery V77
+
72 tools Β· 6 178 skills Β· drill-down par catΓ©gorie Β· Enterprise Model UX
+
+
+
+
+
+
+
+
+
+
+ π¦ CatΓ©gories (cliquer pour drill-down)
+
+
+
+ π Skills Explorer Β· 6 178 skills
+
+
+
+
+ Affichage de 0 skills Β· 694 injected in Qdrant vectors (coverage 11.2%)
+
+
+
+
+ π’ Production OSS (Docker dΓ©ployΓ© live)
+
+
+
+
+
+
+
+
+