auto-sync-2130
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -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": [
|
||||
|
||||
11
api/blade-tasks/task_20260419192502_4fa861.json
Normal file
11
api/blade-tasks/task_20260419192502_4fa861.json
Normal 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"
|
||||
}
|
||||
11
api/blade-tasks/task_20260419193002_192c3b.json
Normal file
11
api/blade-tasks/task_20260419193002_192c3b.json
Normal 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"
|
||||
}
|
||||
33
api/playwright-results/v48-final-20260419-212452/final.json
Normal file
33
api/playwright-results/v48-final-20260419-212452/final.json
Normal 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 |
@@ -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": "15 509",
|
||||
"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.
Binary file not shown.
|
After Width: | Height: | Size: 24 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 209 KiB |
@@ -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": "15 509",
|
||||
"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.
BIN
api/v48-6sigma-proof.png
Normal file
BIN
api/v48-6sigma-proof.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 794 KiB |
@@ -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": [
|
||||
{
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user