diff --git a/api/ambre-pw-status.php b/api/ambre-pw-status.php new file mode 100644 index 000000000..00aaa38f0 --- /dev/null +++ b/api/ambre-pw-status.php @@ -0,0 +1,19 @@ +/dev/null | grep -E "playwright|chromium" | grep -v grep | head -5"); +$logs = glob("/tmp/ambre-pw-*.log"); +$latest_logs = []; +foreach ($logs as $l) { + $latest_logs[] = [ + "file" => basename($l), + "size" => filesize($l), + "tail" => @shell_exec("tail -c 1500 $l 2>/dev/null"), + ]; +} +$script = "/var/www/html/api/v76-scripts/playwright-check.sh"; +$first = file_exists($script) ? substr(@file_get_contents($script), 0, 500) : "NOT FOUND"; +echo json_encode([ + "running" => trim($procs ?? "none"), + "logs" => $latest_logs, + "script_preview" => $first, +], JSON_PRETTY_PRINT); diff --git a/api/blade-actions-surfaced.json b/api/blade-actions-surfaced.json index e21d2fae9..ba7d1f1cb 100644 --- a/api/blade-actions-surfaced.json +++ b/api/blade-actions-surfaced.json @@ -1,5 +1,5 @@ { - "generated_at": "2026-04-21T16:20:01.722569", + "generated_at": "2026-04-21T16:25:01.526924", "stats": { "total": 48, "pending": 31, diff --git a/api/cf-purge.php b/api/cf-purge.php new file mode 100644 index 000000000..0079957d5 --- /dev/null +++ b/api/cf-purge.php @@ -0,0 +1,64 @@ +null, 'zone'=>null, 'email'=>null]; +$secrets = @file('/etc/weval/secrets.env'); +if (is_array($secrets)) { + foreach ($secrets as $line) { + if (preg_match('/^CF_API_TOKEN=(.*)$/', trim($line), $m)) $CF['token'] = trim($m[1], '"\''); + if (preg_match('/^CF_ZONE_ID=(.*)$/', trim($line), $m)) $CF['zone'] = trim($m[1], '"\''); + if (preg_match('/^CF_EMAIL=(.*)$/', trim($line), $m)) $CF['email'] = trim($m[1], '"\''); + } +} +if (!$CF['token'] || !$CF['zone']) { + http_response_code(500); echo json_encode(['ok'=>false,'err'=>'secrets missing']); exit; +} + +$files_param = $_GET['files'] ?? ''; +$all = !empty($_GET['all']); + +if ($all) { + $payload = ['purge_everything'=>true]; +} else { + $files_raw = $files_param ? explode(',', $files_param) : [ + 'https://weval-consulting.com/weval-technology-platform.html' + ]; + $files = []; + foreach ($files_raw as $f) { + $f = trim($f); + if (!$f) continue; + if (strpos($f, 'http') !== 0) $f = 'https://weval-consulting.com' . (strpos($f,'/')===0?'':'/') . $f; + $files[] = $f; + } + if (empty($files)) { echo json_encode(['ok'=>false,'err'=>'no files']); exit; } + $payload = ['files'=>$files]; +} + +$ch = curl_init("https://api.cloudflare.com/client/v4/zones/{$CF['zone']}/purge_cache"); +curl_setopt($ch, CURLOPT_POST, true); +curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload)); +curl_setopt($ch, CURLOPT_HTTPHEADER, [ + 'X-Auth-Email: '.$CF['email'], + 'X-Auth-Key: '.$CF['token'], + 'Content-Type: application/json' +]); +curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); +curl_setopt($ch, CURLOPT_TIMEOUT, 10); +$resp = curl_exec($ch); +$code = curl_getinfo($ch, CURLINFO_HTTP_CODE); +curl_close($ch); + +$decoded = @json_decode($resp, true); +echo json_encode([ + 'ok' => $decoded['success'] ?? false, + 'http' => $code, + 'payload' => $payload, + 'cf_response' => $decoded, + 'ts' => date('c'), + 'doctrine' => 'wave-213 · auto CF-purge helper · secrets.env · global key auth' +]); diff --git a/api/em-kpi-cache.json b/api/em-kpi-cache.json index e69de29bb..2f7cd5742 100644 --- a/api/em-kpi-cache.json +++ b/api/em-kpi-cache.json @@ -0,0 +1,281 @@ +{ + "ts": "2026-04-21T14:25:01+00:00", + "server": "s204", + "s204": { + "load": 1.48, + "uptime": "2026-04-14 11:51:24", + "ram_total_mb": 31335, + "ram_used_mb": 11831, + "ram_free_mb": 19503, + "disk_total": "150G", + "disk_used": "118G", + "disk_free": "27G", + "disk_pct": "82%", + "fpm_workers": 140, + "docker_containers": 19, + "cpu_cores": 8 + }, + "s95": { + "load": 0.7, + "disk_pct": "81%", + "status": "UP", + "ram_total_mb": 15610, + "ram_free_mb": 12027 + }, + "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": 315, + "php_apis": 811, + "wiki_entries": 2046, + "vault_doctrines": 75, + "vault_sessions": 104, + "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": 161733, + "with_email": 110611, + "with_phone": 155151, + "gap_email": 51122, + "pct_email": 68.4, + "pct_phone": 95.9, + "by_country": [ + { + "country": "DZ", + "hcps": 122337, + "with_email": 78508, + "with_tel": 119396, + "pct_email": 64.2, + "pct_tel": 97.6 + }, + { + "country": "MA", + "hcps": 19723, + "with_email": 15077, + "with_tel": 18737, + "pct_email": 76.4, + "pct_tel": 95 + }, + { + "country": "TN", + "hcps": 17794, + "with_email": 15147, + "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 5 days", + "ports": "" + }, + { + "name": "listmonk", + "status": "Up 5 days", + "ports": "" + }, + { + "name": "plausible-plausible-1", + "status": "Up 4 days", + "ports": "" + }, + { + "name": "plausible-plausible-db-1", + "status": "Up 4 days", + "ports": "" + }, + { + "name": "plausible-plausible-events-db-1", + "status": "Up 4 days", + "ports": "" + }, + { + "name": "n8n-docker-n8n-1", + "status": "Up 5 days", + "ports": "" + }, + { + "name": "mattermost-docker-mm-db-1", + "status": "Up 5 days", + "ports": "" + }, + { + "name": "mattermost-docker-mattermost-1", + "status": "Up 5 days (healthy)", + "ports": "" + }, + { + "name": "twenty", + "status": "Up 5 days", + "ports": "" + }, + { + "name": "twenty-redis", + "status": "Up 5 days", + "ports": "" + }, + { + "name": "langfuse", + "status": "Up 5 days", + "ports": "" + }, + { + "name": "redis-weval", + "status": "Up 7 days", + "ports": "" + }, + { + "name": "gitea", + "status": "Up 7 days", + "ports": "" + }, + { + "name": "node-exporter", + "status": "Up 7 days", + "ports": "" + }, + { + "name": "prometheus", + "status": "Up 7 days", + "ports": "" + }, + { + "name": "searxng", + "status": "Up 7 days", + "ports": "" + }, + { + "name": "uptime-kuma", + "status": "Up 38 hours (healthy)", + "ports": "" + }, + { + "name": "vaultwarden", + "status": "Up 7 days (healthy)", + "ports": "" + }, + { + "name": "qdrant", + "status": "Up 7 days", + "ports": "" + } + ], + "crons": { + "active": 35 + }, + "git": { + "head": "69dcf0a39 auto-sync-1625", + "dirty": 2, + "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": 3893, + "health": { + "score": 5, + "max": 6, + "pct": 83 + }, + "elapsed_ms": 10544 +} \ No newline at end of file diff --git a/api/v83-business-kpi-latest.json b/api/v83-business-kpi-latest.json index 82f2d96a5..104646fe7 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-21T14:24:43+00:00", + "ts": "2026-04-21T14:26:43+00:00", "summary": { "total_categories": 8, "total_kpis": 64, diff --git a/api/wired-pending/intent-opus4-cf_purge_wtp.php b/api/wired-pending/intent-opus4-cf_purge_wtp.php new file mode 100644 index 000000000..f30a67f08 --- /dev/null +++ b/api/wired-pending/intent-opus4-cf_purge_wtp.php @@ -0,0 +1,17 @@ + 'cf_purge_wtp', + 'triggers' => array( + 0 => 'cf purge', + 1 => 'cloudflare purge', + 2 => 'purge cf', + 3 => 'purge wtp', + 4 => 'refresh cf cache', + 5 => 'invalidate cf', + ), + 'cmd' => 'curl -sS --max-time 10 "https://weval-consulting.com/api/cf-purge.php?files=/weval-technology-platform.html"', + 'status' => 'WAVE_213', + 'created_at' => '2026-04-21T14:27:00+00:00', + 'source' => 'opus-wave-213-auto-cf-purge', + 'description' => 'Purge Cloudflare cache for WTP via /api/cf-purge.php helper' +); diff --git a/generated/wevia-code---test-20260421-142654-6dfa98.py b/generated/wevia-code---test-20260421-142654-6dfa98.py new file mode 100644 index 000000000..3720d9aa5 --- /dev/null +++ b/generated/wevia-code---test-20260421-142654-6dfa98.py @@ -0,0 +1,4 @@ +def test(): + assert 1 == 1, "La valeur de 1 est différente de 1" + +test() \ No newline at end of file diff --git a/generated/wevia-final-20260421-142605-991ce7.md b/generated/wevia-final-20260421-142605-991ce7.md new file mode 100644 index 000000000..a7e59520f --- /dev/null +++ b/generated/wevia-final-20260421-142605-991ce7.md @@ -0,0 +1,23 @@ +# final + +# La Fin : Une Nouvelle Début + +## Introduction + +La fin est un terme qui peut avoir de nombreuses significations, selon le contexte dans lequel il est utilisé. Dans ce document, nous allons explorer les différentes facettes de la fin, en commençant par la terminaison d'un projet ou d'une période. + +## Les Diverses Formes de Fin + +* **Fin d'un projet** : La fin d'un projet marque la fin de la phase de réalisation et la mise en place de solutions pour répondre aux besoins et objectifs initiaux. +* **Fin d'une période** : La fin d'une période, comme la fin d'une année scolaire ou professionnelle, marque la fin d'un cycle et l'ouverture d'un nouveau chapitre. +* **Fin de vie** : La fin de vie est un terme utilisé pour décrire la fin de la vie d'une personne ou d'un animal. + +## Les Conséquences de la Fin + +* **La clôture d'un cycle** : La fin marque la clôture d'un cycle, permettant ainsi de réfléchir sur les expériences vécues et de préparer les futurs défis. +* **Les changements** : La fin peut également entraîner des changements dans la vie quotidienne, tels que la perte d'un emploi ou la fin d'un lien amical. +* **Les opportunités** : Malgré les difficultés, la fin peut également offrir des opportunités de croissance et de développement personnel. + +## Conclusion + +La fin est un terme complexe qui peut avoir de nombreuses significations. Qu'il s'agisse de la fin d'un projet, d'une période ou de la vie, il est essentiel de reconnaître les conséquences et les opportunités qui en découlent. En acceptant et en intégrant la fin dans notre vie quotidienne, nous pouvons nous adapter et nous développer pour affronter les défis du futur. \ No newline at end of file diff --git a/generated/wevia-final-20260421-142605-991ce7.pdf b/generated/wevia-final-20260421-142605-991ce7.pdf new file mode 100644 index 000000000..9e1f11418 Binary files /dev/null and b/generated/wevia-final-20260421-142605-991ce7.pdf differ diff --git a/generated/wevia-final-20260421-142622-8bfc0c.md b/generated/wevia-final-20260421-142622-8bfc0c.md new file mode 100644 index 000000000..b32e304ea --- /dev/null +++ b/generated/wevia-final-20260421-142622-8bfc0c.md @@ -0,0 +1,29 @@ +# final + +# Le Concept de Final + +## Définition + +Le terme "final" est utilisé pour désigner une étape ou un résultat qui marque la fin d'un processus, d'un projet ou d'un cycle de vie. Il s'agit d'un point d'arrêt ou d'un accomplissement qui met un terme à une période de travail, de développement ou de progression. + +## Types de Final + +* **Final d'un projet** : il s'agit de la dernière étape d'un projet, marquant la fin de la phase de conception, de réalisation et de livraison. +* **Final d'un cycle de vie** : il s'agit de la fin d'une période de croissance, de développement ou de progression, comme par exemple la fin d'une année scolaire ou professionnelle. +* **Final d'un processus** : il s'agit de la dernière étape d'un processus, comme par exemple la finalisation d'un rapport, d'un rapport de gestion ou d'un document de synthèse. + +## Exemples de Final + +* **Final d'un projet de construction** : la livraison des clés de la propriété à l'acheteur. +* **Final d'un cycle de vie académique** : la remise des diplômes aux diplômés. +* **Final d'un processus de développement** : la mise en production d'un nouveau produit ou service. + +## Conséquences d'un Final + +* **Fin d'une phase de travail** : la fin d'une phase de travail ou de développement marque la fin d'une période de travail intense. +* **Début d'une nouvelle phase** : la fin d'une phase de travail ou de développement marque souvent le début d'une nouvelle phase, comme par exemple la phase de maintenance ou de suivi. +* **Évaluation et bilan** : la fin d'une phase de travail ou de développement offre l'occasion de faire l'évaluation et le bilan de ce qui a été réalisé. + +## Conclusion + +Le concept de final est essentiel pour comprendre les différentes étapes et les conséquences qui les accompagnent. Il permet de marquer la fin d'un processus, d'un projet ou d'un cycle de vie, et de passer à une nouvelle phase de travail ou de développement. La compréhension du concept de final est donc cruciale pour les professionnels et les particuliers qui travaillent sur des projets ou des cycles de vie. \ No newline at end of file diff --git a/generated/wevia-final-20260421-142622-8bfc0c.pdf b/generated/wevia-final-20260421-142622-8bfc0c.pdf new file mode 100644 index 000000000..a424c4d27 Binary files /dev/null and b/generated/wevia-final-20260421-142622-8bfc0c.pdf differ diff --git a/generated/wevia-final-20260421-142643-c60f34.docx b/generated/wevia-final-20260421-142643-c60f34.docx new file mode 100644 index 000000000..a346b2b49 Binary files /dev/null and b/generated/wevia-final-20260421-142643-c60f34.docx differ diff --git a/generated/wevia-final-20260421-142643-c60f34.md b/generated/wevia-final-20260421-142643-c60f34.md new file mode 100644 index 000000000..29861e89d --- /dev/null +++ b/generated/wevia-final-20260421-142643-c60f34.md @@ -0,0 +1,79 @@ +# final + +**Rapport Final de Projet** +========================== + +**Résumé** +---------- + +Ce rapport présente les résultats de notre projet de recherche sur l'impact de la technologie sur l'efficacité des entreprises. Après une période de 6 mois de collecte de données et d'analyse, nous avons pu établir un portrait complet de l'évolution de la productivité et de la rentabilité des entreprises dans le secteur tertiaire. + +**Table des Matières** +--------------------- + +1. [Introduction](#introduction) +2. [Méthodologie](#méthodologie) +3. [Résultats](#résultats) +4. [Discussion](#discussion) +5. [Conclusion](#conclusion) +6. [Références](#références) + +**Introduction** +--------------- + +Le secteur tertiaire a connu une évolution significative ces dernières années, notamment en raison de l'adoption de la technologie dans les entreprises. L'objectif de ce projet est de comprendre l'impact de la technologie sur l'efficacité des entreprises dans ce secteur. + +### Objectifs + +* Évaluer l'impact de la technologie sur la productivité des entreprises +* Analyser l'impact de la technologie sur la rentabilité des entreprises +* Identifier les facteurs clés qui influencent l'adoption de la technologie dans les entreprises + +**Méthodologie** +---------------- + +La collecte de données a été effectuée grâce à des entretiens avec des responsables de 20 entreprises du secteur tertiaire. Les données ont été analysées à l'aide de techniques statistiques. + +### Échantillon + +* 20 entreprises du secteur tertiaire +* Taille moyenne de l'échantillon : 500 employés + +**Résultats** +------------ + +Les résultats de l'étude sont présentés ci-dessous. + +| Indicateur | Moyenne | Écart-type | +| --- | --- | --- | +| Productivité | 15% | 5% | +| Rentabilité | 20% | 10% | + +### Analyse des résultats + +* La productivité des entreprises a augmenté de 15% en moyenne après l'adoption de la technologie. +* La rentabilité des entreprises a augmenté de 20% en moyenne après l'adoption de la technologie. + +**Discussion** +-------------- + +Les résultats de l'étude suggèrent que l'adoption de la technologie a un impact positif sur la productivité et la rentabilité des entreprises dans le secteur tertiaire. + +### Limitations + +* L'échantillon est limité à 20 entreprises. +* Les données ont été collectées uniquement grâce à des entretiens. + +**Conclusion** +-------------- + +L'adoption de la technologie a un impact positif sur la productivité et la rentabilité des entreprises dans le secteur tertiaire. Cependant, il est important de prendre en compte les limitations de l'étude et de poursuivre les recherches pour une compréhension plus approfondie de l'impact de la technologie sur les entreprises. + +**Références** +-------------- + +* [1] Nom de l'auteur, Titre de l'article, Nom de la publication, Année de publication. +* [2] Nom de l'auteur, Titre de l'article, Nom de la publication, Année de publication. + +[1]: https://www.google.com +[2]: https://www.google.com \ No newline at end of file diff --git a/generated/wevia-final-20260421-142646-50e6bb.md b/generated/wevia-final-20260421-142646-50e6bb.md new file mode 100644 index 000000000..23c4516c1 --- /dev/null +++ b/generated/wevia-final-20260421-142646-50e6bb.md @@ -0,0 +1,30 @@ +# final + +# Introduction +* Définition du final : terme utilisé pour décrire la dernière étape d'un processus, d'un projet ou d'un événement +* Importance du final dans divers domaines (sport, cinéma, éducation, etc.) + +# Le Final dans le Sport +* Exemples de finales de grands événements (Mondial de football, Tour de France, etc.) +* Importance de la pression et de la confiance dans les finales +* Stratégies utilisées pour gagner les finales (tactique, motivation, etc.) + +# Le Final dans le Cinéma +* Exemples de finales de films célèbres (Star Wars, La Guerre des Étoiles, etc.) +* Importance de la tension et de l'émotion dans les finales de films +* Techniques utilisées pour créer des finales impactantes (musique, montage, etc.) + +# Le Final dans l'Éducation +* Exemples de finales de projets scolaires ou universitaires +* Importance de la présentation et de la communication dans les finales +* Conseils pour réussir les finales dans l'éducation (préparation, révision, etc.) + +# Le Final dans la Vie Personnelle +* Exemples de finales de relations amoureuses ou professionnelles +* Importance de la conclusion et de la clarté dans les finales de la vie personnelle +* Conseils pour gérer les finales de la vie personnelle (communication, empathie, etc.) + +# Conclusion +* Résumé des points clés sur le final dans divers domaines +* Importance de bien gérer les finales pour atteindre les objectifs +* Appel à l'action pour appliquer les conseils pour réussir les finales \ No newline at end of file diff --git a/generated/wevia-final-20260421-142646-50e6bb.pptx b/generated/wevia-final-20260421-142646-50e6bb.pptx new file mode 100644 index 000000000..e0784c017 Binary files /dev/null and b/generated/wevia-final-20260421-142646-50e6bb.pptx differ diff --git a/generated/wevia-img-final-20260421-142651-78770c.svg b/generated/wevia-img-final-20260421-142651-78770c.svg new file mode 100644 index 000000000..22db4c6bc --- /dev/null +++ b/generated/wevia-img-final-20260421-142651-78770c.svg @@ -0,0 +1,9 @@ + + + + + + + + FINAL + \ No newline at end of file diff --git a/weval-technology-platform.html b/weval-technology-platform.html index 06be6625a..4dd4c2388 100644 --- a/weval-technology-platform.html +++ b/weval-technology-platform.html @@ -3672,6 +3672,7 @@ if (typeof window.navigateTo === 'function'){ +
@@ -3708,6 +3709,33 @@ if (typeof window.navigateTo === 'function'){ window.__wtpMaQuick = function(q){ input.value = q; window.__wtpMaSend(); }; + window.__wtpCfPurge = function(){ + var btn = event.target; + btn.disabled = true; + var orig = btn.textContent; + btn.textContent = '⏳ purging...'; + fetch('/api/cf-purge.php?files=/weval-technology-platform.html,/api/wevia-autonomous.php', {cache:'no-store'}) + .then(function(r){return r.json();}) + .then(function(d){ + btn.textContent = d.ok ? '✅ CF purgé' : '❌ échec'; + setTimeout(function(){ btn.textContent = orig; btn.disabled = false; }, 3000); + if (d.ok && typeof window.__wtpMaSend !== 'undefined') { + // Log to conversation if console visible + var conv = document.getElementById('wtp-ma-conversation'); + if (conv) { + var el = document.createElement('div'); + el.style.cssText = 'margin-bottom:10px;padding:8px 10px;background:rgba(249,115,22,.1);border-left:3px solid #fb923c;border-radius:6px'; + el.innerHTML = '
🔄 Cloudflare purge WTP · cf_id='+(d.cf_response&&d.cf_response.result?d.cf_response.result.id:'?').slice(0,12)+'
'; + conv.appendChild(el); + conv.scrollTop = conv.scrollHeight; + } + } + }) + .catch(function(e){ + btn.textContent = '❌ err'; + setTimeout(function(){ btn.textContent = orig; btn.disabled = false; }, 2000); + }); + }; window.__wtpMaSend = function(){ var q = (input.value||'').trim(); if (!q) return;