diff --git a/agent-roi-simulator.html b/agent-roi-simulator.html
new file mode 100644
index 000000000..cff08d002
--- /dev/null
+++ b/agent-roi-simulator.html
@@ -0,0 +1,535 @@
+
+
+
+
+
+WEVAL · ROI Simulator — Gains quantitatifs & qualitatifs par agent
+
+
+
+
+
+
+
+
+
+
+
+
⚙️ Contexte client
+
+
+
🏢 Taille entreprise
+
+
—
+
+
+
+
+
+
🏭 Vertical
+
+
—
+
+
+
+
💰 Multiplicateur global
+
1.00×
+
= size × maturity × vertical (× 1.25 si département aligné vertical)
+
+
+
+
+
+
+
Savings pack sélectionné
0€
— par an
+
Implementation cost
0€
one-shot
+
Payback pack
— mois
moyenne pondérée
+
NPV 3 ans
0€
savings - cost - 20% maint
+
+
+
+
Département :
+
+
+
+
+
+
+
+
+
+
+
+
🎯 Pack sélectionné 0
+
+
+
+
+
+
📐 Radar qualitatif (moyenne pack)
+
+
+
+
+
+
+
📈 ROI cumulé 12 mois
+
+
+
+
+
+
+
+
+
+
+
diff --git a/api/architecture-scan.json b/api/architecture-scan.json
index e69de29bb..2260cac28 100644
--- a/api/architecture-scan.json
+++ b/api/architecture-scan.json
@@ -0,0 +1,1929 @@
+{
+ "generated": "2026-04-17 23:30:02",
+ "version": "1.0",
+ "servers": [
+ {
+ "id": "S204",
+ "ip": "204.168.152.13",
+ "private": "10.1.0.2",
+ "role": "PRIMARY",
+ "ssh": 49222,
+ "disk_pct": 80,
+ "disk_avail": "30G",
+ "uptime": "up 3 days, 13 hours, 38 minutes",
+ "nginx": "active",
+ "php_fpm": "active",
+ "php_version": "8.5.5"
+ },
+ {
+ "id": "S95",
+ "ip": "95.216.167.89",
+ "private": "10.1.0.3",
+ "role": "WEVADS Arsenal",
+ "ssh": 22,
+ "disk_pct": 89,
+ "disk_avail": "17G",
+ "sentinel": 1
+ },
+ {
+ "id": "S151",
+ "ip": "151.80.235.110",
+ "private": null,
+ "role": "DR\/Tracking OVH",
+ "ssh": 22
+ }
+ ],
+ "docker": [
+ {
+ "name": "loki",
+ "status": "Up 35 hours",
+ "ports": ""
+ },
+ {
+ "name": "listmonk",
+ "status": "Up 38 hours",
+ "ports": ""
+ },
+ {
+ "name": "plausible-plausible-1",
+ "status": "Up 9 hours",
+ "ports": ""
+ },
+ {
+ "name": "plausible-plausible-db-1",
+ "status": "Up 9 hours",
+ "ports": ""
+ },
+ {
+ "name": "plausible-plausible-events-db-1",
+ "status": "Up 9 hours",
+ "ports": ""
+ },
+ {
+ "name": "n8n-docker-n8n-1",
+ "status": "Up 44 hours",
+ "ports": ""
+ },
+ {
+ "name": "mattermost-docker-mm-db-1",
+ "status": "Up 44 hours",
+ "ports": ""
+ },
+ {
+ "name": "mattermost-docker-mattermost-1",
+ "status": "Up 44 hours (healthy)",
+ "ports": ""
+ },
+ {
+ "name": "twenty",
+ "status": "Up 37 hours",
+ "ports": ""
+ },
+ {
+ "name": "twenty-redis",
+ "status": "Up 44 hours",
+ "ports": ""
+ },
+ {
+ "name": "langfuse",
+ "status": "Up 47 hours",
+ "ports": ""
+ },
+ {
+ "name": "redis-weval",
+ "status": "Up 3 days",
+ "ports": ""
+ },
+ {
+ "name": "gitea",
+ "status": "Up 3 days",
+ "ports": ""
+ },
+ {
+ "name": "node-exporter",
+ "status": "Up 3 days",
+ "ports": ""
+ },
+ {
+ "name": "prometheus",
+ "status": "Up 3 days",
+ "ports": ""
+ },
+ {
+ "name": "searxng",
+ "status": "Up 3 days",
+ "ports": ""
+ },
+ {
+ "name": "uptime-kuma",
+ "status": "Up 3 days (healthy)",
+ "ports": ""
+ },
+ {
+ "name": "vaultwarden",
+ "status": "Up 3 days (healthy)",
+ "ports": ""
+ },
+ {
+ "name": "qdrant",
+ "status": "Up 3 days",
+ "ports": ""
+ }
+ ],
+ "domains": [
+ {
+ "file": "analytics.weval-consulting.com",
+ "server_names": [
+ "analytics.weval-consulting.com"
+ ],
+ "ssl": true,
+ "php-session": false,
+ "php-session_paths": false,
+ "auth_complete": false
+ },
+ {
+ "file": "code-weval",
+ "server_names": [
+ "code.weval-consulting.com"
+ ],
+ "ssl": true,
+ "php-session": false,
+ "php-session_paths": false,
+ "auth_complete": false
+ },
+ {
+ "file": "crm.weval-consulting.com",
+ "server_names": [
+ "crm.weval-consulting.com"
+ ],
+ "ssl": true,
+ "php-session": false,
+ "php-session_paths": false,
+ "auth_complete": false
+ },
+ {
+ "file": "ethica",
+ "server_names": [
+ "ethica.wevup.app",
+ "consent.wevup.app"
+ ],
+ "ssl": true,
+ "php-session": false,
+ "php-session_paths": false,
+ "auth_complete": false
+ },
+ {
+ "file": "git.weval-consulting.com",
+ "server_names": [
+ "git.weval-consulting.com"
+ ],
+ "ssl": true,
+ "php-session": false,
+ "php-session_paths": false,
+ "auth_complete": false
+ },
+ {
+ "file": "langfuse.weval-consulting.com",
+ "server_names": [
+ "langfuse.weval-consulting.com"
+ ],
+ "ssl": true,
+ "php-session": false,
+ "php-session_paths": false,
+ "auth_complete": false
+ },
+ {
+ "file": "mirofish.weval-consulting.com",
+ "server_names": [
+ "mirofish.weval-consulting.com"
+ ],
+ "ssl": true,
+ "php-session": false,
+ "php-session_paths": false,
+ "auth_complete": false
+ },
+ {
+ "file": "mm.weval-consulting.com",
+ "server_names": [
+ "mm.weval-consulting.com"
+ ],
+ "ssl": true,
+ "php-session": false,
+ "php-session_paths": false,
+ "auth_complete": false
+ },
+ {
+ "file": "monitor.weval-consulting.com",
+ "server_names": [
+ "monitor.weval-consulting.com"
+ ],
+ "ssl": true,
+ "php-session": false,
+ "php-session_paths": false,
+ "auth_complete": false
+ },
+ {
+ "file": "n8n.weval-consulting.com",
+ "server_names": [
+ "n8n.weval-consulting.com"
+ ],
+ "ssl": true,
+ "php-session": false,
+ "php-session_paths": false,
+ "auth_complete": false
+ },
+ {
+ "file": "paperclip.weval-consulting.com",
+ "server_names": [
+ "paperclip.weval-consulting.com"
+ ],
+ "ssl": true,
+ "php-session": false,
+ "php-session_paths": false,
+ "auth_complete": false
+ },
+ {
+ "file": "wevads.weval-consulting.com",
+ "server_names": [
+ "wevads.weval-consulting.com"
+ ],
+ "ssl": true,
+ "php-session": false,
+ "php-session_paths": false,
+ "auth_complete": false
+ },
+ {
+ "file": "wevads.weval-consulting.com.gold-16avr-pre-fallback",
+ "server_names": [
+ "wevads.weval-consulting.com"
+ ],
+ "ssl": true,
+ "php-session": false,
+ "php-session_paths": false,
+ "auth_complete": false
+ },
+ {
+ "file": "weval-consulting",
+ "server_names": [
+ "weval-consulting.com",
+ "www.weval-consulting.com"
+ ],
+ "ssl": true,
+ "php-session": false,
+ "php-session_paths": false,
+ "auth_complete": false
+ }
+ ],
+ "screens": {
+ "s204_html": 233,
+ "s204_products": 88,
+ "s204_api_php": 601,
+ "s204_wevia_php": 18,
+ "s95_arsenal_html": 1377,
+ "s95_arsenal_api": 377
+ },
+ "auth": {
+ "system": "PHP Session Auth",
+ "authentik": "REMOVED",
+ "pass": 24,
+ "fail": 0
+ },
+ "databases": {
+ "s204": [
+ "postgres",
+ "adx_system",
+ "wevia_db",
+ "twenty_db",
+ "mattermost_db",
+ "deerflow",
+ "nocodb",
+ "paperclip",
+ "langfuse"
+ ],
+ "key_tables": {
+ "kb_learnings": 5348,
+ "kb_documents": 0,
+ "ethica_medecins": 50004,
+ "enterprise_agents": 0
+ }
+ },
+ "ollama": [
+ {
+ "name": "nomic-embed-text:latest",
+ "family": "nomic-bert",
+ "params": "137M",
+ "quant": "F16",
+ "size_gb": 0.3
+ },
+ {
+ "name": "weval-brain-v3:latest",
+ "family": "qwen3",
+ "params": "4.0B",
+ "quant": "Q4_K_M",
+ "size_gb": 2.5
+ },
+ {
+ "name": "nomic-embed-text:v1.5",
+ "family": "nomic-bert",
+ "params": "137M",
+ "quant": "F16",
+ "size_gb": 0.3
+ },
+ {
+ "name": "qwen3:4b",
+ "family": "qwen3",
+ "params": "4.0B",
+ "quant": "Q4_K_M",
+ "size_gb": 2.5
+ },
+ {
+ "name": "all-minilm:latest",
+ "family": "bert",
+ "params": "23M",
+ "quant": "F16",
+ "size_gb": 0
+ }
+ ],
+ "qdrant": [
+ {
+ "name": "weval_skills",
+ "vectors": 14391
+ },
+ {
+ "name": "wevia_graph",
+ "vectors": 3
+ },
+ {
+ "name": "obsidian_vault",
+ "vectors": 46
+ },
+ {
+ "name": "kb_bpmn_flows",
+ "vectors": 0
+ },
+ {
+ "name": "kb_ethica_pharma",
+ "vectors": 16
+ },
+ {
+ "name": "kb_consulting_strategy",
+ "vectors": 0
+ },
+ {
+ "name": "wevia_learnings",
+ "vectors": 1736
+ },
+ {
+ "name": "wevia_brain_knowledge",
+ "vectors": 294
+ },
+ {
+ "name": "kb_vsm_best_practices",
+ "vectors": 0
+ },
+ {
+ "name": "kb_bpmn_patterns",
+ "vectors": 0
+ },
+ {
+ "name": "kb_dmaic_playbooks",
+ "vectors": 0
+ },
+ {
+ "name": "kb_wevads_deliv",
+ "vectors": 0
+ },
+ {
+ "name": "wevia_memory_768",
+ "vectors": 58
+ },
+ {
+ "name": "kb_test_",
+ "vectors": 0
+ },
+ {
+ "name": "wevia_kb_768",
+ "vectors": 255
+ },
+ {
+ "name": "wevia_kb",
+ "vectors": 386
+ },
+ {
+ "name": "wevia_memory",
+ "vectors": 48
+ },
+ {
+ "name": "kb_lean6sigma",
+ "vectors": 0
+ }
+ ],
+ "ai_providers": [
+ {
+ "name": "Cerebras",
+ "model": "Qwen-235B",
+ "tier": "T1",
+ "status": "active"
+ },
+ {
+ "name": "Groq",
+ "model": "Llama-4-Scout",
+ "tier": "T1",
+ "status": "active"
+ },
+ {
+ "name": "SambaNova",
+ "model": "Llama-3.3-70B",
+ "tier": "T1",
+ "status": "active"
+ },
+ {
+ "name": "NVIDIA NIM",
+ "model": "Llama-3.1-70B",
+ "tier": "T1",
+ "status": "active"
+ },
+ {
+ "name": "Together",
+ "model": "Qwen-2.5-72B",
+ "tier": "T1",
+ "status": "active"
+ },
+ {
+ "name": "Mistral",
+ "model": "Mistral-Small",
+ "tier": "T2",
+ "status": "active"
+ },
+ {
+ "name": "Cohere",
+ "model": "Command-R+",
+ "tier": "T2",
+ "status": "active"
+ },
+ {
+ "name": "Gemini",
+ "model": "Gemini-2.0-Flash",
+ "tier": "T2",
+ "status": "active"
+ },
+ {
+ "name": "DeepSeek",
+ "model": "DeepSeek-Chat",
+ "tier": "T2",
+ "status": "active"
+ },
+ {
+ "name": "OpenRouter",
+ "model": "Multi",
+ "tier": "T2",
+ "status": "active"
+ },
+ {
+ "name": "Alibaba",
+ "model": "Qwen-Max",
+ "tier": "T2",
+ "status": "active"
+ },
+ {
+ "name": "HuggingFace",
+ "model": "Inference",
+ "tier": "T3",
+ "status": "active"
+ },
+ {
+ "name": "Replicate",
+ "model": "Multi",
+ "tier": "T3",
+ "status": "active"
+ },
+ {
+ "name": "ZhiPu",
+ "model": "GLM-4",
+ "tier": "T3",
+ "status": "active"
+ },
+ {
+ "name": "Ollama Local",
+ "model": "weval-brain-v3",
+ "tier": "T0",
+ "status": "active"
+ }
+ ],
+ "crons": {
+ "s204_root": 0,
+ "s204_www": 14,
+ "s204_total": 14,
+ "key_crons": [
+ {
+ "name": "L99 Master",
+ "freq": "*\/30",
+ "target": "l99-master.py"
+ },
+ {
+ "name": "Autonomous Engine",
+ "freq": "*\/5",
+ "target": "wevia-master-autonomous"
+ },
+ {
+ "name": "L99 Pipeline",
+ "freq": "*\/15",
+ "target": "l99-pipeline.py"
+ },
+ {
+ "name": "L99 Alive",
+ "freq": "*\/10",
+ "target": "l99-alive.py"
+ },
+ {
+ "name": "Infra Guardian",
+ "freq": "*\/5",
+ "target": "infra-guardian.sh"
+ },
+ {
+ "name": "Blade Watchdog",
+ "freq": "*\/5",
+ "target": "blade-watchdog.php"
+ },
+ {
+ "name": "RAG Ingest",
+ "freq": "*\/30",
+ "target": "wevia-rag-ingest.sh"
+ },
+ {
+ "name": "Blade Orchestrator",
+ "freq": "*\/30",
+ "target": "blade-orchestrator.sh"
+ },
+ {
+ "name": "WEVIA Dream",
+ "freq": "*\/30",
+ "target": "wevia-dream-cron.php"
+ },
+ {
+ "name": "Port Protection",
+ "freq": "*\/5",
+ "target": "port-protection"
+ },
+ {
+ "name": "Watchdog",
+ "freq": "*\/3",
+ "target": "weval-watchdog.php"
+ },
+ {
+ "name": "Ethica Enrich",
+ "freq": "daily 01h",
+ "target": "ethica-enrich-v4.py"
+ },
+ {
+ "name": "Daily Brief",
+ "freq": "daily 07h",
+ "target": "weval-daily-brief.py"
+ }
+ ]
+ },
+ "wiki": {
+ "total_entries": 5349,
+ "categories": [
+ {
+ "category": "AUTO-FIX",
+ "cnt": "2951"
+ },
+ {
+ "category": "TOPOLOGY",
+ "cnt": "1042"
+ },
+ {
+ "category": "DISCOVERY",
+ "cnt": "610"
+ },
+ {
+ "category": "SYSTEMATIC",
+ "cnt": "204"
+ },
+ {
+ "category": "L99-FULLSCAN",
+ "cnt": "80"
+ },
+ {
+ "category": "INFRA",
+ "cnt": "74"
+ },
+ {
+ "category": "CONTROL-TOWER",
+ "cnt": "42"
+ },
+ {
+ "category": "ALERT",
+ "cnt": "34"
+ },
+ {
+ "category": "AGENT",
+ "cnt": "20"
+ },
+ {
+ "category": "L99-SCAN",
+ "cnt": "12"
+ },
+ {
+ "category": "FIX",
+ "cnt": "10"
+ },
+ {
+ "category": "FLEET",
+ "cnt": "8"
+ },
+ {
+ "category": "MASTER-INTENT",
+ "cnt": "6"
+ },
+ {
+ "category": "SESSION-5AVR",
+ "cnt": "5"
+ },
+ {
+ "category": "Maroc",
+ "cnt": "5"
+ },
+ {
+ "category": "Analyse",
+ "cnt": "5"
+ },
+ {
+ "category": "AUTH",
+ "cnt": "5"
+ },
+ {
+ "category": "claude_2026",
+ "cnt": "4"
+ },
+ {
+ "category": "SERVICES",
+ "cnt": "4"
+ },
+ {
+ "category": "WEVAL Consulting",
+ "cnt": "4"
+ },
+ {
+ "category": "Intelligence Artificielle",
+ "cnt": "3"
+ },
+ {
+ "category": "PARADIGM",
+ "cnt": "3"
+ },
+ {
+ "category": "INTEGRATION",
+ "cnt": "3"
+ },
+ {
+ "category": "FIX-CRITIQUE",
+ "cnt": "3"
+ },
+ {
+ "category": "Voici",
+ "cnt": "2"
+ },
+ {
+ "category": "Vous",
+ "cnt": "2"
+ },
+ {
+ "category": "Pouvez",
+ "cnt": "2"
+ },
+ {
+ "category": "Image",
+ "cnt": "2"
+ },
+ {
+ "category": "Contexte",
+ "cnt": "2"
+ },
+ {
+ "category": "L99-EXHAUSTIVE",
+ "cnt": "2"
+ },
+ {
+ "category": "L99-GAP",
+ "cnt": "2"
+ },
+ {
+ "category": "WEVAL Consulting Casablanca",
+ "cnt": "2"
+ },
+ {
+ "category": "Test",
+ "cnt": "2"
+ },
+ {
+ "category": "Salut",
+ "cnt": "2"
+ },
+ {
+ "category": "L99-E2E",
+ "cnt": "2"
+ },
+ {
+ "category": "Document",
+ "cnt": "2"
+ },
+ {
+ "category": "PROVIDERS",
+ "cnt": "2"
+ },
+ {
+ "category": "Bien",
+ "cnt": "2"
+ },
+ {
+ "category": "WEVIA",
+ "cnt": "2"
+ },
+ {
+ "category": "Diagramme",
+ "cnt": "2"
+ },
+ {
+ "category": "Comparaison",
+ "cnt": "2"
+ },
+ {
+ "category": "L99-MEGA",
+ "cnt": "2"
+ },
+ {
+ "category": "QUALITY",
+ "cnt": "2"
+ },
+ {
+ "category": "Cependant",
+ "cnt": "2"
+ },
+ {
+ "category": "MONITORING",
+ "cnt": "2"
+ },
+ {
+ "category": "L99",
+ "cnt": "2"
+ },
+ {
+ "category": "Introduction",
+ "cnt": "2"
+ },
+ {
+ "category": "Pour",
+ "cnt": "2"
+ },
+ {
+ "category": "Casablanca",
+ "cnt": "2"
+ },
+ {
+ "category": "Pourriez",
+ "cnt": "2"
+ },
+ {
+ "category": "Vistex BTP Signavio",
+ "cnt": "1"
+ },
+ {
+ "category": "Conduite",
+ "cnt": "1"
+ },
+ {
+ "category": "DMAIC",
+ "cnt": "1"
+ },
+ {
+ "category": "Industrie",
+ "cnt": "1"
+ },
+ {
+ "category": "Proposition",
+ "cnt": "1"
+ },
+ {
+ "category": "Accueil\nBienvenue",
+ "cnt": "1"
+ },
+ {
+ "category": "Logo",
+ "cnt": "1"
+ },
+ {
+ "category": "SAP ECC",
+ "cnt": "1"
+ },
+ {
+ "category": "Votre",
+ "cnt": "1"
+ },
+ {
+ "category": "Probl",
+ "cnt": "1"
+ },
+ {
+ "category": "ANTI-REGRESSION",
+ "cnt": "1"
+ },
+ {
+ "category": "Explique",
+ "cnt": "1"
+ },
+ {
+ "category": "Zero Trust",
+ "cnt": "1"
+ },
+ {
+ "category": "Augmented Generation",
+ "cnt": "1"
+ },
+ {
+ "category": "RLHF",
+ "cnt": "1"
+ },
+ {
+ "category": "Service",
+ "cnt": "1"
+ },
+ {
+ "category": "Transformer",
+ "cnt": "1"
+ },
+ {
+ "category": "Bonjour Bonjour",
+ "cnt": "1"
+ },
+ {
+ "category": "Transformation",
+ "cnt": "1"
+ },
+ {
+ "category": "Audit",
+ "cnt": "1"
+ },
+ {
+ "category": "WEVAL",
+ "cnt": "1"
+ },
+ {
+ "category": "Strat",
+ "cnt": "1"
+ },
+ {
+ "category": "Maghreb",
+ "cnt": "1"
+ },
+ {
+ "category": "ERP SAP",
+ "cnt": "1"
+ },
+ {
+ "category": "Quelle",
+ "cnt": "1"
+ },
+ {
+ "category": "Oracle",
+ "cnt": "1"
+ },
+ {
+ "category": "Data",
+ "cnt": "1"
+ },
+ {
+ "category": "Donn",
+ "cnt": "1"
+ },
+ {
+ "category": "Quel",
+ "cnt": "1"
+ },
+ {
+ "category": "Syst",
+ "cnt": "1"
+ },
+ {
+ "category": "Ahmed",
+ "cnt": "1"
+ },
+ {
+ "category": "UiPath",
+ "cnt": "1"
+ },
+ {
+ "category": "Niveau PhD",
+ "cnt": "1"
+ },
+ {
+ "category": "CLEANUP",
+ "cnt": "1"
+ },
+ {
+ "category": "Notre",
+ "cnt": "1"
+ },
+ {
+ "category": "TOUTES",
+ "cnt": "1"
+ },
+ {
+ "category": "Maroc DDMRP OTIF",
+ "cnt": "1"
+ },
+ {
+ "category": "Crit",
+ "cnt": "1"
+ },
+ {
+ "category": "SAP Vistex Revenue Management",
+ "cnt": "1"
+ },
+ {
+ "category": "Fine",
+ "cnt": "1"
+ },
+ {
+ "category": "Compare AWS Azure GCP",
+ "cnt": "1"
+ },
+ {
+ "category": "Healthcare",
+ "cnt": "1"
+ },
+ {
+ "category": "BLADE",
+ "cnt": "1"
+ },
+ {
+ "category": "Plan",
+ "cnt": "1"
+ },
+ {
+ "category": "Conseil",
+ "cnt": "1"
+ },
+ {
+ "category": "Nous",
+ "cnt": "1"
+ },
+ {
+ "category": "Zero Trust SOC SIEM",
+ "cnt": "1"
+ },
+ {
+ "category": "Amazon Web Services",
+ "cnt": "1"
+ },
+ {
+ "category": "Retiens",
+ "cnt": "1"
+ },
+ {
+ "category": "Diff",
+ "cnt": "1"
+ },
+ {
+ "category": "QDRANT",
+ "cnt": "1"
+ },
+ {
+ "category": "MITRE ATT",
+ "cnt": "1"
+ },
+ {
+ "category": "FMCG",
+ "cnt": "1"
+ },
+ {
+ "category": "Supply",
+ "cnt": "1"
+ },
+ {
+ "category": "Exercice",
+ "cnt": "1"
+ },
+ {
+ "category": "Redige",
+ "cnt": "1"
+ },
+ {
+ "category": "Supply Chain",
+ "cnt": "1"
+ },
+ {
+ "category": "Quels",
+ "cnt": "1"
+ },
+ {
+ "category": "Propose",
+ "cnt": "1"
+ },
+ {
+ "category": "Plateforme",
+ "cnt": "1"
+ },
+ {
+ "category": "Cyber",
+ "cnt": "1"
+ },
+ {
+ "category": "Tableau",
+ "cnt": "1"
+ },
+ {
+ "category": "Migration SAP",
+ "cnt": "1"
+ },
+ {
+ "category": "AUTH-AGENT",
+ "cnt": "1"
+ },
+ {
+ "category": "Fais",
+ "cnt": "1"
+ },
+ {
+ "category": "Iran",
+ "cnt": "1"
+ },
+ {
+ "category": "OLLAMA",
+ "cnt": "1"
+ },
+ {
+ "category": "Reessayez",
+ "cnt": "1"
+ },
+ {
+ "category": "MORNE WEVAL",
+ "cnt": "1"
+ },
+ {
+ "category": "Analyse SWOT",
+ "cnt": "1"
+ },
+ {
+ "category": "SAP Vistex",
+ "cnt": "1"
+ },
+ {
+ "category": "IoT WMS",
+ "cnt": "1"
+ },
+ {
+ "category": "Industry",
+ "cnt": "1"
+ },
+ {
+ "category": "What",
+ "cnt": "1"
+ },
+ {
+ "category": "Strategie",
+ "cnt": "1"
+ },
+ {
+ "category": "Rappelle",
+ "cnt": "1"
+ },
+ {
+ "category": "DMAIC Six Sigma",
+ "cnt": "1"
+ },
+ {
+ "category": "Avantages",
+ "cnt": "1"
+ },
+ {
+ "category": "Explique RLHF",
+ "cnt": "1"
+ },
+ {
+ "category": "Huawei Cloud",
+ "cnt": "1"
+ },
+ {
+ "category": "PMO SAFe",
+ "cnt": "1"
+ },
+ {
+ "category": "Migration SAP ECC",
+ "cnt": "1"
+ },
+ {
+ "category": "team_work",
+ "cnt": "1"
+ },
+ {
+ "category": "Bonjour Pr",
+ "cnt": "1"
+ },
+ {
+ "category": "Maroc DDMRP OTIF WMS TMS",
+ "cnt": "1"
+ },
+ {
+ "category": "Architecture",
+ "cnt": "1"
+ },
+ {
+ "category": "Framework NIST",
+ "cnt": "1"
+ },
+ {
+ "category": "Automatiser",
+ "cnt": "1"
+ },
+ {
+ "category": "Compare RLHF DPO Constitutional AI",
+ "cnt": "1"
+ },
+ {
+ "category": "Genere",
+ "cnt": "1"
+ },
+ {
+ "category": "Elle",
+ "cnt": "1"
+ },
+ {
+ "category": "Constitutional AI",
+ "cnt": "1"
+ },
+ {
+ "category": "Brownfield",
+ "cnt": "1"
+ },
+ {
+ "category": "Confirmation",
+ "cnt": "1"
+ },
+ {
+ "category": "Architecture IA",
+ "cnt": "1"
+ },
+ {
+ "category": "KPIs",
+ "cnt": "1"
+ },
+ {
+ "category": "Quelles",
+ "cnt": "1"
+ },
+ {
+ "category": "SWOT",
+ "cnt": "1"
+ },
+ {
+ "category": "Comparons",
+ "cnt": "1"
+ },
+ {
+ "category": "Services",
+ "cnt": "1"
+ },
+ {
+ "category": "Maroc TMA",
+ "cnt": "1"
+ },
+ {
+ "category": "Contraintes",
+ "cnt": "1"
+ },
+ {
+ "category": "Intelligence",
+ "cnt": "1"
+ },
+ {
+ "category": "Donne",
+ "cnt": "1"
+ },
+ {
+ "category": "Vistex",
+ "cnt": "1"
+ },
+ {
+ "category": "Maroc CMI",
+ "cnt": "1"
+ },
+ {
+ "category": "Audite",
+ "cnt": "1"
+ },
+ {
+ "category": "Aide",
+ "cnt": "1"
+ },
+ {
+ "category": "DKIM DMARC",
+ "cnt": "1"
+ },
+ {
+ "category": "Zero Trust SOC",
+ "cnt": "1"
+ },
+ {
+ "category": "Bonjour Yacine",
+ "cnt": "1"
+ },
+ {
+ "category": "Workshop",
+ "cnt": "1"
+ },
+ {
+ "category": "Compare RLHF DPO GRPO Constitutional AI",
+ "cnt": "1"
+ },
+ {
+ "category": "Comparatif ERP PME",
+ "cnt": "1"
+ },
+ {
+ "category": "Programme",
+ "cnt": "1"
+ },
+ {
+ "category": "SAP MM",
+ "cnt": "1"
+ },
+ {
+ "category": "Phases",
+ "cnt": "1"
+ },
+ {
+ "category": "Autres",
+ "cnt": "1"
+ },
+ {
+ "category": "FHIR",
+ "cnt": "1"
+ },
+ {
+ "category": "SESSION-7AVR",
+ "cnt": "1"
+ },
+ {
+ "category": "FHIR IA",
+ "cnt": "1"
+ },
+ {
+ "category": "MLOps",
+ "cnt": "1"
+ },
+ {
+ "category": "MIROFISH",
+ "cnt": "1"
+ },
+ {
+ "category": "Ecris",
+ "cnt": "1"
+ },
+ {
+ "category": "Suite",
+ "cnt": "1"
+ },
+ {
+ "category": "Nearshore",
+ "cnt": "1"
+ },
+ {
+ "category": "Bienvenue",
+ "cnt": "1"
+ },
+ {
+ "category": "Retrieval",
+ "cnt": "1"
+ },
+ {
+ "category": "KYC BAM",
+ "cnt": "1"
+ },
+ {
+ "category": "Afrique",
+ "cnt": "1"
+ },
+ {
+ "category": "Dans",
+ "cnt": "1"
+ },
+ {
+ "category": "Azure",
+ "cnt": "1"
+ },
+ {
+ "category": "Budget",
+ "cnt": "1"
+ },
+ {
+ "category": "INSTRUCTION SYSTEME",
+ "cnt": "1"
+ },
+ {
+ "category": "CNDP",
+ "cnt": "1"
+ },
+ {
+ "category": "Compare",
+ "cnt": "1"
+ },
+ {
+ "category": "HubSpot",
+ "cnt": "1"
+ },
+ {
+ "category": "Control",
+ "cnt": "1"
+ },
+ {
+ "category": "SESSION-6AVR",
+ "cnt": "1"
+ },
+ {
+ "category": "Bonjour Salut",
+ "cnt": "1"
+ },
+ {
+ "category": "Maroc KPIs OTIF",
+ "cnt": "1"
+ },
+ {
+ "category": "Vistex SAP",
+ "cnt": "1"
+ },
+ {
+ "category": "Traduis",
+ "cnt": "1"
+ },
+ {
+ "category": "Maroc IoT WMS",
+ "cnt": "1"
+ },
+ {
+ "category": "SaaS",
+ "cnt": "1"
+ },
+ {
+ "category": "CODE BLOCK",
+ "cnt": "1"
+ },
+ {
+ "category": "Cahier",
+ "cnt": "1"
+ },
+ {
+ "category": "Maroc FHIR",
+ "cnt": "1"
+ },
+ {
+ "category": "DESIGN",
+ "cnt": "1"
+ },
+ {
+ "category": "Compare RLHF",
+ "cnt": "1"
+ },
+ {
+ "category": "Dynamics",
+ "cnt": "1"
+ },
+ {
+ "category": "Python",
+ "cnt": "1"
+ },
+ {
+ "category": "FORMAT OBLIGATOIRE",
+ "cnt": "1"
+ },
+ {
+ "category": "SAP ERP",
+ "cnt": "1"
+ },
+ {
+ "category": "INFRA-SESSION",
+ "cnt": "1"
+ },
+ {
+ "category": "Cette",
+ "cnt": "1"
+ },
+ {
+ "category": "OWASP Top",
+ "cnt": "1"
+ },
+ {
+ "category": "Logo Weval",
+ "cnt": "1"
+ },
+ {
+ "category": "ADKAR",
+ "cnt": "1"
+ },
+ {
+ "category": "GENERAL",
+ "cnt": "1"
+ }
+ ],
+ "qdrant_vectors": 386
+ },
+ "applications": [
+ {
+ "name": "WEVIA Chatbot",
+ "type": "AI",
+ "url": "\/wevia",
+ "port": null,
+ "server": "S204",
+ "auth": "public"
+ },
+ {
+ "name": "WEVIA Admin",
+ "type": "Admin",
+ "url": "\/wevia-admin",
+ "port": null,
+ "server": "S204",
+ "auth": "php-session"
+ },
+ {
+ "name": "WEVIA Life",
+ "type": "Email AI",
+ "url": "\/products\/wevialife-app.html",
+ "port": null,
+ "server": "S204",
+ "auth": "php-session"
+ },
+ {
+ "name": "Workspace",
+ "type": "Hub",
+ "url": "\/products\/workspace.html",
+ "port": null,
+ "server": "S204",
+ "auth": "php-session"
+ },
+ {
+ "name": "Arsenal\/WEVADS",
+ "type": "Email Marketing",
+ "url": "wevads.weval-consulting.com",
+ "port": 5890,
+ "server": "S95",
+ "auth": "php-session"
+ },
+ {
+ "name": "ADX\/iResponse",
+ "type": "Email Platform",
+ "url": "wevads.weval-consulting.com",
+ "port": 5821,
+ "server": "S95",
+ "auth": "iResponse"
+ },
+ {
+ "name": "Ethica HCP",
+ "type": "Healthcare B2B",
+ "url": "consent.wevup.app",
+ "port": null,
+ "server": "S204",
+ "auth": "ethica-auth"
+ },
+ {
+ "name": "CRM (Twenty)",
+ "type": "CRM",
+ "url": "crm.weval-consulting.com",
+ "port": 3000,
+ "server": "S204",
+ "auth": "php-session"
+ },
+ {
+ "name": "Mattermost",
+ "type": "Chat",
+ "url": "mm.weval-consulting.com",
+ "port": 8065,
+ "server": "S204",
+ "auth": "php-session"
+ },
+ {
+ "name": "n8n",
+ "type": "Automation",
+ "url": "n8n.weval-consulting.com",
+ "port": 5678,
+ "server": "S204",
+ "auth": "php-session"
+ },
+ {
+ "name": "Uptime Kuma",
+ "type": "Monitoring",
+ "url": "monitor.weval-consulting.com",
+ "port": 3001,
+ "server": "S204",
+ "auth": "php-session"
+ },
+ {
+ "name": "Plausible",
+ "type": "Analytics",
+ "url": "analytics.weval-consulting.com",
+ "port": 8000,
+ "server": "S204",
+ "auth": "php-session"
+ },
+ {
+ "name": "DeerFlow",
+ "type": "AI Research",
+ "url": "deerflow.weval-consulting.com",
+ "port": 2024,
+ "server": "S204",
+ "auth": "php-session"
+ },
+ {
+ "name": "SearXNG",
+ "type": "Search",
+ "url": null,
+ "port": 8888,
+ "server": "S204",
+ "auth": "internal"
+ },
+ {
+ "name": "Qdrant",
+ "type": "Vector DB",
+ "url": null,
+ "port": 6333,
+ "server": "S204",
+ "auth": "internal"
+ },
+ {
+ "name": "Ollama",
+ "type": "LLM Runtime",
+ "url": null,
+ "port": 11434,
+ "server": "S204",
+ "auth": "internal"
+ },
+ {
+ "name": "Flowise",
+ "type": "AI Flow",
+ "url": null,
+ "port": 3088,
+ "server": "S204",
+ "auth": "internal"
+ },
+ {
+ "name": "MiroFish",
+ "type": "AI Agent",
+ "url": "mirofish.weval-consulting.com",
+ "port": 3050,
+ "server": "S204",
+ "auth": "php-session"
+ },
+ {
+ "name": "Open WebUI",
+ "type": "LLM UI",
+ "url": null,
+ "port": 3002,
+ "server": "S204",
+ "auth": "internal"
+ },
+ {
+ "name": "Vaultwarden",
+ "type": "Passwords",
+ "url": null,
+ "port": 8222,
+ "server": "S204",
+ "auth": "internal"
+ },
+ {
+ "name": "Prometheus",
+ "type": "Metrics",
+ "url": null,
+ "port": 9000,
+ "server": "S204",
+ "auth": "internal"
+ },
+ {
+ "name": "PMTA",
+ "type": "MTA",
+ "url": null,
+ "port": 25,
+ "server": "S95",
+ "auth": "internal"
+ },
+ {
+ "name": "KumoMTA",
+ "type": "MTA",
+ "url": null,
+ "port": 8010,
+ "server": "S95",
+ "auth": "internal"
+ },
+ {
+ "name": "Sentinel",
+ "type": "Orchestrator",
+ "url": null,
+ "port": 5890,
+ "server": "S95",
+ "auth": "internal"
+ }
+ ],
+ "cloud": [
+ {
+ "provider": "Hetzner",
+ "role": "S204+S95",
+ "type": "Bare Metal",
+ "region": "Germany"
+ },
+ {
+ "provider": "OVH",
+ "role": "S151 DR\/Tracking",
+ "type": "VPS",
+ "region": "France"
+ },
+ {
+ "provider": "Cloudflare",
+ "role": "CDN+DNS+WAF",
+ "type": "SaaS",
+ "region": "Global"
+ },
+ {
+ "provider": "Huawei Cloud",
+ "role": "Partner Certifié",
+ "type": "IaaS",
+ "region": "MENA"
+ },
+ {
+ "provider": "Scaleway",
+ "role": "GPU Inference",
+ "type": "IaaS",
+ "region": "France"
+ }
+ ],
+ "partnerships": [
+ "SAP Gold Partner",
+ "Huawei Cloud",
+ "Vistex",
+ "IQVIA",
+ "Scaleway"
+ ],
+ "ux_agent": {
+ "pass": 3,
+ "fail": 0,
+ "warn": 0,
+ "total": 3,
+ "timestamp": "",
+ "gauge_health_center": "X=0px Y=0px",
+ "gauge_auto_center": "X=0px Y=0px",
+ "design_tokens": {
+ "bg": "#09090b",
+ "card": "#18181b",
+ "font": "Inter"
+ }
+ },
+ "l99": {
+ "master": {
+ "total": 93,
+ "pass": 89,
+ "fail": 2,
+ "timestamp": "2026-04-07T01:32:48.454012"
+ },
+ "auth": {
+ "pass": 24,
+ "fail": 0
+ }
+ },
+ "cortex": {
+ "fast_lines": 3620,
+ "router_lines": 6152,
+ "router_functions": 17,
+ "today_requests": 0,
+ "today_cost": 0,
+ "avg_latency_ms": 0,
+ "top_provider": "N\/A",
+ "providers_used": 0
+ },
+ "optimizations": {
+ "recent_commits": [],
+ "auto_fixes": [
+ {
+ "fact": "AUTONOMY 17Apr 14:45: 1 fixes. Restart php-fpm",
+ "created_at": "2026-04-17 16:45:05.798814"
+ },
+ {
+ "fact": "AUTONOMY 17Apr 14:40: 1 fixes. Restart php-fpm",
+ "created_at": "2026-04-17 16:40:05.635994"
+ },
+ {
+ "fact": "AUTONOMY 17Apr 12:20: 1 fixes. Disk light cleanup 86%",
+ "created_at": "2026-04-17 14:20:05.038274"
+ },
+ {
+ "fact": "AUTONOMY 17Apr 12:15: 1 fixes. Disk light cleanup 86%",
+ "created_at": "2026-04-17 14:15:05.314885"
+ },
+ {
+ "fact": "AUTONOMY 17Apr 12:10: 1 fixes. Disk light cleanup 86%",
+ "created_at": "2026-04-17 14:10:04.576512"
+ },
+ {
+ "fact": "AUTONOMY 17Apr 12:05: 1 fixes. Disk light cleanup 86%",
+ "created_at": "2026-04-17 14:05:04.781065"
+ },
+ {
+ "fact": "AUTONOMY 17Apr 12:00: 1 fixes. Disk light cleanup 86%",
+ "created_at": "2026-04-17 14:00:08.575857"
+ },
+ {
+ "fact": "AUTONOMY 17Apr 11:55: 1 fixes. Disk light cleanup 86%",
+ "created_at": "2026-04-17 13:55:05.473942"
+ },
+ {
+ "fact": "AUTONOMY 17Apr 11:50: 1 fixes. Disk light cleanup 86%",
+ "created_at": "2026-04-17 13:50:05.14896"
+ },
+ {
+ "fact": "AUTONOMY 17Apr 11:45: 1 fixes. Disk light cleanup 86%",
+ "created_at": "2026-04-17 13:45:05.891174"
+ }
+ ],
+ "architecture_decisions": [
+ {
+ "fact": "Crons: root=51 www-data=55 cron.d=72 total=178",
+ "created_at": "2026-04-13 00:30:48.940882"
+ },
+ {
+ "fact": "Crons: root=51 www-data=55 cron.d=70 total=176",
+ "created_at": "2026-04-12 20:30:07.357094"
+ },
+ {
+ "fact": "Crons: root=51 www-data=55 cron.d=70 total=176",
+ "created_at": "2026-04-12 18:30:05.962933"
+ },
+ {
+ "fact": "Crons: root=51 www-data=55 cron.d=70 total=176",
+ "created_at": "2026-04-12 16:30:13.56815"
+ },
+ {
+ "fact": "Crons: root=51 www-data=57 cron.d=70 total=178",
+ "created_at": "2026-04-12 14:30:11.101941"
+ },
+ {
+ "fact": "Crons: root=51 www-data=57 cron.d=70 total=178",
+ "created_at": "2026-04-12 12:30:08.795912"
+ },
+ {
+ "fact": "Crons: root=51 www-data=57 cron.d=70 total=178",
+ "created_at": "2026-04-12 10:30:04.181935"
+ },
+ {
+ "fact": "Crons: root=51 www-data=57 cron.d=70 total=178",
+ "created_at": "2026-04-12 08:30:04.196728"
+ },
+ {
+ "fact": "Crons: root=51 www-data=57 cron.d=70 total=178",
+ "created_at": "2026-04-12 06:30:04.792965"
+ },
+ {
+ "fact": "Crons: root=51 www-data=57 cron.d=70 total=178",
+ "created_at": "2026-04-12 04:30:06.68899"
+ },
+ {
+ "fact": "Crons: root=51 www-data=57 cron.d=70 total=178",
+ "created_at": "2026-04-12 02:30:07.207832"
+ },
+ {
+ "fact": "Crons: root=51 www-data=54 cron.d=69 total=174",
+ "created_at": "2026-04-12 00:30:13.084556"
+ },
+ {
+ "fact": "Crons: root=50 www-data=52 cron.d=69 total=171",
+ "created_at": "2026-04-11 22:30:07.088896"
+ },
+ {
+ "fact": "Crons: root=50 www-data=52 cron.d=69 total=171",
+ "created_at": "2026-04-11 20:30:08.94444"
+ },
+ {
+ "fact": "Crons: root=50 www-data=48 cron.d=69 total=167",
+ "created_at": "2026-04-11 18:30:04.55611"
+ }
+ ],
+ "pipelines": [
+ {
+ "name": "CORTEX Smart Router",
+ "status": "active",
+ "desc": "T0 Ollama → T1 Free APIs → T2 Fallbacks",
+ "routes": 3620
+ },
+ {
+ "name": "RAG Ingest",
+ "status": "active",
+ "desc": "Cron *\/30 → Qdrant semantic indexing",
+ "freq": "*\/30"
+ },
+ {
+ "name": "L99 Quality Gate",
+ "status": "active",
+ "desc": "253+ tests, 28 auth tests",
+ "freq": "*\/30"
+ },
+ {
+ "name": "Blade Orchestrator",
+ "status": "active",
+ "desc": "GPU polling + model sync",
+ "freq": "*\/30"
+ },
+ {
+ "name": "Infra Guardian",
+ "status": "active",
+ "desc": "Auto-restart nginx\/php\/docker",
+ "freq": "*\/5"
+ },
+ {
+ "name": "Ethica Scraper Pipeline",
+ "status": "active",
+ "desc": "4 spiders, RichScraper, SearXNG",
+ "freq": "daily"
+ },
+ {
+ "name": "WEVIA Dream",
+ "status": "active",
+ "desc": "Background learning + dataset enrichment",
+ "freq": "*\/30"
+ },
+ {
+ "name": "Daily Brief",
+ "status": "active",
+ "desc": "Morning synthesis → Mattermost",
+ "freq": "daily 07h"
+ },
+ {
+ "name": "Architecture Scanner",
+ "status": "active",
+ "desc": "This page — auto-scan + recommendations",
+ "freq": "*\/30"
+ }
+ ],
+ "agents_deployed": [
+ {
+ "name": "Monitor Agent",
+ "role": "Watches all services, auto-restarts",
+ "status": "active"
+ },
+ {
+ "name": "DevOps Agent",
+ "role": "Git sync, deployment, rollback",
+ "status": "active"
+ },
+ {
+ "name": "Ethica Agent",
+ "role": "HCP scraping, validation, enrichment",
+ "status": "active"
+ },
+ {
+ "name": "Security Agent",
+ "role": "Key rotation, secret scan, vulnerability check",
+ "status": "active"
+ },
+ {
+ "name": "Blade Agent",
+ "role": "GPU orchestration, model management",
+ "status": "active"
+ },
+ {
+ "name": "Dream Agent",
+ "role": "Background learning, dataset generation",
+ "status": "active"
+ },
+ {
+ "name": "RAG Agent",
+ "role": "Knowledge ingestion, vector indexing",
+ "status": "active"
+ },
+ {
+ "name": "Quality Agent",
+ "role": "L99 NonReg, regression detection",
+ "status": "active"
+ }
+ ]
+ },
+ "mirofish": {
+ "status": "active",
+ "reports": 0,
+ "bridge": "\/api\/mirofish-bridge.php"
+ },
+ "recommendations": {
+ "score": 100,
+ "total": 0,
+ "critical": 0,
+ "warning": 0,
+ "info": 0,
+ "opportunity": 0,
+ "auto_fixed": 0,
+ "fixes_log": [],
+ "recommendations": []
+ },
+ "scan_time_ms": 2240,
+ "gaps": [],
+ "score": 100,
+ "automation": {
+ "coverage": 100,
+ "steps": 30,
+ "total": 30
+ }
+}
\ No newline at end of file
diff --git a/api/blade-actions-surfaced.json b/api/blade-actions-surfaced.json
index 4deb0965f..6fbb27c63 100644
--- a/api/blade-actions-surfaced.json
+++ b/api/blade-actions-surfaced.json
@@ -1,5 +1,5 @@
{
- "generated_at": "2026-04-18T01:25:01.729003",
+ "generated_at": "2026-04-18T01:30:02.228151",
"stats": {
"total": 47,
"pending": 57,
diff --git a/api/ux-agent-report.json b/api/ux-agent-report.json
index 8bc79b8be..776a2cb54 100644
--- a/api/ux-agent-report.json
+++ b/api/ux-agent-report.json
@@ -1,5 +1,5 @@
{
- "timestamp": "2026-04-18T01:00:12",
+ "timestamp": "2026-04-18T01:30:11",
"features": {
"total": 36,
"pass": 35
@@ -13,7 +13,7 @@
"score": 97.2,
"log": [
"=== UX AGENT v1.0 ===",
- "Time: 2026-04-18 01:00:01",
+ "Time: 2026-04-18 01:30:02",
" core: 4/4",
" layout: 3/4",
" interaction: 6/6",
diff --git a/cartographie-screens.html b/cartographie-screens.html
index b41db0eb2..99770d101 100644
--- a/cartographie-screens.html
+++ b/cartographie-screens.html
@@ -70,7 +70,7 @@ select{padding:10px;background:#0a0e27;color:#fff;border:1px solid #3d4476;borde
@@ -89,8 +89,8 @@ select{padding:10px;background:#0a0e27;color:#fff;border:1px solid #3d4476;borde
+