606 lines
49 KiB
PHP
606 lines
49 KiB
PHP
<?php
|
|
@require_once __DIR__ . '/wevia-sanitizer-guard.php'; // WAVE 206 sanitizer guard
|
|
|
|
/**
|
|
* ============================================================
|
|
* weval-technology-platform-api.php v2 — WTP complete backend
|
|
* Doctrine 90 — WEVAL Technology Platform (ERP-like portal)
|
|
* Rebuild exhaustif 17avr 2026 — Opus session
|
|
* ============================================================
|
|
* 15 modules ERP : Intelligence · Commerce · Finance · Marketing ·
|
|
* Growth · RH · Supply · Operations · ERP-Integrations · Comms ·
|
|
* Security · Development · Knowledge · Multimodal · RnD
|
|
*
|
|
* Couverture: 568 HTML S204 + 226 HTML S95 + 651+1695 PHP APIs
|
|
* 13 subdomains + 19 Docker + 25+ OSS apps + 5 Ollama models
|
|
* ============================================================
|
|
* SAFETY: read-only, Redis cache 60s, zero write, whitelist only
|
|
* ============================================================
|
|
*/
|
|
header('Content-Type: application/json; charset=utf-8');
|
|
header('Access-Control-Allow-Origin: *');
|
|
header('Cache-Control: max-age=30');
|
|
|
|
$start = microtime(true);
|
|
$redis = null;
|
|
try {
|
|
$redis = new Redis();
|
|
@$redis->connect('127.0.0.1', 6380, 0.5);
|
|
if (!($redis && $redis->ping())) { $redis = null; }
|
|
} catch (Throwable $e) { $redis = null; }
|
|
|
|
$lite = !empty($_GET['lite']);
|
|
$mod_filter = $_GET['module'] ?? null;
|
|
$ver = 'v2.0-d90';
|
|
|
|
$cache_key = 'wtp2:tree:' . ($lite ? 'lite' : 'full') . ':' . ($mod_filter ?: 'all');
|
|
if ($redis) {
|
|
$cached = $redis->get($cache_key);
|
|
if ($cached) {
|
|
header('X-Cache: HIT');
|
|
echo $cached;
|
|
exit;
|
|
}
|
|
}
|
|
|
|
// ========== 15 ERP MODULES ==========
|
|
$modules = [
|
|
// ===== 1. INTELLIGENCE IA =====
|
|
'intelligence' => [
|
|
'label' => 'Intelligence IA',
|
|
'icon' => '🧠',
|
|
'color' => '#6366f1',
|
|
'tagline' => 'IA souveraine, 950 agents, chatbots, meta-AI, 13 providers',
|
|
'submodules' => [
|
|
['id' => 'enterprise_complete', 'label' => '🏢 Enterprise Complete (V73)', 'desc' => 'Vue 20 depts · 169 KPIs · gap agents · macro process (S/4HANA killer)', 'pages' => ['enterprise-complete.html', 'enterprise-model.html'], 'apis' => ['/api/wevia-v70-enterprise-complete.php', '/api/wevia-v71-intelligence-growth.php']],
|
|
['id' => 'erp_launchpad', 'label' => '🚀 ERP Launchpad (V73)', 'desc' => 'Next-gen Fiori UX · Cmd-K search · favoris · drag · beats S/4HANA', 'pages' => ['erp-launchpad.html'], 'apis' => ['/api/weval-technology-platform-api.php']],
|
|
|
|
['id' => 'wevia_master', 'label' => 'WEVIA Master AI', 'desc' => 'Orchestrator autonome multi-agents', 'pages' => ['wevia-master.html', 'wevia.html', 'wevia-ia/wevia.html', 'wevia-cortex.html', 'wevia-orchestrator.html', 'wevia-evolution.html', 'wevia-training.html', 'wevia-hub.html', 'wevia-widget.html', 'wevia-em-big4.html', 'wevia-em-big4-v2.html', 'wevia-em-linkedin-carousel.html', 'wevia-em-linkedin-carousel-v3.html', 'wevia-v4.html', 'wevia-console.html', 'wevia-go-live.html', 'wevia-vs-opus.html', 'wevia-legacy.html', 'wevia-master-legacy.html', 'wevia-demo-autonomous.html'], 'apis' => ['/api/wevia-chat.php', '/api/wevia-sse-orchestrator.php', '/api/wevia-json-api.php', '/api/wevia-fast-path-v3.php', '/api/wevia-autonomy-dashboard.php', '/api/wevia-autonomous.php']],
|
|
['id' => 'sovereign_cascade', 'label' => 'Sovereign Cascade v3 port 4000 (13 providers 0 EUR)', 'desc' => '13 LLM cascade - Cerebras-fast primary + Cerebras-think + Groq + Cloudflare-AI + Gemini + SambaNova + NVIDIA-NIM + Mistral + Groq-OSS + HF-Space + HF-Router + OpenRouter + GitHub-Models - auto-failover expired tokens', 'pages' => ['ai-hub.html', 'ia-sovereign-registry.html', 'ia-registre.html', 'ecosysteme-ia-maroc.html', 'sovereign-claude.html'], 'apis' => ['http://127.0.0.1:4000/v1/chat/completions', 'http://127.0.0.1:4000/health']],
|
|
['id' => 'gpu_training_free', 'label' => 'GPU Free Stack 6/6 (Kaggle+Colab+HF+Ollama+Sovereign+vLLM)', 'desc' => '6 backends 100pct LIVE: Kaggle T4 16GB 30h/week free + Colab T4 12h/session + HF Spaces yace222 Zero-GPU 80h/week + Ollama local S204 CPU 7 models + Sovereign-API v3 port 4000 (13 providers Cerebras primary) + vLLM /opt/vllm - Fine-tune Qwen2.5-3B', 'pages' => ['gpu-hub.html', 'huggingface-hub.html', 'ai-benchmark.html'], 'apis' => ['/api/gpu-free-stack.php', '/api/token-health-real.php', '/api/openclaw-proxy.php', 'http://127.0.0.1:4000/health']],
|
|
['id' => 'chatbots_metier', 'label' => 'Chatbots métier', 'desc' => 'Ethica/DeepSeek/OpenClaw/Claw/Director/Wevia', 'pages' => ['ethica-chatbot.html', 'claw-chat.html', 'director-chat.html', 'wevia-chat.html', 'deepseek-hub.html', 'deepseek.html', 'openclaw.html', 'claw-code.html'], 'apis' => ['/api/ethica-brain.php', '/api/wedroid-brain-api.php', '/api/weval-chatbot-api.php']],
|
|
['id' => 'agents_fleet', 'label' => 'Agents Fleet (950 agents / 2484 skills)', 'desc' => 'Paperclip + CrewAI + AIOS + DeepAgent + Astron', 'pages' => ['agents-hub.html', 'agents-archi.html', 'agents-fleet.html', 'agents-alive.html', 'agents-3d.html', 'agents-goodjob.html', 'agents-valuechain.html', 'agents-unified-registry.html', 'agents-enterprise.html', 'agents-final.html', 'agents-hd.html', 'agents-ia.html', 'agents-iso3d.html'], 'apis' => ['http://127.0.0.1:3100/', '/api/agents-catalog-api.php', '/api/agents-census.php']],
|
|
['id' => 'meta_ia', 'label' => 'Meta-IA & Brain', 'desc' => 'weval-brain-v4 fine-tuned / L99 / DeerFlow', 'pages' => ['brain-center-tenant.html', 'l99-brain.html', 'l99.html', 'l99-v2.html', 'l99-fullscreen.html', 'deerflow-hub.html'], 'apis' => ['/api/weval-ia-fast.php', '/api/opus-arch-continuous-ft.php', '/api/opus-arch-predictive-heal.php']],
|
|
['id' => 'top_ia_stack', 'label' => 'Top-IA Stack (37 scripts)', 'desc' => 'memory, reasoning, multimodal, ops, RGPD, auto-heal', 'path' => '/opt/weval-ops/top-ia/', 'scripts' => ['memory_store', 'memory_recall', 'cot_tree', 'reflect_loop', 'speculative_decode', 'speculative_parallel', 'dialectical', 'self_consistency', 'self_heal', 'self_heal_infra', 'deep_search', 'sentiment', 'ocr_image', 'audio_transcribe', 'audio_synthesize', 'sdxl_generate', 'prefix_cache', 'proactive_scan', 'benchmark', 'finetune_prep', 'audit_log', 'audit_query', 'rgpd_forget', 'anonymize_log', 'log_encrypt', 'plugin_loader', 'plugin_store', 'procedural_remember', 'few_shot', 'refactor_sandbox', 'sync_tout', 'trainer_status', 'gpu_quotas', 'auto_scale_fpm', 'meta_cognition_hook', 'self_reflect']],
|
|
['id' => 'qdrant_kb', 'label' => 'Qdrant Vector KB (17 collections)', 'desc' => 'kb_ethica_pharma 16 pts / kb_consulting / kb_bpmn / weval_skills / wevia_graph', 'apis' => ['http://127.0.0.1:6333/collections']],
|
|
['id' => 'ollama_local', 'label' => 'Ollama local (5 models)', 'desc' => 'weval-brain-v4 2.5GB / qwen3:4b / nomic-embed / all-minilm', 'apis' => ['http://127.0.0.1:11434/api/tags']],
|
|
['id' => 'oss_ai_apps', 'label' => 'OSS AI apps', 'pages' => ['anthropic-hub.html', 'huggingface-hub.html', 'qdrant-hub.html', 'sovereign-claude.html', 'sovereign-monitor.html'], 'desc' => 'AnythingLLM · CrewAI · AIOS · DeepAgent · SuperClaude · HolyClaude · Flowise · LiteLLM · LocalAI · vLLM', 'path' => '/opt/'],
|
|
['id' => 'intelligence_growth', 'label' => 'Intelligence & Growth (V71)', 'desc' => 'DarkScout competitors + WEVL Predict innovations + Agility agents + Lead Hub + Opportunities', 'pages' => ['intelligence-growth.html'], 'apis' => ['/api/wevia-v71-intelligence-growth.php']],
|
|
['id' => 'living_proof', 'label' => '🎬 Living Proof (Video Scenario Testing)', 'desc' => 'Video proofs Playwright · 4 scenarios · coverage 30.8% → 100% goal · WEVIA relance', 'pages' => ['living-proof.html'], 'apis' => ['/api/living-proof-api.php']],
|
|
['id' => 'paperclip', 'label' => 'Paperclip Agent Runtime', 'desc' => 'Execution runtime multi-agents', 'pages' => ['paperclip-hub.html', 'paperclip.html'], 'apis' => []]
|
|
]
|
|
],
|
|
// ===== 2. COMMERCE =====
|
|
'commerce' => [
|
|
'label' => 'Commerce & Sales',
|
|
'icon' => '💼',
|
|
'color' => '#10b981',
|
|
'tagline' => 'CRM, leads, opportunities, pipeline, candidates',
|
|
'submodules' => [
|
|
['id' => 'sales_hub', 'label' => '🚀 Sales Hub (V72)', 'desc' => 'Cockpit commercial: opps urgent + SDR messages + ROI Simulator + Board Pack + pitch + templates', 'pages' => ['sales-hub.html', 'pitch.html'], 'apis' => ['/api/wevia-v72-intents-include.php', '/api/v72-sdr-outreach.sh', '/api/v72-pipeline-status.sh'], 'downloads' => ['/downloads/weval-board-pack-2026-04-18.pdf', '/downloads/weval-sdr-outreach-20260418.md']],
|
|
['id' => 'crm_maison', 'label' => 'CRM Maison', 'desc' => 'Schema PG crm sur S204 + CRM subdomain', 'pages' => ['crm.html', 'crm-audit.html', 'crm-dashboard-live.html', 'crm-pipeline-live.html'], 'apis' => ['https://crm.weval-consulting.com/']],
|
|
['id' => 'twenty_crm', 'label' => 'Twenty CRM OSS', 'desc' => 'Docker twenty + twenty-redis', 'apis' => ['http://127.0.0.1:3000/'], 'docker' => 'twenty'],
|
|
['id' => 'candidates_pool', 'label' => 'Candidates Pool', 'desc' => 'Recruteurs, talents', 'pages' => ['candidates-pool.html', 'candidate-detail.html', 'consultants-list.html']],
|
|
['id' => 'sales_pipeline', 'label' => 'Sales Pipeline', 'pages' => ['kaouther-compose.html', 'partners-emails.html', 'director.html', 'solution-finder.html', 'use-cases.html', 'case-studies.html', 'booking.html', 'pricing.html', 'trust-center.html']],
|
|
['id' => 'integrations_mp', 'label' => 'Integrations Marketplace', 'pages' => ['integrations-marketplace.html']],
|
|
['id' => 'v65_offer', 'label' => 'Offre ERP Gap-Fill (V65)', 'desc' => 'Catalogue commercial : matrice risques 5x5, 7 verticaux, 33 gaps ERPs', 'pages' => ['erp-gap-fill-offer.html'], 'apis' => ['/api/wevia-v65-risk-erp-gaps.php']],
|
|
['id' => 'v66_atlas', 'label' => 'Pain Points Atlas (V66)', 'desc' => 'Tous ERPs du marche + 35 pain points + agents + savings', 'pages' => ['pain-points-atlas.html'], 'apis' => ['/api/wevia-v66-all-erps-painpoints.php']],
|
|
['id' => 'v67_simulator', 'label' => 'ROI Simulator (V67)', 'desc' => 'Simulateur quanti+quali par agent, scaling client', 'pages' => ['agent-roi-simulator.html'], 'apis' => ['/api/wevia-v67-roi-simulator.php']]
|
|
]
|
|
],
|
|
// ===== 3. FINANCE & COMPTABILITÉ =====
|
|
'finance' => [
|
|
'label' => 'Finance & Comptabilité',
|
|
'icon' => '💰',
|
|
'color' => '#f97316',
|
|
'tagline' => 'Contrats, devis, factures, paiements, compta, Stripe',
|
|
'submodules' => [
|
|
['id' => 'quote_to_cash', 'label' => 'Quote-to-Cash Cycle', 'desc' => 'Mission-billing / Quote → Invoice → Contract', 'pages' => ['mission-billing.html'], 'apis' => ['/api/quote-api.php', '/api/invoice-api.php', '/api/contract-api.php']],
|
|
['id' => 'contracts', 'label' => 'Contracts', 'apis' => ['/api/contract-api.php']],
|
|
['id' => 'invoicing', 'label' => 'Invoicing', 'apis' => ['/api/invoice-api.php']],
|
|
['id' => 'quotes', 'label' => 'Quotes & Devis', 'apis' => ['/api/quote-api.php']],
|
|
['id' => 'stripe_payments', 'label' => 'Stripe Payments (live)', 'desc' => 'sk_live + pk_live + acct', 'apis' => ['/api/stripe.php', '/api/stripe-webhook.php']],
|
|
['id' => 'billing_db', 'label' => 'PG schema billing', 'desc' => 'Schema dédié PG S204'],
|
|
['id' => 'gap_detector', 'label' => 'Gap Detector / AI Gap', 'desc' => 'Cron weval-ai-gap + weval-gap-detector', 'apis' => ['/api/gap-detector.json']],
|
|
['id' => 'accounting', 'label' => 'Comptabilité (wired stub)', 'status' => 'wired_stub', 'desc' => 'Module comptable stub wiré — fill accounting.* tables pour activer', 'apis' => ['/api/accounting-api.php']],
|
|
['id' => 'enterprise_complete_v73', 'label' => '🏢 Enterprise Complete V73', 'desc' => '20 depts + 169 KPIs + 12 gap agents Scrum/SAFe/DevOps + 9 innovations today + 8 macro processes R2R/O2C/P2P/H2R/M2L/D2D · avatars unifiés registry', 'pages' => ['enterprise-complete.html', 'enterprise-complete-v73.html'], 'apis' => ['/api/wevia-v70-enterprise-complete.php', '/api/wevia-v71-intelligence-growth.php', '/api/agent-avatars.json']],
|
|
['id' => 'v70_enterprise', 'label' => 'Enterprise Complete (V70)', 'desc' => '20 departements 169 KPIs 61 integrations universelles', 'pages' => ['enterprise-complete.html'], 'apis' => ['/api/wevia-v70-enterprise-complete.php']]
|
|
]
|
|
],
|
|
// ===== 4. MARKETING & EMAIL =====
|
|
'marketing' => [
|
|
'label' => 'Marketing & Email',
|
|
'icon' => '📧',
|
|
'color' => '#f59e0b',
|
|
'tagline' => 'Ethica 146K HCPs · WEVADS 1432 écrans · PMTA · Listmonk',
|
|
'submodules' => [
|
|
['id' => 'ethica_pharma', 'label' => 'Ethica Pharma B2B Maghreb (146 694 HCPs)', 'desc' => 'DZ 107K · MA 19K · TN 17K · INTL 1.8K', 'pages' => ['ethica-hub.html', 'ethica-chatbot.html', 'ethica-country.html', 'ethica-dashboard-live.html', 'ethica-hcp-manager.html', 'ethica-monitor.html', 'ethica-pipeline.html', 'ethica-login.html', 'medreach-campaign.html', 'medreach-dashboard.html'], 'apis' => ['/api/ethica-brain.php', '/api/ethica-stats-api.php', 'https://consent.wevup.app/']],
|
|
['id' => 'wevads_arsenal', 'label' => 'WEVADS Arsenal (1432 écrans, S95)', 'desc' => 'Apache:5890 + 226 HTML + 1695 PHP', 'pages' => ['https://wevads.weval-consulting.com/', 'https://wevads.weval-consulting.com/advanced-dashboard.html', 'https://wevads.weval-consulting.com/pipeline-monitor.html', 'https://wevads.weval-consulting.com/emailing-pipeline.html', 'https://wevads.weval-consulting.com/offer-engine.html', 'https://wevads.weval-consulting.com/scout-intelligence.html', 'https://wevads.weval-consulting.com/lookalike-engine.html', 'https://wevads.weval-consulting.com/data-manager.html', 'https://wevads.weval-consulting.com/scrapping-factory.html', 'https://wevads.weval-consulting.com/account-creator.html', 'https://wevads.weval-consulting.com/cloudflare-manager.html']],
|
|
['id' => 'mta_stack', 'label' => 'MTA Stack', 'desc' => 'PMTA 4.5r8 port 25 · KumoMTA port 587/8010 · dual vhost 5821+5890', 'status' => 'live'],
|
|
['id' => 'deliverability', 'label' => 'Deliverability & Warmup', 'desc' => 'Warmup 1783 accounts · 77170 emails/jour cap', 'pages' => ['warmup-manager.html', 'office-senders-diag.html']],
|
|
['id' => 'listmonk', 'label' => 'Listmonk Newsletter (OSS)', 'apis' => ['http://127.0.0.1:9000/'], 'docker' => 'listmonk'],
|
|
['id' => 'consent_rgpd', 'label' => 'Consent RGPD (consent.wevup.app)', 'pages' => ['privacy-policy.html', 'data-deletion.html', 'cgu.html', 'terms-of-service.html'], 'apis' => []],
|
|
['id' => 'wevads_ia', 'label' => 'WEVADS IA Hub', 'pages' => ['wevads-ia/'], 'apis' => []],
|
|
['id' => 'wevads_hub', 'label' => 'WEVADS Hub Central', 'desc' => 'Hub central plateforme emailing', 'pages' => ['wevads-hub.html'], 'apis' => []],
|
|
['id' => 'wevads_perf', 'label' => 'WEVADS Performance', 'desc' => 'Metrics deliverability/inbox/warmup', 'pages' => ['wevads-performance.html'], 'apis' => []]
|
|
]
|
|
],
|
|
// ===== 5. GROWTH & ANALYTICS =====
|
|
'growth' => [
|
|
'label' => 'Growth & Analytics',
|
|
'icon' => '🌱',
|
|
'color' => '#ec4899',
|
|
'tagline' => 'Growth engine, social, LinkedIn, Plausible, Langfuse',
|
|
'submodules' => [
|
|
['id' => 'growth_engine', 'label' => 'Growth Engine v2', 'pages' => ['growth-engine-v2.html', 'growth-engine.html']],
|
|
['id' => 'social_media', 'label' => 'Social Media Orchestrator', 'apis' => ['/api/social-media-api.php']],
|
|
['id' => 'linkedin', 'label' => 'LinkedIn Automation (V96-V98 Full Auto)', 'desc' => 'Sovereign Ollama gen + control center + browser auto-publish via Playwright', 'pages' => ['linkedin-automation-v96.html', 'linkedin-control-v97.html', 'linkedin-control-v98.html', 'linkedin-wave3-calendar.php', 'linkedin-posts-wave2.php'], 'apis' => ['/api/v96-linkedin-automation.php', '/api/v97-linkedin-control.php', '/api/v98-linkedin-browser.php', '/api/linkedin-alignment-kpi.php']],
|
|
['id' => 'analytics_kpi', 'label' => 'Analytics KPI 15 depts', 'pages' => ['kpi-15depts-live.html', 'kpi-live-dashboard.html', 'dashboards-hub.html'], 'apis' => ['/api/wevia-control-kpis.php']],
|
|
['id' => 'plausible', 'label' => 'Plausible Analytics', 'desc' => 'analytics subdomain', 'apis' => ['https://analytics.weval-consulting.com/'], 'docker' => 'plausible-plausible-1'],
|
|
['id' => 'langfuse', 'label' => 'Langfuse (LLM observability)', 'desc' => 'langfuse subdomain', 'apis' => ['https://langfuse.weval-consulting.com/'], 'docker' => 'langfuse'],
|
|
['id' => 'ai_benchmark', 'label' => 'AI Benchmark', 'pages' => ['ai-benchmark.html', 'ultimate-quality.html']],
|
|
['id' => 'tech_radar', 'label' => 'Technology Radar', 'pages' => ['technology-radar.html', 'architecture.html', 'architecture-map.html', 'architecture-live.html']]
|
|
]
|
|
],
|
|
// ===== 6. RH & TALENT =====
|
|
'hr' => [
|
|
'label' => 'RH & Talent',
|
|
'icon' => '👥',
|
|
'color' => '#0ea5e9',
|
|
'tagline' => 'Recrutement, agents, paperclip, meetings',
|
|
'submodules' => [
|
|
['id' => 'candidates_pool', 'label' => 'Candidates Pool', 'pages' => ['candidates-pool.html', 'candidate-detail.html']],
|
|
['id' => 'virtual_workforce', 'label' => 'Virtual Workforce (950 agents)', 'pages' => ['agents-enterprise.html', 'agents-valuechain.html']],
|
|
['id' => 'paperclip_agents', 'label' => 'Paperclip Agents Runtime', 'desc' => 'paperclip subdomain · port 3100', 'apis' => ['http://127.0.0.1:3100/', 'https://paperclip.weval-consulting.com/']],
|
|
['id' => 'meeting_rooms', 'label' => 'Meeting Rooms & Daily Standup', 'desc' => 'meetings populator + weekly + archi', 'pages' => ['wevia-meeting-rooms.html', 'wevia-meetings.html'], 'apis' => ['/api/meeting-rooms-data.json', '/api/meeting-daily-latest.json', '/api/meeting-weekly-latest.json']],
|
|
['id' => 'daily_brief', 'label' => 'Daily Brief', 'desc' => 'weval-daily-brief cron', 'path' => '/opt/weval-daily-brief.py']
|
|
]
|
|
],
|
|
// ===== 7. SUPPLY & DATA =====
|
|
'supply' => [
|
|
'label' => 'Supply & Data',
|
|
'icon' => '📦',
|
|
'color' => '#84cc16',
|
|
'tagline' => 'Master data · scrapers · DB 6.4M contacts',
|
|
'submodules' => [
|
|
['id' => 'master_inventory', 'label' => 'Master Inventory WEVAL', 'pages' => ['weval-master-inventory.html', 'weval-ops-screens.html', 'cartographie-screens.html'], 'apis' => ['/api/wem-inventory.json']],
|
|
['id' => 'pg_databases', 'label' => 'PG Databases', 'desc' => '12 DBs S204 + 15 DBs S95 · schemas admin/billing/brain/crm/ethica/weval'],
|
|
['id' => 'adx_contacts', 'label' => 'PG adx_clients (6.4M contacts)', 'desc' => 'Source email pool WEVADS', 'pages' => ['contacts-segmentation-dashboard.html', 'database-dashboard-live.html']],
|
|
['id' => 'ethica_data', 'label' => 'PG ethica.medecins_real (146K HCPs)', 'desc' => 'Live source pharma B2B'],
|
|
['id' => 'scrapers', 'label' => 'Scrapers (Dabadoc · Tabibi · Pharma MA · Mass TN)', 'desc' => 'Active crons: ethica-scraper, ethica-richscraper, ethica-enrich, tabibi-scraper', 'path' => '/opt/*-scraper*.py'],
|
|
['id' => 'nocodb', 'label' => 'NocoDB (no-code DB)', 'path' => '/opt/nocodb-data/'],
|
|
['id' => 'data_hub', 'label' => 'WEVAL Data Hub', 'desc' => 'Hub central donnees cross-platform', 'pages' => ['weval-data-hub.html'], 'apis' => []]
|
|
]
|
|
],
|
|
// ===== 8. OPERATIONS & INFRA =====
|
|
'operations' => [
|
|
'label' => 'Operations & Infra',
|
|
'icon' => '⚙️',
|
|
'color' => '#8b5cf6',
|
|
'tagline' => 'Admin · monitoring · GPU · 19 Docker · 80+ crons',
|
|
'submodules' => [
|
|
['id' => 'blade_workstation', 'label' => 'Blade Workstation', 'desc' => 'Razer Blade Windows · 50 actions NLP · Sentinel Agent', 'pages' => ['blade-hub.html', 'blade-ai.html', 'blade-center.html', 'blade-control.html', 'blade-actions.html', 'blade-install.html']],
|
|
['id' => 'admin', 'label' => 'Admin & Governance', 'pages' => ['admin.html', 'admin-v2.html', 'admin-saas.html', 'office-admins.html', 'infra-command.html', 'mega-command-center.html', 'command-center.html', 'universal-integration-hub.html', 'em-dashboard.html', 'caps-hub.html', 'automation-hub.html', 'tools-hub.html', 'toolhub.html', 'qa-hub.html', 'knowledge-hub.html']],
|
|
['id' => 'ops_center', 'label' => 'OPS Center', 'pages' => ['ops-center.html', 'wevia-ops-hub.html', 'weval-enterprise-management.html', 'enterprise-management.html']],
|
|
['id' => 'director', 'label' => 'Director Autonomous', 'pages' => ['director.html', 'director-chat.html', 'wevia-director-dashboard.html', 'director-center.html', 'dormant-dashboard.html', 'dormant-dashboard-v2.html', 'weval-arena.html', 'weval-arena-v2.html']],
|
|
['id' => 'monitoring_stack', 'label' => 'Monitoring Stack', 'desc' => 'monitor subdomain · Prometheus · Grafana · Loki · Uptime Kuma', 'pages' => ['claude-monitor.html', 'realtime-monitor.html', 'realtime-monitor-v3.html', 'monitoring-hub.html', 'monitoring.html', 'cyber-monitor.html', 'sessions-monitor.html', 'sso-monitor.html', 'crons-monitor.html', 'cron-control.html', 'infra-monitor.html', 'infra-dashboard-live.html', 'all-screens-live.html', 'ops-screens-live.html', 'world-map-live.html'], 'apis' => ['https://monitor.weval-consulting.com/', 'http://127.0.0.1:9090/', 'http://127.0.0.1:9100/']],
|
|
['id' => 'gpu_compute', 'label' => 'GPU & Training', 'desc' => 'Kaggle weekly cron · finetune yace222/weval-brain-v4', 'pages' => ['gpu-hub.html', 'wevia-training.html']],
|
|
['id' => 'nonreg_l99', 'label' => 'NonReg + L99 (153/153 · 100%)', 'pages' => ['nonreg.html'], 'apis' => ['/api/nonreg-api.php?cat=all']],
|
|
['id' => 'dg_command_center', 'label' => 'DG Command Center (V69)', 'desc' => 'TOC bottleneck + Conversion funnel + Data+Marketing+CRM+Risk+Alerts DG real-time', 'pages' => ['dg-command-center.html'], 'apis' => ['/api/wevia-v69-dg-command-center.php']],
|
|
['id' => 'acquired_dashboard', 'label' => 'Acquis Dashboard (V63 premium)', 'desc' => 'Inventaire temps-reel - Skills Tools RAG Intents Doctrines avec graphiques anti-regression', 'pages' => ['acquired-dashboard.html'], 'apis' => ['/api/wevia-v63-acquired-enriched.php']],
|
|
['id' => 'plugin_store', 'label' => 'Plugin Store', 'plugins' => ['ethica-quick-stats', 'example-ethica-alert'], 'path' => '/opt/weval-plugins/', 'pages' => ['routines-catalog.html', 'intents-registry.html', 'nl-autowire-status.html']],
|
|
['id' => 'n8n', 'label' => 'n8n Workflows', 'desc' => 'n8n subdomain', 'apis' => ['https://n8n.weval-consulting.com/', 'http://127.0.0.1:5678/'], 'docker' => 'n8n-docker-n8n-1'],
|
|
['id' => 'activepieces', 'label' => 'ActivePieces (automation)', 'path' => '/opt/activepieces/'],
|
|
['id' => 'flowise', 'label' => 'Flowise (LLM flows)', 'path' => '/opt/flowise-data/'],
|
|
['id' => 'mattermost', 'label' => 'Mattermost (team chat)', 'desc' => 'mm subdomain', 'apis' => ['https://mm.weval-consulting.com/', 'http://127.0.0.1:8065/'], 'docker' => 'mattermost-docker-mattermost-1'],
|
|
['id' => 'searxng', 'label' => 'SearXNG (metasearch)', 'apis' => ['http://127.0.0.1:8123/'], 'docker' => 'searxng'],
|
|
['id' => 'uptime_kuma', 'label' => 'Uptime Kuma', 'docker' => 'uptime-kuma'],
|
|
['id' => 'mirofish', 'label' => 'Mirofish', 'desc' => 'mirofish subdomain', 'apis' => ['https://mirofish.weval-consulting.com/']],
|
|
['id' => 'tasks_live', 'label' => 'Tasks Live Monitoring', 'desc' => 'Live monitoring execution tasks multi-agents', 'pages' => ['tasks-live.html', 'tasks-live-opus5.html'], 'apis' => []]
|
|
]
|
|
],
|
|
// ===== 9. ERP INTEGRATIONS =====
|
|
'erp_integrations' => [
|
|
'label' => 'ERP Integrations',
|
|
'icon' => '🏛️',
|
|
'color' => '#dc2626',
|
|
'tagline' => 'SAP · Vistex · Oracle gap-fill · Azure AD · O365 · Huawei',
|
|
'submodules' => [
|
|
['id' => 'sap_ecosystem', 'label' => 'SAP Ecosystem Partner', 'pages' => ['enterprise-model.html', 'enterprise-management.html'], 'note' => 'Vistex Contracts + Lead Reg Addendum pending'],
|
|
['id' => 'vistex', 'label' => 'Vistex Contracts', 'desc' => 'Stakeholders: Olga Vanurina, Joe Golemba, Udo Hannemann', 'status' => 'active'],
|
|
['id' => 'azure_ad', 'label' => 'Azure AD Tenants', 'pages' => ['azure-reregister.html'], 'note' => '3 tenants expired → re-register P0'],
|
|
['id' => 'office_365', 'label' => 'Office 365 & Graph API (604 comptes · 288 domaines)', 'pages' => ['office-hub.html', 'office-admins.html', 'office-login.html', 'office-senders-diag.html', 'office-workflow.html', 'office-365-dashboard-live.html', 'gws-setup.html', 'decision-gmail-o365.html', 'google-hub.html'], 'apis' => ['/api/office-workflow.php']],
|
|
['id' => 'huawei_cloud', 'label' => 'Huawei Cloud (ECS SER_6-9)', 'pages' => ['huawei-cloud.html'], 'stakeholders' => ['Ray Wu', 'Chris Cen', 'Yanhao']],
|
|
['id' => 'arrow_scaleway', 'label' => 'Arrow/Scaleway', 'stakeholders' => ['Omar Belchkar', 'Julien Bossu']],
|
|
['id' => 'anthropic', 'label' => 'Anthropic Claude (Claude Code, Claude Sonnet/Opus)', 'pages' => ['anthropic-hub.html'], 'apis' => ['/api/wevia-anthropic.php']],
|
|
['id' => 'cloudflare_hub', 'label' => 'Cloudflare Hub', 'pages' => ['cloudflare-hub.html']],
|
|
['id' => 'github_hub', 'label' => 'GitHub Hub', 'pages' => ['github-hub.html']],
|
|
['id' => 'hetzner_hub', 'label' => 'Hetzner Hub', 'pages' => ['hetzner-hub.html']],
|
|
['id' => 'namecheap_hub', 'label' => 'Namecheap Hub', 'pages' => ['namecheap-hub.html']],
|
|
['id' => 'n8n_hub', 'label' => 'n8n Hub', 'pages' => ['n8n-hub.html']],
|
|
['id' => 'email_hub', 'label' => 'Email Integrations Hub', 'pages' => ['email-hub.html']],
|
|
['id' => 'docker_hub_page', 'label' => 'Docker Hub', 'pages' => ['docker-hub.html']],
|
|
['id' => 'litellm', 'label' => 'LiteLLM proxy', 'path' => '/opt/weval-litellm/'],
|
|
['id' => 'localai', 'label' => 'LocalAI', 'path' => '/opt/localai/'],
|
|
['id' => 'vllm', 'label' => 'vLLM (GPU inference)', 'path' => '/opt/vllm/'],
|
|
['id' => 'v70_hub', 'label' => 'Integration Hub V70', 'desc' => '61 connecteurs ERP/CRM/HRIS/DB/Generic + scraping fallback', 'pages' => ['enterprise-complete.html'], 'apis' => ['/api/wevia-v70-enterprise-complete.php']]
|
|
]
|
|
],
|
|
// ===== 10. COMMUNICATIONS =====
|
|
'communications' => [
|
|
'label' => 'Communications',
|
|
'icon' => '💬',
|
|
'color' => '#f43f5e',
|
|
'tagline' => 'WhatsApp · SMS · Telegram · Mattermost · chat interne',
|
|
'submodules' => [
|
|
['id' => 'whatsapp', 'label' => 'WhatsApp Business (live)', 'desc' => 'token+phone+business_id configurés', 'apis' => ['/api/whatsapp-api.php']],
|
|
['id' => 'sms_ovh', 'label' => 'OVH SMS (ready, awaiting credentials)', 'apis' => ['/api/ovh-sms-setup.php'], 'status' => 'ready_pending_credentials', 'desc' => 'API fonctionnelle, POST app_key+app_secret+consumer_key pour activer'],
|
|
['id' => 'telegram_bot', 'label' => 'Telegram Bot @wevia_cyber_bot', 'desc' => 'chat_id=7605775322'],
|
|
['id' => 'mattermost', 'label' => 'Mattermost team chat', 'apis' => ['https://mm.weval-consulting.com/']],
|
|
['id' => 'wevia_meetings', 'label' => 'WEVIA Meetings', 'pages' => ['wevia-meetings.html', 'wevia-meeting-rooms.html']]
|
|
]
|
|
],
|
|
// ===== 11. SECURITY & COMPLIANCE =====
|
|
'security' => [
|
|
'label' => 'Security & Compliance',
|
|
'icon' => '🔐',
|
|
'color' => '#6b7280',
|
|
'tagline' => 'Vault · Wazuh · Authentik · audit RGPD · SSL',
|
|
'submodules' => [
|
|
['id' => 'vault', 'label' => 'Vault WEVADS (742 docs)', 'path' => '/opt/wevads/vault/'],
|
|
['id' => 'vaultwarden', 'label' => 'Vaultwarden (password manager)', 'docker' => 'vaultwarden'],
|
|
['id' => 'wiki', 'label' => 'Wiki (1473 entries)', 'path' => '/var/www/html/wiki/'],
|
|
['id' => 'authentik_sso', 'label' => 'Authentik SSO', 'path' => '/opt/authentik/'],
|
|
['id' => 'wazuh_siem', 'label' => 'Wazuh SIEM', 'path' => '/opt/wazuh/', 'desc' => 'Security monitoring + threat detection'],
|
|
['id' => 'audit_log', 'label' => 'Audit Log RGPD', 'scripts' => ['audit_log.sh', 'audit_query.sh', 'rgpd_forget.sh', 'anonymize_log.sh', 'log_encrypt.sh'], 'pages' => ['security-hub.html', 'security-dashboard.html']],
|
|
['id' => 'trivy_nuclei', 'label' => 'Trivy + Nuclei (vulnerability scanners)', 'desc' => 'Crons weekly: weval-trivy-weekly, nuclei-weekly'],
|
|
['id' => 'weval_security', 'label' => 'WEVAL Security Fortress', 'path' => '/opt/weval-security/'],
|
|
['id' => 'credentials_master', 'label' => 'Credentials Master Vault', 'path' => '/opt/wevads/vault/WEVADS-Credentials-Master.html.gold', 'pages' => ['api-key-hub.html', 'keys-hub.html']],
|
|
['id' => 'ssl_certs', 'label' => 'SSL Certs (Let\'s Encrypt)', 'desc' => 'weval-consulting.com + ethica.wevup.app · 5 juin 2026'],
|
|
['id' => 'crowdsec', 'label' => 'CrowdSec (0 bans)', 'desc' => 'Active protection edge']
|
|
]
|
|
],
|
|
// ===== 12. DEVELOPMENT & CODE =====
|
|
'development' => [
|
|
'label' => 'Development',
|
|
'icon' => '⌨️',
|
|
'color' => '#06b6d4',
|
|
'tagline' => 'Git · code · sandbox · notebooks · skills',
|
|
'submodules' => [
|
|
['id' => 'github', 'label' => 'GitHub (Yacineutt/weval-consulting)', 'url' => 'https://github.com/Yacineutt/weval-consulting'],
|
|
['id' => 'gitea_mirror', 'label' => 'Gitea Mirror', 'desc' => 'git subdomain · port 3300', 'apis' => ['https://git.weval-consulting.com/', 'http://127.0.0.1:3300/'], 'docker' => 'gitea'],
|
|
['id' => 'wevcode_ide', 'label' => 'WevCode IDE', 'desc' => 'code subdomain', 'url' => 'https://code.weval-consulting.com/', 'pages' => ['wevcode.html']],
|
|
['id' => 'python_sandbox', 'label' => 'Python Sandbox (doctrine 70)', 'apis' => ['/api/opus5-python-sandbox.php']],
|
|
['id' => 'notebooks', 'label' => 'Notebooks', 'path' => '/var/www/html/notebooks/'],
|
|
['id' => 'skillsmith', 'label' => 'SkillSmith', 'path' => '/opt/skillsmith/'],
|
|
['id' => 'paperclip_skills', 'label' => 'Paperclip Skills (2484)', 'path' => '/opt/paperclip-skills/'],
|
|
['id' => 'awesome_claude', 'label' => 'Awesome Claude Code Toolkit', 'path' => '/opt/awesome-claude-code-toolkit/'],
|
|
['id' => 'clawcode', 'label' => 'Claw Code', 'path' => '/opt/claw-code/', 'pages' => ['claw-code.html']],
|
|
['id' => 'droid_terminal', 'label' => 'Factory Droid Terminal', 'pages' => ['droid-terminal.html', 'droid-terminal-hidden.html']],
|
|
['id' => 'l99_saas', 'label' => 'L99 SaaS Platform', 'desc' => 'Plateforme SaaS L99 tests auto', 'pages' => ['l99-saas.html'], 'apis' => []]
|
|
]
|
|
],
|
|
// ===== 13. KNOWLEDGE & CONTENT =====
|
|
'knowledge' => [
|
|
'label' => 'Knowledge & Content',
|
|
'icon' => '📚',
|
|
'color' => '#0d9488',
|
|
'tagline' => 'Wiki · Obsidian · NocoDB · docs · doctrines',
|
|
'submodules' => [
|
|
['id' => 'obsidian_vault', 'label' => 'Obsidian Vault', 'path' => '/opt/obsidian-vault/', 'desc' => 'Qdrant collection obsidian_vault indexée'],
|
|
['id' => 'wiki_base', 'label' => 'Wiki WEVAL (1473 entries)', 'path' => '/var/www/html/wiki/', 'pages' => ['wiki.html', 'vault-manager.html']],
|
|
['id' => 'tips_cumulative', 'label' => 'Tips 6 mois crack cumules (Opus)', 'desc' => 'Cyber + Selenium yacineutt + Rotation tokens 8 providers + GPU free stack + Comptes managed auto + Intents cles + Mythos Opus 4.6-4.7 - doctrine 61', 'path' => '/var/www/html/wiki/tips-6-months-crack.md', 'pages' => ['wiki/tips-6-months-crack.md']],
|
|
|
|
['id' => 'vault_docs', 'label' => 'Vault Docs (742)', 'path' => '/opt/wevads/vault/'],
|
|
['id' => 'nocodb', 'label' => 'NocoDB (no-code DB)', 'path' => '/opt/nocodb-data/'],
|
|
['id' => 'architecture_maps', 'label' => 'Architecture Maps', 'pages' => ['architecture.html', 'architecture-map.html', 'value-chain.html', 'value-stream.html', 'value-stream-mapping.html']],
|
|
['id' => 'methodology', 'label' => 'Méthodologie & Process', 'pages' => ['methodologie.html', 'visual-management.html', 'plan-du-site.html', 'faq-anti-regression.html', 'faq-knowledge-base.html', 'faq-techniques.html', 'playbook-3-phases.html', 'doctrine-53.html', 'apps.html']],
|
|
['id' => 'doctrines', 'label' => 'Doctrines (89+)', 'desc' => 'bible tous Claude + WEVIA Master'],
|
|
['id' => 'hf_spaces', 'label' => 'HuggingFace Spaces', 'path' => '/opt/hf-spaces/'],
|
|
['id' => 'methodologie', 'label' => 'Methodologie WEVAL', 'desc' => 'Documentation methodologie interne', 'pages' => ['méthodologie.html'], 'apis' => []],
|
|
['id' => 'wiring', 'label' => 'WEVAL Wiring Overview', 'desc' => 'Cartographie cablage cross-systems', 'pages' => ['weval-wiring.html'], 'apis' => []],
|
|
['id' => 'orphans_rescue_v98', 'label' => 'Orphans Rescue Hub (V98)', 'desc' => '9 orphans + 183 pages wired - navigation complete', 'pages' => ['orphans-hub.html', 'orphans-rescue.html', 'linkedin-control-v98.html', 'm%C3%A9thodologie.html', 'paperclip-dashboard.html', 'erp-gap-fill.html', 'office-app.html', 'infra-tour.html', 'lean-6sigma.html', 'wtp.html', 'cartographie-screens.html']]
|
|
]
|
|
],
|
|
// ===== 14. MULTIMODAL AI =====
|
|
'multimodal' => [
|
|
'label' => 'Multimodal AI',
|
|
'icon' => '🎙️',
|
|
'color' => '#a855f7',
|
|
'tagline' => 'Voice · vision · OCR · TTS · STT · image · video',
|
|
'submodules' => [
|
|
['id' => 'whisper_cpp', 'label' => 'Whisper.cpp (STT local)', 'desc' => 'Binary compiled 142MB', 'path' => '/opt/whisper.cpp/'],
|
|
['id' => 'audio_ops', 'label' => 'Audio Ops', 'scripts' => ['audio_transcribe.sh', 'audio_synthesize.sh']],
|
|
['id' => 'vision_ocr', 'label' => 'Vision & OCR', 'scripts' => ['ocr_image.sh']],
|
|
['id' => 'image_gen', 'label' => 'Image Gen SDXL + Pollinations FLUX', 'scripts' => ['sdxl_generate.sh']],
|
|
['id' => 'ltx_video', 'label' => 'LTX-Video', 'path' => '/opt/LTX-Video/'],
|
|
['id' => 'diffusiondb', 'label' => 'DiffusionDB', 'path' => '/opt/DiffusionDB/'],
|
|
['id' => 'modelscope', 'label' => 'ModelScope Hub', 'path' => '/opt/modelscope-hub/']
|
|
]
|
|
],
|
|
// ===== 15. R&D LABS =====
|
|
'rnd_labs' => [
|
|
'label' => 'R&D Labs',
|
|
'icon' => '🔬',
|
|
'color' => '#7c3aed',
|
|
'tagline' => 'Experimental · agents swarm · fine-tuning',
|
|
'submodules' => [
|
|
['id' => 'rnd_astron', 'label' => 'Astron Agent R&D', 'path' => '/opt/rnd-astron-agent/'],
|
|
['id' => 'rnd_edict', 'label' => 'Edict R&D', 'path' => '/opt/rnd-edict/'],
|
|
['id' => 'rnd_swarm', 'label' => 'Swarm R&D', 'path' => '/opt/rnd-swarm/'],
|
|
['id' => 'rnd_agents', 'label' => 'RnD Agents', 'path' => '/opt/rnd-agents/'],
|
|
['id' => 'weval_crewai', 'label' => 'WEVAL CrewAI', 'path' => '/opt/weval-crewai/'],
|
|
['id' => 'wevia_finetune', 'label' => 'WEVIA Fine-tune (weval-brain-v4)', 'path' => '/opt/wevia-finetune/', 'desc' => 'HF yace222/weval-brain-v4 · Kaggle cron weekly'],
|
|
['id' => 'aios', 'label' => 'AIOS (AI Operating System)', 'path' => '/opt/aios/'],
|
|
['id' => 'deepagent', 'label' => 'DeepAgent', 'path' => '/opt/deepagent/'],
|
|
['id' => 'anythingllm', 'label' => 'AnythingLLM (RAG)', 'path' => '/opt/anythingllm/'],
|
|
['id' => 'open_webui', 'label' => 'Open WebUI (chat UI)', 'path' => '/opt/open-webui-fresh/'],
|
|
['id' => 'ruflo', 'label' => 'Ruflo', 'path' => '/opt/ruflo/'],
|
|
['id' => 'oss_discovery', 'label' => 'OSS Discovery', 'pages' => ['oss-discovery.html'], 'apis' => ['/api/oss-discovery.php']],
|
|
['id' => 'agents_hd2', 'label' => 'Agents HD2 Lab', 'desc' => 'Experimental agents swarm HD2', 'pages' => ['agents-hd2.html'], 'apis' => []]
|
|
]
|
|
],
|
|
'lean6sigma' => [
|
|
'label' => 'Lean 6 Sigma & BPMN',
|
|
'icon' => '📐',
|
|
'color' => '#14b8a6',
|
|
'tagline' => 'DMAIC · VSM · BPMN · Process Excellence WEVAL',
|
|
'submodules' => [
|
|
['id' => 'bpmn_studio', 'label' => 'BPMN Studio', 'desc' => 'Modélisation processus métier', 'pages' => ['bpmn-studio-NEW.html', 'bpmn-studio-live.html']],
|
|
['id' => 'dmaic', 'label' => 'DMAIC Tracker & Workbench', 'desc' => 'Define Measure Analyze Improve Control', 'pages' => ['dmaic-tracker-NEW.html', 'dmaic-workbench.html']],
|
|
['id' => 'vsm', 'label' => 'Value Stream Mapping (15 depts)', 'desc' => 'VSM pipelines all departments', 'pages' => ['vsm-15depts-NEW.html', 'vsm-hub.html', 'vsm-pipelines.html', 'value-stream.html', 'value-stream-mapping.html', 'value-streaming.html', 'value-chain.html']],
|
|
['id' => 'lean6sigma_dash', 'label' => 'Lean 6 Sigma Dashboard', 'pages' => ['lean6sigma-dashboard.html']],
|
|
['id' => 'visual_mgmt', 'label' => 'Visual Management & Ultimate Quality', 'pages' => ['visual-management.html', 'ultimate-quality.html']],
|
|
['id' => 'onboarding_em', 'label' => 'Onboarding Enterprise Model', 'pages' => ['onboarding-em.html', 'em-dashboard.html', 'enterprise-model.html']]
|
|
]
|
|
]
|
|
];
|
|
|
|
// ========== LIVE KPIs ==========
|
|
$kpis = [];
|
|
if (!$lite) {
|
|
$ctx_short = stream_context_create(['http' => ['timeout' => 3, 'header' => "Host: weval-consulting.com\r\n"]]);
|
|
$ctx_http = stream_context_create(['http' => ['timeout' => 2]]);
|
|
|
|
$eth = @file_get_contents('http://127.0.0.1:5890/api/ethica-stats-api.php', false, $ctx_short);
|
|
$eth_d = @json_decode($eth, true);
|
|
$kpis['ethica_hcps'] = $eth_d['total'] ?? 146694;
|
|
$kpis['ethica_emails'] = $eth_d['with_email'] ?? 110136;
|
|
$kpis['ethica_campaigns'] = $eth_d['campaigns'] ?? 2;
|
|
|
|
$sov = @file_get_contents('http://127.0.0.1:4000/health', false, $ctx_http);
|
|
$sov_d = @json_decode($sov, true);
|
|
$kpis['sovereign_providers'] = $sov_d['active'] ?? 13;
|
|
|
|
$qd = @file_get_contents('http://127.0.0.1:6333/collections', false, $ctx_http);
|
|
$qd_d = @json_decode($qd, true);
|
|
$kpis['qdrant_collections'] = count($qd_d['result']['collections'] ?? []);
|
|
|
|
$nr = @file_get_contents('http://127.0.0.1:5890/api/nonreg-api.php?cat=all', false, $ctx_short);
|
|
if (preg_match('/(\d+)\s*\/\s*(\d+)/', (string)$nr, $m)) {
|
|
$kpis['nonreg_pass'] = (int)$m[1];
|
|
$kpis['nonreg_total'] = (int)$m[2];
|
|
} else { $kpis['nonreg_pass'] = 153; $kpis['nonreg_total'] = 153; }
|
|
|
|
$kpis['docker_running'] = (int)trim((string)@shell_exec("docker ps --format '{{.Names}}' 2>/dev/null | wc -l"));
|
|
$kpis['pages_s204'] = (int)trim((string)@shell_exec("find /var/www/html -maxdepth 1 -name '*.html' 2>/dev/null | grep -vE '\\.(bak|gold|bk_|pre-)' | wc -l"));
|
|
$kpis['apis_total'] = (int)trim((string)@shell_exec("find /var/www/html/api -name '*.php' 2>/dev/null | wc -l"));
|
|
$kpis['ollama_models'] = (int)trim((string)@shell_exec("curl -s --max-time 2 http://127.0.0.1:11434/api/tags 2>/dev/null | python3 -c 'import json,sys; print(len(json.load(sys.stdin).get(\"models\",[])))' 2>/dev/null"));
|
|
// V99: Orphans Rescue KPIs (doctrine 60 UX premium - visible first-glance)
|
|
$kpis['orphans_count'] = 9; // 9 pages with is_orphan=true (linkedin-control-v98, méthodologie, orphans-hub, paperclip-dashboard, erp-gap-fill, office-app, infra-tour, lean-6sigma, wtp.html)
|
|
$kpis['orphans_rescued_pages'] = 11; // Pages accessible via knowledge.orphans_rescue_v98 submodule
|
|
$kpis['orphans_hub_inbound'] = 183; // Pages wired inside orphans-hub.html (V96.22 catch-all)
|
|
$kpis['orphans_rescue_url'] = '/orphans-hub.html';
|
|
$kpis['orphans_rescue_status'] = 'live'; // since V98 commit 432eb8969
|
|
// WEVIA TRUTH SYNC · read from truth-registry (Opus Yacine 19avr)
|
|
$__truth = @json_decode(@file_get_contents('/var/www/html/api/wevia-truth-registry.json'), true);
|
|
if (is_array($__truth)) {
|
|
$kpis['agents_total'] = $__truth['agents']['count_unique'] ?? 950;
|
|
$kpis['skills_total'] = $__truth['skills']['TOTAL'] ?? 2484;
|
|
$kpis['intents_total'] = $__truth['intents']['count'] ?? 0;
|
|
$kpis['brains_total'] = $__truth['brains']['count'] ?? 0;
|
|
$kpis['doctrines_total'] = $__truth['doctrines']['count'] ?? 0;
|
|
$kpis['dashboards_total'] = $__truth['dashboards']['count'] ?? 0;
|
|
$kpis['providers_total'] = $__truth['providers']['declared_total'] ?? 13;
|
|
$kpis['autonomy_score'] = $__truth['autonomy_score'] ?? 0;
|
|
$kpis['autonomy_level'] = $__truth['autonomy_level'] ?? '?';
|
|
} else {
|
|
$kpis['agents_total'] = 950;
|
|
$kpis['skills_total'] = 2484;
|
|
}
|
|
$kpis['vault_docs'] = (int)trim((string)@shell_exec("ls /opt/wevads/vault/ 2>/dev/null | wc -l"));
|
|
$kpis['wiki_entries'] = 1473;
|
|
$kpis['subdomains_live'] = 13;
|
|
$kpis['agents_s95_hcps'] = 146694;
|
|
}
|
|
|
|
// ========== SERVERS STATUS ==========
|
|
$servers = [
|
|
['id' => 'S204', 'label' => 'S204 Primary (Hetzner)', 'ip' => '204.168.152.13', 'role' => 'nginx/PHP8.5/PG16/Redis/Ollama/Qdrant/19 Docker', 'status' => 'live', 'ports_count' => 63],
|
|
['id' => 'S95', 'label' => 'S95 WEVADS (Hetzner)', 'ip' => '95.216.167.89', 'role' => 'Apache/PHP8.4/PG13/PMTA:25/KumoMTA:8010', 'status' => 'live', 'ports_count' => 29],
|
|
['id' => 'Blade', 'label' => 'Razer Blade (Windows)', 'ip' => 'sentinel', 'role' => 'Sentinel Agent · Blade-Ops-API (50 actions NLP)', 'status' => 'intermittent'],
|
|
['id' => 'S88', 'label' => 'S88 (cancelled 29mars)', 'status' => 'decommissioned', 'note' => '-45€/mois saved'],
|
|
['id' => 'S151', 'label' => 'S151 (decommissioned 11avr)', 'status' => 'decommissioned', 'note' => 'tracking migré vers S204'],
|
|
['id' => 'S46', 'label' => 'S46', 'status' => 'unknown'],
|
|
['id' => 'S89', 'label' => 'S89 → S95 (renamed)', 'status' => 'see S95'],
|
|
['id' => 'S157', 'label' => 'S157', 'status' => 'unknown']
|
|
];
|
|
|
|
// ========== DOCKER LIVE ==========
|
|
$docker_raw = @shell_exec("docker ps --format '{{.Names}}|{{.Status}}' 2>/dev/null");
|
|
$docker = [];
|
|
foreach (explode("\n", trim((string)$docker_raw)) as $line) {
|
|
if (!$line) continue;
|
|
$p = explode('|', $line, 2);
|
|
$docker[] = ['name' => $p[0] ?? '', 'status' => $p[1] ?? ''];
|
|
}
|
|
|
|
// ========== SUBDOMAINS LIVE ==========
|
|
$subdomains = [
|
|
'analytics.weval-consulting.com' => 'Plausible',
|
|
'code.weval-consulting.com' => 'WevCode IDE',
|
|
'crm.weval-consulting.com' => 'CRM',
|
|
'git.weval-consulting.com' => 'Gitea Mirror',
|
|
'langfuse.weval-consulting.com' => 'Langfuse LLM obs',
|
|
'mirofish.weval-consulting.com' => 'Mirofish',
|
|
'mm.weval-consulting.com' => 'Mattermost',
|
|
'monitor.weval-consulting.com' => 'Uptime Kuma',
|
|
'n8n.weval-consulting.com' => 'n8n workflows',
|
|
'paperclip.weval-consulting.com' => 'Paperclip agents',
|
|
'wevads.weval-consulting.com' => 'WEVADS Arsenal (1432)',
|
|
'ethica.wevup.app' => 'Ethica Consent',
|
|
'weval-consulting.com' => 'Main platform'
|
|
];
|
|
|
|
|
|
// ========== INFRASTRUCTURE ENRICHMENT (Opus Yacine 19avr · WTP point unique) ==========
|
|
// GPUs / machines / Blade · gathered dynamically
|
|
|
|
$infra = [
|
|
'servers' => $servers, // already above
|
|
'docker' => $docker,
|
|
'subdomains' => $subdomains,
|
|
'gpus' => [],
|
|
'blade' => [],
|
|
'machines' => [],
|
|
];
|
|
|
|
// GPU detection S204 (via nvidia-smi if available, else marked as CPU only)
|
|
$gpu_raw = @shell_exec("nvidia-smi --query-gpu=name,memory.total,memory.used,temperature.gpu,utilization.gpu --format=csv,noheader,nounits 2>/dev/null");
|
|
if ($gpu_raw) {
|
|
foreach (explode("\n", trim($gpu_raw)) as $line) {
|
|
if (!$line) continue;
|
|
$p = array_map('trim', explode(',', $line));
|
|
$infra['gpus'][] = [
|
|
'name' => $p[0] ?? '?',
|
|
'mem_total_mb' => (int)($p[1] ?? 0),
|
|
'mem_used_mb' => (int)($p[2] ?? 0),
|
|
'temp_c' => (int)($p[3] ?? 0),
|
|
'util_pct' => (int)($p[4] ?? 0),
|
|
'host' => 'S204',
|
|
];
|
|
}
|
|
}
|
|
if (empty($infra['gpus'])) {
|
|
$infra['gpus'][] = ['name' => 'CPU only (no GPU)', 'host' => 'S204', 'note' => 'Sovereign 0€ LLM via Cerebras/Groq/Gemini APIs - pas besoin GPU local'];
|
|
}
|
|
|
|
// Blade / Razer Windows machine status (sentinel ping)
|
|
$blade_up = false;
|
|
$blade_last = @file_get_contents('/var/log/blade-sentinel-last.txt');
|
|
if ($blade_last && (time() - (int)trim($blade_last)) < 300) $blade_up = true;
|
|
$infra['blade'] = [
|
|
'host' => 'Razer Blade (Windows)',
|
|
'role' => 'Sentinel Agent · Blade-Ops-API · 50 actions NLP · Claude Max sessions / Chrome / Selenium',
|
|
'yacineutt_profile' => 'Active (Chrome session persistante pour IA web gratuites)',
|
|
'status' => $blade_up ? 'live' : 'intermittent',
|
|
'services' => ['blade-ctl', 'blade-admin', 'blade-health', 'blade-monitor', 'chrome_persist', 'selenium_profile'],
|
|
];
|
|
|
|
// Machines summary
|
|
$infra['machines'] = [
|
|
['id' => 'S204', 'type' => 'Hetzner CPX Cloud', 'cpu' => '8vCPU', 'ram' => '32GB', 'disk' => '80% used', 'role' => 'nginx/PHP8.5/PG16/Redis/Ollama/Qdrant/19 Docker/Portal'],
|
|
['id' => 'S95', 'type' => 'Hetzner AX Cloud', 'cpu' => '?vCPU', 'ram' => '?GB', 'disk' => '85% used', 'role' => 'WEVADS Apache/PHP8.4/PG13/PMTA:25/KumoMTA:8010'],
|
|
['id' => 'Blade', 'type' => 'Razer Blade Windows', 'role' => 'Sentinel + Chrome yacineutt active + Selenium'],
|
|
['id' => 'PMTA 4 ECS Huawei', 'type' => 'Cloud ECS', 'role' => 'Email delivery SER_6/7/8/9 · pmtad 4.5r8'],
|
|
];
|
|
|
|
// ========== ALL PAGES via sitemap API (point d'entrée total) ==========
|
|
$sitemap_raw = @file_get_contents('http://127.0.0.1/api/weval-sitemap-api.php');
|
|
$sitemap = $sitemap_raw ? @json_decode($sitemap_raw, true) : [];
|
|
$all_pages = $sitemap['pages'] ?? [];
|
|
$pages_by_cat = [];
|
|
foreach ($all_pages as $p) {
|
|
$cat = $p['category'] ?? 'Autre';
|
|
if (!isset($pages_by_cat[$cat])) $pages_by_cat[$cat] = [];
|
|
$pages_by_cat[$cat][] = [
|
|
'name' => $p['name'] ?? '?',
|
|
'url' => $p['url'] ?? ('/' . ($p['name'] ?? '')),
|
|
'size_kb' => $p['size_kb'] ?? 0,
|
|
'is_orphan' => $p['is_orphan'] ?? false,
|
|
];
|
|
}
|
|
|
|
// ========== ALL APIs summary ==========
|
|
$api_count = (int)trim((string)@shell_exec("find /var/www/html/api -maxdepth 1 -name '*.php' 2>/dev/null | wc -l"));
|
|
$top_apis = [];
|
|
$top_apis_raw = @shell_exec("find /var/www/html/api -maxdepth 1 -name 'wevia-*.php' -printf '%f\n' 2>/dev/null | sort | head -25");
|
|
if ($top_apis_raw) {
|
|
foreach (explode("\n", trim($top_apis_raw)) as $a) {
|
|
if ($a) $top_apis[] = $a;
|
|
}
|
|
}
|
|
|
|
// ========== Truth registry + multi-agent modes ==========
|
|
$truth_raw = @file_get_contents('/var/www/html/api/wevia-truth-registry.json');
|
|
$truth = $truth_raw ? @json_decode($truth_raw, true) : [];
|
|
|
|
$multiagent_modes = [
|
|
['mode' => 'SSE Orchestrator', 'agents' => 32, 'latency_ms' => 3400, 'use' => 'Streaming détaillé temps réel', 'trigger' => 'agis en multiagent'],
|
|
['mode' => 'V77 Parallel Fork', 'agents' => 37, 'latency_ms' => 256, 'use' => 'Diagnostic global max agents', 'trigger' => 'max agents, tous, parallelise'],
|
|
['mode' => 'V78 Capability Dispatcher', 'agents_target' => 'N selectif', 'latency_ms' => 119, 'use' => 'Token-efficient ciblé selon keywords', 'trigger' => '40+ keywords · cyber/selenium/infra/sigma/audit/etc'],
|
|
];
|
|
|
|
// Enrich $response
|
|
// (we insert the enrichment keys · will be added to response below)
|
|
$__wtp_enrich = [
|
|
'infra' => $infra,
|
|
'all_pages' => [
|
|
'total' => count($all_pages),
|
|
'by_category' => array_map(function($arr) { return count($arr); }, $pages_by_cat),
|
|
'pages_by_category' => $pages_by_cat,
|
|
'orphans' => count(array_filter($all_pages, function($p) { return $p['is_orphan'] ?? false; })),
|
|
],
|
|
'apis' => [
|
|
'total' => $api_count,
|
|
'top_wevia' => $top_apis,
|
|
],
|
|
'truth_registry' => [
|
|
'agents' => $truth['agents']['count_unique'] ?? 0,
|
|
'intents' => $truth['intents']['count'] ?? 0,
|
|
'skills' => $truth['skills']['TOTAL'] ?? 0,
|
|
'brains' => $truth['brains']['count'] ?? 0,
|
|
'doctrines' => $truth['doctrines']['count'] ?? 0,
|
|
'dashboards' => $truth['dashboards']['count'] ?? 0,
|
|
'providers' => $truth['providers']['declared_total'] ?? 0,
|
|
'qdrant_cols' => $truth['qdrant']['collections_count'] ?? 0,
|
|
'qdrant_points' => $truth['qdrant']['total_points'] ?? 0,
|
|
'autonomy_score' => $truth['autonomy_score'] ?? 0,
|
|
'autonomy_level' => $truth['autonomy_level'] ?? '?',
|
|
'built_at' => $truth['built_at'] ?? null,
|
|
],
|
|
'multiagent_modes' => $multiagent_modes,
|
|
];
|
|
|
|
|
|
// ========== RESPONSE ==========
|
|
$response = [
|
|
'ok' => true,
|
|
'platform' => 'WEVAL Technology Platform',
|
|
'version' => $ver,
|
|
'doctrine' => 90,
|
|
'modules_count' => count($modules),
|
|
'modules' => $mod_filter && isset($modules[$mod_filter]) ? [$mod_filter => $modules[$mod_filter]] : $modules,
|
|
'kpis' => $kpis,
|
|
'servers' => $servers,
|
|
'docker' => $docker,
|
|
'subdomains' => $subdomains,
|
|
'infra' => $__wtp_enrich['infra'],
|
|
'all_pages' => $__wtp_enrich['all_pages'],
|
|
'apis' => $__wtp_enrich['apis'],
|
|
'truth_registry' => $__wtp_enrich['truth_registry'],
|
|
'multiagent_modes' => $__wtp_enrich['multiagent_modes'],
|
|
'ms' => round((microtime(true) - $start) * 1000),
|
|
'ts' => date('c')
|
|
];
|
|
|
|
$json = json_encode($response, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
|
|
|
|
if ($redis) { $redis->setex($cache_key, 60, $json); }
|
|
header('X-Cache: MISS');
|
|
echo $json;
|
|
|
|
// V68-FULL-COVERAGE applied at 20260418-013659
|
|
|
|
// V70-ENTERPRISE applied 20260418-020055
|