diff --git a/api/agent-leads-sync.json b/api/agent-leads-sync.json index 2f93df6e2..ee6e7e2de 100644 --- a/api/agent-leads-sync.json +++ b/api/agent-leads-sync.json @@ -1,6 +1,6 @@ { "agent": "V45_Leads_Sync", - "ts": "2026-04-20T22:40:02+02:00", + "ts": "2026-04-20T22:50:02+02:00", "paperclip_total": 48, "active_customer": 4, "warm_prospect": 5, diff --git a/api/blade-actions-surfaced.json b/api/blade-actions-surfaced.json index 0044a8e24..738464121 100644 --- a/api/blade-actions-surfaced.json +++ b/api/blade-actions-surfaced.json @@ -1,5 +1,5 @@ { - "generated_at": "2026-04-20T22:45:01.291560", + "generated_at": "2026-04-20T22:55:01.254936", "stats": { "total": 35, "pending": 20, diff --git a/api/em-kpi-cache.json b/api/em-kpi-cache.json index 6a5536a4e..e69de29bb 100644 --- a/api/em-kpi-cache.json +++ b/api/em-kpi-cache.json @@ -1,281 +0,0 @@ -{ - "ts": "2026-04-20T20:49:00+00:00", - "server": "s204", - "s204": { - "load": 6.09, - "uptime": "2026-04-14 11:51:24", - "ram_total_mb": 31335, - "ram_used_mb": 13263, - "ram_free_mb": 18071, - "disk_total": "150G", - "disk_used": "113G", - "disk_free": "32G", - "disk_pct": "79%", - "fpm_workers": 120, - "docker_containers": 19, - "cpu_cores": 8 - }, - "s95": { - "load": 1.1, - "disk_pct": "82%", - "status": "UP", - "ram_total_mb": 15610, - "ram_free_mb": 11254 - }, - "pmta": [ - { - "name": "SER6", - "ip": "110.239.84.121", - "status": "DOWN" - }, - { - "name": "SER7", - "ip": "110.239.65.64", - "status": "DOWN" - }, - { - "name": "SER8", - "ip": "182.160.55.107", - "status": "DOWN" - }, - { - "name": "SER9", - "ip": "110.239.86.68", - "status": "DOWN" - } - ], - "assets": { - "html_pages": 288, - "php_apis": 759, - "wiki_entries": 1861, - "vault_doctrines": 59, - "vault_sessions": 103, - "vault_decisions": 12 - }, - "tools": { - "total": 627, - "registry_version": "?" - }, - "sovereign": { - "status": "UP", - "providers": [ - "Cerebras-fast", - "Cerebras-think", - "Groq", - "Cloudflare-AI", - "Gemini", - "SambaNova", - "NVIDIA-NIM", - "Mistral", - "Groq-OSS", - "HF-Space", - "HF-Router", - "OpenRouter", - "GitHub-Models" - ], - "active": 13, - "total": 13, - "primary": "Cerebras-fast", - "cost": "0€" - }, - "ethica": { - "total_hcps": 161730, - "with_email": 110543, - "with_phone": 155145, - "gap_email": 51187, - "pct_email": 68.4, - "pct_phone": 95.9, - "by_country": [ - { - "country": "DZ", - "hcps": 122337, - "with_email": 78454, - "with_tel": 119394, - "pct_email": 64.1, - "pct_tel": 97.6 - }, - { - "country": "MA", - "hcps": 19720, - "with_email": 15071, - "with_tel": 18733, - "pct_email": 76.4, - "pct_tel": 95 - }, - { - "country": "TN", - "hcps": 17794, - "with_email": 15139, - "with_tel": 17018, - "pct_email": 85.1, - "pct_tel": 95.6 - }, - { - "country": "INTL", - "hcps": 1879, - "with_email": 1879, - "with_tel": 0, - "pct_email": 100, - "pct_tel": 0 - } - ] - }, - "docker": [ - { - "name": "loki", - "status": "Up 4 days", - "ports": "" - }, - { - "name": "listmonk", - "status": "Up 4 days", - "ports": "" - }, - { - "name": "plausible-plausible-1", - "status": "Up 3 days", - "ports": "" - }, - { - "name": "plausible-plausible-db-1", - "status": "Up 3 days", - "ports": "" - }, - { - "name": "plausible-plausible-events-db-1", - "status": "Up 3 days", - "ports": "" - }, - { - "name": "n8n-docker-n8n-1", - "status": "Up 4 days", - "ports": "" - }, - { - "name": "mattermost-docker-mm-db-1", - "status": "Up 4 days", - "ports": "" - }, - { - "name": "mattermost-docker-mattermost-1", - "status": "Up 4 days (healthy)", - "ports": "" - }, - { - "name": "twenty", - "status": "Up 4 days", - "ports": "" - }, - { - "name": "twenty-redis", - "status": "Up 4 days", - "ports": "" - }, - { - "name": "langfuse", - "status": "Up 4 days", - "ports": "" - }, - { - "name": "redis-weval", - "status": "Up 6 days", - "ports": "" - }, - { - "name": "gitea", - "status": "Up 6 days", - "ports": "" - }, - { - "name": "node-exporter", - "status": "Up 6 days", - "ports": "" - }, - { - "name": "prometheus", - "status": "Up 6 days", - "ports": "" - }, - { - "name": "searxng", - "status": "Up 6 days", - "ports": "" - }, - { - "name": "uptime-kuma", - "status": "Up 21 hours (healthy)", - "ports": "" - }, - { - "name": "vaultwarden", - "status": "Up 6 days (healthy)", - "ports": "" - }, - { - "name": "qdrant", - "status": "Up 6 days", - "ports": "" - } - ], - "crons": { - "active": 35 - }, - "git": { - "head": "0bdd4a863 V111 FINAL - V83 Dashboard COMPLETENESS 100% ACHIEVED. open_rate wired to v83-bridge-internal canonical (wire 2->0). Cause racine identified doctrine #13: 3 KPIs had status='live' falling through switch statement bucket → not counted. ADDITIF 1-line fix: case 'ok': case 'live': ++ → counts both. ok=29->32, completeness 94.6%->100%. NR 153\/153 zero regression maintained. 81eme session. V80 chattr +i pattern. Doctrines 1+2+3+4+6+12+13+14+16+60+95+100 applied zero ecrasement. Technical ceiling reached - all 56 KPIs wired to real data pipelines.", - "dirty": 1, - "status": "DIRTY" - }, - "nonreg": { - "total": 153, - "passed": 153, - "score": "100%" - }, - "services": [ - { - "name": "DeerFlow", - "port": 3002, - "status": "UP" - }, - { - "name": "DeerFlow API", - "port": 8001, - "status": "UP" - }, - { - "name": "Qdrant", - "port": 6333, - "status": "UP" - }, - { - "name": "Ollama", - "port": 11434, - "status": "UP" - }, - { - "name": "Redis", - "port": 6379, - "status": "UP" - }, - { - "name": "Sovereign", - "port": 4000, - "status": "UP" - }, - { - "name": "SearXNG", - "port": 8080, - "status": "UP" - } - ], - "whisper": { - "binary": "COMPILED", - "model": "142MB" - }, - "grand_total": 3613, - "health": { - "score": 4, - "max": 6, - "pct": 67 - }, - "elapsed_ms": 9442 -} \ No newline at end of file diff --git a/api/mql-scoring-status.json b/api/mql-scoring-status.json index f1d3b8f6d..336586340 100644 --- a/api/mql-scoring-status.json +++ b/api/mql-scoring-status.json @@ -1,27 +1,27 @@ { "ok": true, "agent": "V42_MQL_Scoring_Agent_REAL", - "ts": "2026-04-20T20:40:01+00:00", + "ts": "2026-04-20T20:50:02+00:00", "status": "DEPLOYED_AUTO", "deployed": true, "algorithm": "weighted_behavioral_signals", "signals_tracked": { - "wtp_engagement": 66, + "wtp_engagement": 100, "chat_engagement": 0, "roi_tool": 0, "email_opened": 0 }, - "avg_score": 16.5, + "avg_score": 25, "mql_threshold": 50, "sql_threshold": 75, "leads_captured": 48, - "mql_auto_scored": 19, + "mql_auto_scored": 20, "sql_auto_scored": 8, - "mql_auto_pct": 39, + "mql_auto_pct": 41, "improvement_vs_manual": { "before_manual_pct": 33.3, - "after_auto_pct": 39, - "delta": 5.700000000000003 + "after_auto_pct": 41, + "delta": 7.700000000000003 }, "paperclip_db_ok": true, "paperclip_tables": 1, diff --git a/api/orchestrator-agents.php b/api/orchestrator-agents.php index 3fa48fbbe..d0c7c6a7a 100644 --- a/api/orchestrator-agents.php +++ b/api/orchestrator-agents.php @@ -53,6 +53,11 @@ if ($pg) { $reg = @json_decode(@file_get_contents("/opt/wevia-brain/tool-registry-v2.json"), true); $tool_count = count($reg["tools"] ?? []); +// V101: Unified catalog total - includes business agents +$catalog = @json_decode(@file_get_contents("http://127.0.0.1/api/agents-catalog-api.php"), true); +$catalog_total = $catalog["total"] ?? 0; +$catalog_categories = $catalog["categories"] ?? []; + echo json_encode([ "ok" => true, "realtime_agents" => $realtime, @@ -62,6 +67,8 @@ echo json_encode([ "paperclip_agents" => array_sum(array_column($paperclip_roles, "count")), "paperclip_teams" => count($paperclip_roles), "registry_tools" => $tool_count, + "catalog_total" => $catalog_total, + "catalog_categories" => $catalog_categories, "hcps" => "141K", "grand_total" => count($realtime) + array_sum(array_column($paperclip_roles, "count")) + $tool_count ] diff --git a/api/playwright-v94/results.json b/api/playwright-v94/results.json index 826e222c9..26859a0ed 100644 --- a/api/playwright-v94/results.json +++ b/api/playwright-v94/results.json @@ -22,7 +22,7 @@ { "test": "filter_agents", "status": "FAIL", - "err": "locator.click: Target page, context or browser has been closed\nCall log:\n - waiting for locator('.v94-cat-tab').filter({ hasText: 'Agents' }).first()\n" + "err": "locator.click: Timeout 30000ms exceeded.\nCall log:\n - waiting for locator('.v94-cat-tab').filter({ hasText: 'Agents' }).first()\n" } ], "summary": { @@ -30,5 +30,5 @@ "fail": 4, "total": 5 }, - "ts": "2026-04-20T20:48:25.088Z" + "ts": "2026-04-20T20:50:23.771Z" } \ No newline at end of file diff --git a/api/v83-business-kpi-latest.json b/api/v83-business-kpi-latest.json index 2cd8eb86c..afc348d2a 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-20T20:49:17+00:00", + "ts": "2026-04-20T20:54:02+00:00", "summary": { "total_categories": 7, "total_kpis": 56, diff --git a/wevia-orchestrator.html b/wevia-orchestrator.html index 757de1543..9228e99ac 100644 --- a/wevia-orchestrator.html +++ b/wevia-orchestrator.html @@ -253,7 +253,7 @@ function renderAgents(){ // DYNAMIC: fetch live counts from API fetch('/api/orchestrator-agents.php').then(r=>r.text().then(t=>{/* HTML_GUARD_V2_BATCH */var q=(t||"").trim();if(q.startsWith("{ if(d.totals){ - var s=document.getElementById('st-agents');if(s)s.textContent=d.totals.realtime; + var s=document.getElementById('st-agents');if(s)s.textContent=d.totals.catalog_total||d.totals.realtime; var t=document.getElementById('st-tools');if(t)t.textContent=d.totals.registry_tools; var r2=document.getElementById('st-resolver');if(r2)r2.textContent=d.totals.registry_tools; }