diff --git a/api/blade-tasks/task_20260419184501_23ad13.json b/api/blade-tasks/task_20260419184501_23ad13.json new file mode 100644 index 000000000..e39269142 --- /dev/null +++ b/api/blade-tasks/task_20260419184501_23ad13.json @@ -0,0 +1,11 @@ +{ + "id": "task_20260419184501_23ad13", + "name": "Blade self-heal 20:45", + "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-19T18:45:01+00:00", + "created_by": "blade-control-ui" +} \ No newline at end of file diff --git a/api/playwright-results/v43-wtp-visual-2026-04-19T18-44-50-222Z/wtp-desktop-1920.png b/api/playwright-results/v43-wtp-visual-2026-04-19T18-44-50-222Z/wtp-desktop-1920.png new file mode 100644 index 000000000..88a0683ce Binary files /dev/null and b/api/playwright-results/v43-wtp-visual-2026-04-19T18-44-50-222Z/wtp-desktop-1920.png differ diff --git a/api/v83-business-kpi-latest.json b/api/v83-business-kpi-latest.json index dcf851709..592d4b6eb 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-19T18:40:55+00:00", + "ts": "2026-04-19T18:44:06+00:00", "summary": { "total_categories": 7, "total_kpis": 56, diff --git a/data/wevia-apple-scans.json b/data/wevia-apple-scans.json index 5dabda820..a3d62046c 100644 --- a/data/wevia-apple-scans.json +++ b/data/wevia-apple-scans.json @@ -226,9 +226,38 @@ "docker_images": 0 }, "image_url": "https:\/\/weval-consulting.com\/data\/wevia-apple-uploads\/apple_69e5209da50218.35918305.png" + }, + { + "id": "apple_69e521ffdb08a6.67447739", + "filename": "test-heic.heic", + "stored_as": "apple_69e521ffdb0357.25823400.heic", + "size_bytes": 300706, + "scan_ms": 12228, + "scanned_at": "2026-04-19T18:42:20+00:00", + "caption": "HEIC native iPhone test", + "ocr_text": "@ WEVAL ERP Gap-Fill Agents.\n\nOffre service commerciale — Agents Al autonomes pour combler les gaps fonctionnels des ERPS\nSAP\/Oracle\/Sage, par département métier, adaptables 7 verticaux industriels.\n\n| © Les ERPs SAP\/Oracle\/Sage ne couvrent pas 100% des besoins métier. Nos agents Al comblent les gaps là où ERPs échouent.\n\nRISQUES CATALOGUÉS ERP GAPS IDENTIFIÉS VERTICAUX COUVERTS AGENTS PACK TOTAL\n8 critical -14 high 7 départements Retail Pharma Banque «Industrie - 23 clients identifiés.\n\nServices - Conseil: Energie\n\n| @ Matrice des risques 5x5 — Likelihood x impact, mitigés par agents WEVAL\n\nLÉGENDE SÉVÉRITÉ\n\nne IMPACT 1 IMPACT 2 IMPACT 3\nible\n\n1 Modéré (5-9) -\n\nI élevé (10-14) cf ë\n\nI critique (15-25) .\n\n3\n\nChaque cellule = nombre de risques, ï\n\nCliquez pour filtrer la liste ci-dessous.\n? 3\n«\n4 6\na\ni 6\n\n{ wo? - tsers-25 { eas - sus { por - 1645-20\n\nTAM\n\nPELINE\n\n7.3 me\n\n23 clients x revenue avg\n\nIMPACT 5\n\nV67 Registry — 84 ERP agents \/ 96\ntotal\n\nSavings potentiel : 21.11 M€\/an\nPaperclip source-oftruth + API V67\n", + "vision_text": "Here's the extracted information from the image:\n\n### 1) All text visible:\n\n* Logout\n* ← WTP Portal\n* Print offre\n* WEVAL ERP Gap-Fill Agents\n* Offre service commerciale — Agents AI autonomes pour combler les gaps fonctionnels des ERPs SAP\/Oracle\/Sage, par département métier, adaptables à 7 verticaux industriels.\n* Les ERPs SAP\/Oracle\/Sage ne couvrent pas 100% des besoins métier. Nos agents AI comblent les gaps là où ERPs échouent.\n* RISQUES CATALOGUÉS\n* 25\n* 8 critical - 14 high\n* ERP GAPS IDENTIFIÉS\n* 33\n* 7 départements\n* VERTICAUX COUVERTS\n* 7\n* Retail • Pharma • Banque • Industrie • Services • Conseil • Énergie\n* AGENTS PACK TOTAL\n* 149\n* 23 clients identifiés\n* TAM PIPELINE\n* 7.3 M€\n* 23 clients x revenue avg\n* Matrice des risques 5x5 — Likelihood x Impact, mitigés par agents WEVAL\n* LÉGENDE SÉVÉRITÉ\n* Faible (1-4)\n* Modéré (5-9)\n* Élevé (10-14)\n* Critique (15-25)\n* Chaque cellule = nombre de risques. Cliquez pour filtrer la liste ci-dessous.\n* IMPACT 1\n* IMPACT 2\n* IMPACT 3\n* IMPACT 4\n* IMPACT 5\n* L=5\n* L=4\n* L=3\n* L=2\n* L=1\n* (Matrix cell values): . . . 1 2\n* (Matrix cell values): . . 2 7 3\n* (Matrix cell values): . . . 3 5\n* (Matrix cell values): . . . . 2\n* (Matrix cell values): . . . . .\n* R02 • L5xI5=25\n* R13 • L5xI5=25\n* R01 • L4xI5=20\n* V67 Registry — 84 ERP agents \/ 96 total\n* Savings potentiel : 21.11 M€\/an\n* Paperclip source-of-truth • API V67\n\n### 2) Names of software tools, frameworks, AI agents, open-source projects, SaaS platforms mentioned:\n\n* WEVAL (implied company\/product name for the \"ERP Gap-Fill Agents\")\n* ERP (Enterprise Resource Planning - a category of software, used as a term here)\n* Agents AI (Refers to autonomous AI agents)\n* SAP (Specific ERP vendor)\n* Oracle (Specific ERP vendor)\n* Sage (Specific ERP vendor)\n* V67 Registry (A specific system or platform)\n* Paperclip (Implies a system or data source named \"Paperclip\")\n\n### 3) Architecture diagrams components:\n\n* None visible. The image displays a dashboard with data visualizations.\n\n### 4) GitHub URLs or repo names:\n\n* None visible.\n\n### 5) Docker images:\n\n* None visible.\n\n### 6) Programming languages visible:\n\n* None visible.", + "oss_extracted": { + "github_urls": [], + "project_names": [ + "docker", + "sap", + "oracle", + "paperclip", + "weval" + ], + "stacks": [], + "docker_images": [] + }, + "counts": { + "github_urls": 0, + "project_names": 5, + "docker_images": 0 + }, + "image_url": "https:\/\/weval-consulting.com\/data\/wevia-apple-uploads\/apple_69e521ffdb0357.25823400.heic" } ], - "total": 8, - "oss_total": 36, - "last_scan": "2026-04-19T18:36:28+00:00" + "total": 9, + "oss_total": 41, + "last_scan": "2026-04-19T18:42:20+00:00" } \ No newline at end of file diff --git a/data/wevia-apple-uploads/apple_69e521ffdb0357.25823400.heic b/data/wevia-apple-uploads/apple_69e521ffdb0357.25823400.heic new file mode 100644 index 000000000..0963f61a5 Binary files /dev/null and b/data/wevia-apple-uploads/apple_69e521ffdb0357.25823400.heic differ diff --git a/data/wevia-apple-uploads/apple_69e521ffdb0357.25823400.jpg b/data/wevia-apple-uploads/apple_69e521ffdb0357.25823400.jpg new file mode 100644 index 000000000..41c73d009 Binary files /dev/null and b/data/wevia-apple-uploads/apple_69e521ffdb0357.25823400.jpg differ diff --git a/pain-points-atlas.html b/pain-points-atlas.html index a847db706..48547add1 100644 --- a/pain-points-atlas.html +++ b/pain-points-atlas.html @@ -269,7 +269,7 @@ async function loadScanPanel() { ].map(([lbl,val,color]) => `
`).join(''); // Per-ERP grid document.getElementById('scan-per-erp').innerHTML = d.per_erp.map(e => { - const srcs = (e.sources||[]).filter(x=>x&&x!=='Other').join(' · ') || 'Other'; + const _rawSrc=e.sources;const _srcArr=Array.isArray(_rawSrc)?_rawSrc:(typeof _rawSrc==='string'?_rawSrc.split(/[,;|]/).map(function(s){return s.trim();}):(_rawSrc&&typeof _rawSrc==='object'?Object.values(_rawSrc).map(function(v){return String(v);}):[]));const srcs=_srcArr.filter(function(x){return x&&x!=='Other';}).join(' · ')||'Other'; const conf = parseFloat(e.avg_conf)||0; const confColor = conf >= 0.7 ? '#22c55e' : (conf >= 0.5 ? '#eab308' : '#f43f5e'); return `'+pp.business_cost+'
', - ''+pp.why_erp_fails+'
'+pp.agent_how+'
', - '