auto-sync-2130

This commit is contained in:
opus
2026-04-19 21:30:03 +02:00
parent 0bd089a7dd
commit c81416a6ae
18 changed files with 205 additions and 1952 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -1,15 +1,15 @@
{
"generated_at": "2026-04-19T21:20:01.951125",
"generated_at": "2026-04-19T21:30:02.030271",
"stats": {
"total": 490,
"pending": 941,
"total": 492,
"pending": 945,
"kaouther_surfaced": 29,
"chrome_surfaced": 10,
"notif_only_done": 0,
"autofix_archived": 0,
"cerebras_archived": 0,
"older_3d_archived": 0,
"unknown": 451,
"unknown": 453,
"errors": 0
},
"actions": [

View File

@@ -0,0 +1,11 @@
{
"id": "task_20260419192502_4fa861",
"name": "Blade self-heal 21:25",
"type": "powershell",
"command": "\n# Blade self-heal\nWrite-Host \"Self-heal triggered $(Get-Date)\"\n$agentProc = Get-Process powershell | Where-Object { $_.CommandLine -match 'sentinel-agent' }\nif (!$agentProc) {\n Write-Host \"Agent not running, starting...\"\n Start-Process powershell -ArgumentList \"-ExecutionPolicy\",\"Bypass\",\"-File\",\"C:\\ProgramData\\WEVAL\\sentinel-agent.ps1\" -WindowStyle Hidden\n}\n# Clear stale tasks > 3 days locally\n$cutoff = (Get-Date).AddDays(-3)\nGet-ChildItem \"C:\\ProgramData\\WEVAL\\tasks\\*.json\" -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -lt $cutoff } | Move-Item -Destination \"C:\\ProgramData\\WEVAL\\tasks\\archived\\\" -Force -ErrorAction SilentlyContinue\nWrite-Host \"Self-heal complete\"\n",
"cmd": "\n# Blade self-heal\nWrite-Host \"Self-heal triggered $(Get-Date)\"\n$agentProc = Get-Process powershell | Where-Object { $_.CommandLine -match 'sentinel-agent' }\nif (!$agentProc) {\n Write-Host \"Agent not running, starting...\"\n Start-Process powershell -ArgumentList \"-ExecutionPolicy\",\"Bypass\",\"-File\",\"C:\\ProgramData\\WEVAL\\sentinel-agent.ps1\" -WindowStyle Hidden\n}\n# Clear stale tasks > 3 days locally\n$cutoff = (Get-Date).AddDays(-3)\nGet-ChildItem \"C:\\ProgramData\\WEVAL\\tasks\\*.json\" -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -lt $cutoff } | Move-Item -Destination \"C:\\ProgramData\\WEVAL\\tasks\\archived\\\" -Force -ErrorAction SilentlyContinue\nWrite-Host \"Self-heal complete\"\n",
"priority": "high",
"status": "pending",
"created": "2026-04-19T19:25:02+00:00",
"created_by": "blade-control-ui"
}

View File

@@ -0,0 +1,11 @@
{
"id": "task_20260419193002_192c3b",
"name": "Blade self-heal 21:30",
"type": "powershell",
"command": "\n# Blade self-heal\nWrite-Host \"Self-heal triggered $(Get-Date)\"\n$agentProc = Get-Process powershell | Where-Object { $_.CommandLine -match 'sentinel-agent' }\nif (!$agentProc) {\n Write-Host \"Agent not running, starting...\"\n Start-Process powershell -ArgumentList \"-ExecutionPolicy\",\"Bypass\",\"-File\",\"C:\\ProgramData\\WEVAL\\sentinel-agent.ps1\" -WindowStyle Hidden\n}\n# Clear stale tasks > 3 days locally\n$cutoff = (Get-Date).AddDays(-3)\nGet-ChildItem \"C:\\ProgramData\\WEVAL\\tasks\\*.json\" -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -lt $cutoff } | Move-Item -Destination \"C:\\ProgramData\\WEVAL\\tasks\\archived\\\" -Force -ErrorAction SilentlyContinue\nWrite-Host \"Self-heal complete\"\n",
"cmd": "\n# Blade self-heal\nWrite-Host \"Self-heal triggered $(Get-Date)\"\n$agentProc = Get-Process powershell | Where-Object { $_.CommandLine -match 'sentinel-agent' }\nif (!$agentProc) {\n Write-Host \"Agent not running, starting...\"\n Start-Process powershell -ArgumentList \"-ExecutionPolicy\",\"Bypass\",\"-File\",\"C:\\ProgramData\\WEVAL\\sentinel-agent.ps1\" -WindowStyle Hidden\n}\n# Clear stale tasks > 3 days locally\n$cutoff = (Get-Date).AddDays(-3)\nGet-ChildItem \"C:\\ProgramData\\WEVAL\\tasks\\*.json\" -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -lt $cutoff } | Move-Item -Destination \"C:\\ProgramData\\WEVAL\\tasks\\archived\\\" -Force -ErrorAction SilentlyContinue\nWrite-Host \"Self-heal complete\"\n",
"priority": "high",
"status": "pending",
"created": "2026-04-19T19:30:02+00:00",
"created_by": "blade-control-ui"
}

View File

@@ -0,0 +1,33 @@
{
"counts": {
"dashes_count": 2,
"dashes_sample": [
{
"id": "noid",
"parent": "Warn (>233)\u2014"
},
{
"id": "noid",
"parent": "Fail (>6210)\u2014"
}
],
"missings": 0,
"partials": 15,
"oks": 9
},
"dg_kpis": {
"alerts": "1",
"toc": "Delivery POC \u2192 Rollout",
"pipe": "180k\u20ac",
"opps": "4",
"risks": "4"
},
"wevia_apple": {
"total": "9",
"oss": "41",
"gh": "0",
"top": "docker (8)"
},
"pageerrors": [],
"console_errors_count": 0
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 794 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 KiB

View File

@@ -0,0 +1,53 @@
{
"ts": "2026-04-19T19:26:56.798Z",
"test": "v8.2 NO-DORMANT + archive + ERP fix + regression",
"tests": [
{
"name": "dormant_dashboard_loads",
"pass": false,
"title": "WEVAL — Login"
},
{
"name": "5_new_intents_match",
"pass": true,
"matched": 5,
"total": 5
},
{
"name": "5_regression_match",
"pass": true,
"matched": 5,
"total": 5
},
{
"name": "erp_kpis_fixed",
"pass": true,
"skills": "15509",
"doctrines": "58",
"agents": "906"
},
{
"name": "drillable",
"pass": true,
"cards": 9
},
{
"name": "sitemap",
"pass": true,
"total": "263"
},
{
"name": "wtp",
"pass": true,
"title": "WEVAL — Connexion"
},
{
"name": "training_drill_wired",
"pass": true,
"wired": 82
}
],
"total": 8,
"pass": 7,
"fail": 1
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 KiB

View File

@@ -0,0 +1,53 @@
{
"ts": "2026-04-19T19:28:55.898Z",
"test": "v8.2 NO-DORMANT + archive + ERP fix + regression",
"tests": [
{
"name": "dormant_dashboard_loads",
"pass": false,
"title": "WEVAL — Login"
},
{
"name": "5_new_intents_match",
"pass": true,
"matched": 5,
"total": 5
},
{
"name": "5_regression_match",
"pass": true,
"matched": 5,
"total": 5
},
{
"name": "erp_kpis_fixed",
"pass": true,
"skills": "15509",
"doctrines": "58",
"agents": "906"
},
{
"name": "drillable",
"pass": true,
"cards": 9
},
{
"name": "sitemap",
"pass": true,
"total": "263"
},
{
"name": "wtp",
"pass": true,
"title": "WEVAL — Connexion"
},
{
"name": "training_drill_wired",
"pass": true,
"wired": 82
}
],
"total": 8,
"pass": 7,
"fail": 1
}

BIN
api/v48-6sigma-proof.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 794 KiB

View File

@@ -1,5 +1,5 @@
{
"ts": "2026-04-19T19:24:50.811Z",
"ts": "2026-04-19T19:28:55.898Z",
"test": "v8.2 NO-DORMANT + archive + ERP fix + regression",
"tests": [
{

View File

@@ -1,7 +1,7 @@
{
"ok": true,
"version": "V83-business-kpi",
"ts": "2026-04-19T19:24:58+00:00",
"ts": "2026-04-19T19:29:47+00:00",
"summary": {
"total_categories": 7,
"total_kpis": 56,

View File

@@ -615,10 +615,45 @@ $total_savings = array_sum(array_map(fn($pp)=>$pp['savings_eur_year'], $pain_poi
$total_agents_unique = count(array_unique(array_column($pain_points, 'agent')));
$total_erps_covered = count($erp_vendors);
// Count ERP mentions per pain-point (reverse index)
// V96.4 Opus 19avr: normalize ERP aliases before counting
// Root cause: modules SAP/Oracle/MS and legacy 'netsuite' slug were not matching vendor keys
// Each alias maps a sub-module/legacy slug to its parent ERP vendor key (one of the 25 cards)
$erp_aliases = [
// Oracle ecosystem
'netsuite' => 'oracle_netsuite',
'oracle_cx' => 'oracle_fusion', 'oracle_hcm' => 'oracle_fusion', 'oracle_scm' => 'oracle_fusion',
'oracle_proc' => 'oracle_fusion', 'oracle_hfm' => 'oracle_fusion', 'oracle_plm' => 'oracle_fusion',
'oracle_mfg' => 'oracle_fusion', 'oracle_soa' => 'oracle_fusion', 'oracle_eam' => 'oracle_fusion',
'oracle_risk' => 'oracle_fusion', 'oracle_flex' => 'oracle_fusion', 'oracle_epm' => 'oracle_fusion',
'oracle_fraud' => 'oracle_fusion', 'oracle_eloqua' => 'oracle_fusion',
// SAP ecosystem
'sap_pm' => 'sap_s4hana', 'sap_qm' => 'sap_s4hana', 'sap_pp' => 'sap_s4hana',
'sap_sd' => 'sap_s4hana', 'sap_c4' => 'sap_s4hana', 'sap_ariba' => 'sap_s4hana',
'sap_apo' => 'sap_s4hana', 'sap_ibp' => 'sap_s4hana', 'sap_sf' => 'sap_s4hana',
'sap_sf_payroll' => 'sap_s4hana', 'sap_grc' => 'sap_s4hana', 'sap_ilm' => 'sap_s4hana',
'sap_pi' => 'sap_s4hana', 'sap_analytics' => 'sap_s4hana',
// Microsoft ecosystem
'ms_d365_hr' => 'ms_d365_fo', 'ms_d365_privacy' => 'ms_d365_fo',
'ms_d365' => 'ms_d365_fo', 'ms_fraud_protection' => 'ms_d365_fo',
// Salesforce ecosystem
'salesforce_mc' => 'salesforce', 'salesforce_cpq' => 'salesforce',
// Infor ecosystem
'infor_eam' => 'infor_m3',
];
// Count ERP mentions per pain-point with alias normalization + unique per PP
$erp_mentions = [];
// Initialize all 25 vendor keys to 0 so every ERP card renders its true count
foreach ($erp_vendors as $vk => $vv) { $erp_mentions[$vk] = 0; }
foreach ($pain_points as $pp) {
$seen = []; // unique parent ERPs per PP (avoid double-count when PP lists both parent + module)
foreach ($pp['erps_affected'] ?? [] as $e) {
$e_norm = $erp_aliases[$e] ?? $e;
if (isset($erp_vendors[$e_norm])) {
$seen[$e_norm] = true;
}
}
foreach (array_keys($seen) as $e) {
$erp_mentions[$e] = ($erp_mentions[$e] ?? 0) + 1;
}
}
@@ -664,7 +699,8 @@ echo json_encode([
'avg_savings_per_agent_eur' => round($total_savings/$total_agents_unique)
],
'erp_vendors' => $erp_vendors,
'erp_mentions_top' => array_slice($erp_mentions, 0, 15, true),
'erp_mentions_top' => $erp_mentions, // V96.4: return ALL 25 so every ERP card shows its real count (was slice 15 → buggy)
'erp_aliases' => $erp_aliases, // V96.4: expose aliases for debug / HTML client-side normalization
'pain_points' => $pain_points,
'dept_summary' => $dept_summary,
'arch_injection' => $arch_injection,