auto-sync via WEVIA git_sync_all intent 2026-04-21T12:39:36+02:00
Some checks failed
WEVAL NonReg / nonreg (push) Has been cancelled

This commit is contained in:
opus
2026-04-21 12:39:36 +02:00
parent 7f88873553
commit 648f8242a9
17 changed files with 499 additions and 20 deletions

View File

@@ -1,5 +1,5 @@
{
"generated_at": "2026-04-21T12:30:01.551448",
"generated_at": "2026-04-21T12:35:01.652723",
"stats": {
"total": 48,
"pending": 31,

View File

@@ -0,0 +1,281 @@
{
"ts": "2026-04-21T10:35:01+00:00",
"server": "s204",
"s204": {
"load": 1.92,
"uptime": "2026-04-14 11:51:24",
"ram_total_mb": 31335,
"ram_used_mb": 10928,
"ram_free_mb": 20406,
"disk_total": "150G",
"disk_used": "117G",
"disk_free": "28G",
"disk_pct": "82%",
"fpm_workers": 140,
"docker_containers": 19,
"cpu_cores": 8
},
"s95": {
"load": 0.22,
"disk_pct": "81%",
"status": "UP",
"ram_total_mb": 15610,
"ram_free_mb": 11880
},
"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": 294,
"php_apis": 776,
"wiki_entries": 1988,
"vault_doctrines": 59,
"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": 110595,
"with_phone": 155151,
"gap_email": 51138,
"pct_email": 68.4,
"pct_phone": 95.9,
"by_country": [
{
"country": "DZ",
"hcps": 122337,
"with_email": 78496,
"with_tel": 119396,
"pct_email": 64.2,
"pct_tel": 97.6
},
{
"country": "MA",
"hcps": 19723,
"with_email": 15075,
"with_tel": 18737,
"pct_email": 76.4,
"pct_tel": 95
},
{
"country": "TN",
"hcps": 17794,
"with_email": 15145,
"with_tel": 17018,
"pct_email": 85.1,
"pct_tel": 95.6
},
{
"country": "INTL",
"hcps": 1879,
"with_email": 1879,
"with_tel": 0,
"pct_email": 100,
"pct_tel": 0
}
]
},
"docker": [
{
"name": "loki",
"status": "Up 4 days",
"ports": ""
},
{
"name": "listmonk",
"status": "Up 5 days",
"ports": ""
},
{
"name": "plausible-plausible-1",
"status": "Up 3 days",
"ports": ""
},
{
"name": "plausible-plausible-db-1",
"status": "Up 3 days",
"ports": ""
},
{
"name": "plausible-plausible-events-db-1",
"status": "Up 3 days",
"ports": ""
},
{
"name": "n8n-docker-n8n-1",
"status": "Up 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 6 days",
"ports": ""
},
{
"name": "gitea",
"status": "Up 6 days",
"ports": ""
},
{
"name": "node-exporter",
"status": "Up 6 days",
"ports": ""
},
{
"name": "prometheus",
"status": "Up 6 days",
"ports": ""
},
{
"name": "searxng",
"status": "Up 6 days",
"ports": ""
},
{
"name": "uptime-kuma",
"status": "Up 34 hours (healthy)",
"ports": ""
},
{
"name": "vaultwarden",
"status": "Up 6 days (healthy)",
"ports": ""
},
{
"name": "qdrant",
"status": "Up 6 days",
"ports": ""
}
],
"crons": {
"active": 35
},
"git": {
"head": "7f8887355 auto-sync-1235",
"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": 3763,
"health": {
"score": 5,
"max": 6,
"pct": 83
},
"elapsed_ms": 10811
}

View File

@@ -1 +1 @@
{"ts": "20260421_122748", "version": "3.2", "score": 100, "pass": 153, "fail": 0, "total": 153, "elapsed": 56.6, "categories": {"S204": {"pass": 9, "fail": 0}, "S95-WV": {"pass": 12, "fail": 0}, "S95-ARS": {"pass": 17, "fail": 0}, "S95-iR": {"pass": 1, "fail": 0}, "INFRA": {"pass": 5, "fail": 0}, "API": {"pass": 27, "fail": 0}, "SEC": {"pass": 4, "fail": 0}, "S95-BK": {"pass": 6, "fail": 0}, "C2-API": {"pass": 4, "fail": 0}, "C2-SPA": {"pass": 1, "fail": 0}, "C2-WV": {"pass": 3, "fail": 0}, "SSO": {"pass": 25, "fail": 0}, "DATA": {"pass": 5, "fail": 0}, "CRONS": {"pass": 2, "fail": 0}, "BLADE": {"pass": 7, "fail": 0}, "LIFE": {"pass": 3, "fail": 0}, "FUNC": {"pass": 7, "fail": 0}, "01AVR": {"pass": 10, "fail": 0}, "STRUCT": {"pass": 5, "fail": 0}}, "failures": []}
{"ts": "20260421_123827", "version": "3.2", "score": 100, "pass": 153, "fail": 0, "total": 153, "elapsed": 56.3, "categories": {"S204": {"pass": 9, "fail": 0}, "S95-WV": {"pass": 12, "fail": 0}, "S95-ARS": {"pass": 17, "fail": 0}, "S95-iR": {"pass": 1, "fail": 0}, "INFRA": {"pass": 5, "fail": 0}, "API": {"pass": 27, "fail": 0}, "SEC": {"pass": 4, "fail": 0}, "S95-BK": {"pass": 6, "fail": 0}, "C2-API": {"pass": 4, "fail": 0}, "C2-SPA": {"pass": 1, "fail": 0}, "C2-WV": {"pass": 3, "fail": 0}, "SSO": {"pass": 25, "fail": 0}, "DATA": {"pass": 5, "fail": 0}, "CRONS": {"pass": 2, "fail": 0}, "BLADE": {"pass": 7, "fail": 0}, "LIFE": {"pass": 3, "fail": 0}, "FUNC": {"pass": 7, "fail": 0}, "01AVR": {"pass": 10, "fail": 0}, "STRUCT": {"pass": 5, "fail": 0}}, "failures": []}

File diff suppressed because one or more lines are too long

View File

@@ -1,23 +1,41 @@
#!/bin/bash
# V124 FPM Saturation Guard - detection + alerte only (NO auto-restart)
# V124 FPM Saturation Guard v2 - detection + alerte multi-pool (NO auto-restart)
# Doctrine 24: monitor saturation pattern V9.67 recurrent 11:00 UTC
# Writes to /tmp/fpm-saturation-history.json for trend analysis
# Aggregates all FPM pools (php7.4/8.4/8.5) for global pressure view
HISTORY=/tmp/fpm-saturation-history.json
MAX_HISTORY=288 # 24h at 5min interval
ALERT_THRESHOLD_PCT=85 # Alert if saturation >= 85%
# Get current FPM state (via netstat + ps)
ACTIVE=$(ps -ef | grep "php-fpm: pool" | grep -v grep | wc -l)
MAX_CHILDREN=$(grep -E "^pm.max_children" /etc/php/*/fpm/pool.d/*.conf 2>/dev/null | head -1 | awk "{print \$NF}")
MAX_CHILDREN=${MAX_CHILDREN:-150}
CONNECTIONS=$(ss -ant 2>/dev/null | grep -c ":443")
# Get total max_children across all active pools
TOTAL_MAX=0
for conf in /etc/php/*/fpm/pool.d/*.conf; do
[ -f "$conf" ] || continue
v=$(grep -E "^pm.max_children" "$conf" 2>/dev/null | awk "{print \$NF}")
[ -n "$v" ] && TOTAL_MAX=$(( TOTAL_MAX + v ))
done
[ $TOTAL_MAX -eq 0 ] && TOTAL_MAX=150 # Fallback
SAT_PCT=$(( ACTIVE * 100 / MAX_CHILDREN ))
# Get total active FPM workers (exclude master processes)
TOTAL_ACTIVE=$(ps -ef | grep "php-fpm: pool" | grep -v grep | wc -l)
# Get main pool (php8.5/www) state for detail
MAIN_MAX=$(grep -E "^pm.max_children" /etc/php/8.5/fpm/pool.d/www.conf 2>/dev/null | awk "{print \$NF}")
MAIN_MAX=${MAIN_MAX:-150}
MAIN_ACTIVE=$(ps -ef | grep "php-fpm: pool www$" | grep -v grep | wc -l)
CONNECTIONS=$(ss -ant 2>/dev/null | grep -c ":443")
LOAD1=$(cut -d" " -f1 /proc/loadavg)
TS=$(date +%s)
TSISO=$(date -Iseconds)
# Calculate saturation (main pool focus since it handles the principal traffic)
if [ $MAIN_MAX -gt 0 ]; then
SAT_PCT=$(( MAIN_ACTIVE * 100 / MAIN_MAX ))
else
SAT_PCT=0
fi
# Determine status
STATUS="healthy"
if [ $SAT_PCT -ge $ALERT_THRESHOLD_PCT ]; then
@@ -27,15 +45,14 @@ elif [ $SAT_PCT -ge 70 ]; then
fi
# Output compact single line
echo "sat_pct=$SAT_PCT active=$ACTIVE max=$MAX_CHILDREN load1=$LOAD1 conn=$CONNECTIONS status=$STATUS ts=$TSISO"
echo "sat_pct=$SAT_PCT main=$MAIN_ACTIVE/$MAIN_MAX total=$TOTAL_ACTIVE/$TOTAL_MAX load1=$LOAD1 conn=$CONNECTIONS status=$STATUS ts=$TSISO"
# Append to history (keep last 288 entries = 24h)
ENTRY="{\"ts\":$TS,\"iso\":\"$TSISO\",\"sat_pct\":$SAT_PCT,\"active\":$ACTIVE,\"max\":$MAX_CHILDREN,\"load1\":$LOAD1,\"conn\":$CONNECTIONS,\"status\":\"$STATUS\"}"
ENTRY="{\"ts\":$TS,\"iso\":\"$TSISO\",\"sat_pct\":$SAT_PCT,\"main_active\":$MAIN_ACTIVE,\"main_max\":$MAIN_MAX,\"total_active\":$TOTAL_ACTIVE,\"total_max\":$TOTAL_MAX,\"load1\":$LOAD1,\"conn\":$CONNECTIONS,\"status\":\"$STATUS\"}"
if [ -f "$HISTORY" ]; then
# Append + trim via python
python3 -c "
import json, sys
import json
try:
h = json.load(open('$HISTORY'))
if not isinstance(h, list): h = []
@@ -48,9 +65,9 @@ else
echo "[$ENTRY]" > "$HISTORY"
fi
# If SATURATED, also log to syslog for trace
# If SATURATED, log to syslog for trace
if [ "$STATUS" = "SATURATED" ]; then
logger -t "fpm-saturation-guard" "SATURATED sat_pct=$SAT_PCT active=$ACTIVE/$MAX_CHILDREN load=$LOAD1"
logger -t "fpm-saturation-guard" "SATURATED sat_pct=$SAT_PCT main=$MAIN_ACTIVE/$MAIN_MAX load=$LOAD1"
fi
exit 0

View File

@@ -1,12 +1,12 @@
{
"ok": true,
"version": "V83-business-kpi",
"ts": "2026-04-21T10:34:02+00:00",
"ts": "2026-04-21T10:38:40+00:00",
"summary": {
"total_categories": 8,
"total_kpis": 64,
"ok": 39,
"warn": 25,
"ok": 40,
"warn": 24,
"fail": 0,
"wire_needed": 0,
"data_completeness_pct": 100

View File

@@ -91,6 +91,7 @@ if ($__fp_input && isset($__fp_input["message"])) {
"token_health" => ["cmd"=>"bash /var/www/html/api/scripts/token-health-monitor.sh 2>/dev/null", "default"=>true, "timeout"=>35],
"infra_health_report" => ["cmd"=>"bash /var/www/html/api/scripts/infra-health-report.sh 2>/dev/null", "keywords"=>["infra","health","report","bilan infra","sante","global status"], "timeout"=>45],
"kpi_unified" => ["cmd"=>"curl -sk --max-time 5 \"http://127.0.0.1/api/kpi-unified.php\" -H \"Host: weval-consulting.com\" 2>/dev/null | jq -r \".providers.total, .agents.active, .skills.count, .nonreg.total, .orphans.count, .docker.running\" | paste -sd \"|\"", "keywords"=>["kpi","unified","consolidation","single source","tableau bord","dashboard"], "timeout"=>8],
"fpm_saturation" => ["cmd"=>"bash /var/www/html/api/scripts/fpm-saturation-guard.sh 2>/dev/null | head -1", "keywords"=>["fpm","saturation","workers","pool","charge","sature"], "timeout"=>10],
"screens_s204" => ["cmd"=>"echo 'S204_HTML='$(find /var/www/html -maxdepth 3 -name '*.html' 2>/dev/null | wc -l)' S204_PHP='$(find /var/www/html -maxdepth 3 -name '*.php' 2>/dev/null | wc -l)' API='$(ls /var/www/html/api/*.php 2>/dev/null | wc -l)", "keywords"=>["screen","ecran","\xc3\xa9cran","page"], "timeout"=>15],
"screens_s95" => ["cmd"=>"sudo ssh -p 49222 -o StrictHostKeyChecking=no -i /var/www/.ssh/wevads_key root@10.1.0.3 \"echo ARSENAL=\\$(find /opt/wevads-arsenal/public -maxdepth 2 -name '*.html' 2>/dev/null | wc -l)' WEVADS_HTML='\\$(find /var/www -maxdepth 3 -name '*.html' 2>/dev/null | wc -l)\" 2>&1 | tail -3", "keywords"=>["screen","ecran","\xc3\xa9cran","page","s95","arsenal"], "timeout"=>20],
"gpus" => ["cmd"=>"nvidia-smi --query-gpu=name,memory.total --format=csv,noheader 2>/dev/null || echo 'no GPU'; sudo ssh -p 49222 -o StrictHostKeyChecking=no -i /var/www/.ssh/wevads_key root@10.1.0.3 \"nvidia-smi --query-gpu=name --format=csv,noheader 2>/dev/null || echo 'no GPU s95'\" 2>&1 | tail -3", "keywords"=>["gpu","nvidia","blade","cuda"], "timeout"=>15],

View File

@@ -114,4 +114,6 @@ body{margin:0;background:#0a0e1a;color:#e2e8f0;font-family:-apple-system,Nunito,
</div>
<div class="timestamp">Généré V9.20 · 2026-04-20 · WEVIA-FIRST doctrine strict · SOT ethica_total=161726 live</div>
<script src="/api/a11y-auto-enhancer.js" defer></script>
</body></html>

View File

@@ -229,4 +229,59 @@ h1{background:linear-gradient(135deg,#10b981,#06b6d4);-webkit-background-clip:te
<a href="/paperclip-dashboard.html" style="display:block;padding:10px;background:#0f172a;border-left:3px solid #22c55e;border-radius:4px;color:#e2e8f0;text-decoration:none">Paperclip Dashboard <span style="color:#94a3b8;font-size:0.85em;display:block">File attachment pipeline</span></a>
</div>
</section>
<div style="position:fixed;bottom:70px;right:20px;padding:7px 14px;background:rgba(245,158,11,0.15);color:#f59e0b;border-radius:18px;font-size:12px;border:1px solid rgba(245,158,11,0.4);backdrop-filter:blur(10px);z-index:9997"><a href="/wepredict.html" style="color:#f59e0b;text-decoration:none">🔮 WePredict</a></div>
<script src="/api/a11y-auto-enhancer.js" defer></script>
<!-- AUTO-ENRICHMENT doctrine 103 - append-only -->
<section id="enrichment-v103" style="padding:24px;margin:24px 0;border-top:1px solid rgba(99,102,241,0.2)">
<h2 style="color:#818cf8;font-size:1.4rem;margin-bottom:16px">Pages productives additionnelles (42)</h2>
<p style="color:#94a3b8;font-size:0.85rem;margin-bottom:16px">Scan doctrine 103 - 2026-04-21 - pages non ref auparavant</p>
<div style="display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px">
<a href="/admin-saas.html" class="orphan-card" style="padding:12px 14px;background:rgba(30,41,59,0.6);border:1px solid rgba(99,102,241,0.15);border-radius:8px;color:#e2e8f0;text-decoration:none;display:block;transition:all .15s"><div style="font-size:.85rem;color:#a5b4fc;margin-bottom:4px">admin-saas.html</div><div style="font-size:.75rem;color:#64748b">WEVAL Enterprise — AI Operations Command Center - 27KB</div></a>
<a href="/admin.html" class="orphan-card" style="padding:12px 14px;background:rgba(30,41,59,0.6);border:1px solid rgba(99,102,241,0.15);border-radius:8px;color:#e2e8f0;text-decoration:none;display:block;transition:all .15s"><div style="font-size:.85rem;color:#a5b4fc;margin-bottom:4px">admin.html</div><div style="font-size:.75rem;color:#64748b">WEVAL Admin - 53KB</div></a>
<a href="/agents-fleet.html" class="orphan-card" style="padding:12px 14px;background:rgba(30,41,59,0.6);border:1px solid rgba(99,102,241,0.15);border-radius:8px;color:#e2e8f0;text-decoration:none;display:block;transition:all .15s"><div style="font-size:.85rem;color:#a5b4fc;margin-bottom:4px">agents-fleet.html</div><div style="font-size:.75rem;color:#64748b">WEVAL Agents Fleet - 21KB</div></a>
<a href="/agents-goodjob.html" class="orphan-card" style="padding:12px 14px;background:rgba(30,41,59,0.6);border:1px solid rgba(99,102,241,0.15);border-radius:8px;color:#e2e8f0;text-decoration:none;display:block;transition:all .15s"><div style="font-size:.85rem;color:#a5b4fc;margin-bottom:4px">agents-goodjob.html</div><div style="font-size:.75rem;color:#64748b">WEVAL Enterprise - 70KB</div></a>
<a href="/agents-hd.html" class="orphan-card" style="padding:12px 14px;background:rgba(30,41,59,0.6);border:1px solid rgba(99,102,241,0.15);border-radius:8px;color:#e2e8f0;text-decoration:none;display:block;transition:all .15s"><div style="font-size:.85rem;color:#a5b4fc;margin-bottom:4px">agents-hd.html</div><div style="font-size:.75rem;color:#64748b">WEVAL — Agents Command - 20KB</div></a>
<a href="/agents-hub.html" class="orphan-card" style="padding:12px 14px;background:rgba(30,41,59,0.6);border:1px solid rgba(99,102,241,0.15);border-radius:8px;color:#e2e8f0;text-decoration:none;display:block;transition:all .15s"><div style="font-size:.85rem;color:#a5b4fc;margin-bottom:4px">agents-hub.html</div><div style="font-size:.75rem;color:#64748b">Agents Hub — WEVAL - 11KB</div></a>
<a href="/agents-ia.html" class="orphan-card" style="padding:12px 14px;background:rgba(30,41,59,0.6);border:1px solid rgba(99,102,241,0.15);border-radius:8px;color:#e2e8f0;text-decoration:none;display:block;transition:all .15s"><div style="font-size:.85rem;color:#a5b4fc;margin-bottom:4px">agents-ia.html</div><div style="font-size:.75rem;color:#64748b">WEVIA — Agents IA Autonomes - 21KB</div></a>
<a href="/agents-valuechain.html" class="orphan-card" style="padding:12px 14px;background:rgba(30,41,59,0.6);border:1px solid rgba(99,102,241,0.15);border-radius:8px;color:#e2e8f0;text-decoration:none;display:block;transition:all .15s"><div style="font-size:.85rem;color:#a5b4fc;margin-bottom:4px">agents-valuechain.html</div><div style="font-size:.75rem;color:#64748b">WEVAL Value Chain — Agents - 24KB</div></a>
<a href="/booking.html" class="orphan-card" style="padding:12px 14px;background:rgba(30,41,59,0.6);border:1px solid rgba(99,102,241,0.15);border-radius:8px;color:#e2e8f0;text-decoration:none;display:block;transition:all .15s"><div style="font-size:.85rem;color:#a5b4fc;margin-bottom:4px">booking.html</div><div style="font-size:.75rem;color:#64748b">Prendre rendez-vous — WEVAL Consulting - 11KB</div></a>
<a href="/claude-monitor.html" class="orphan-card" style="padding:12px 14px;background:rgba(30,41,59,0.6);border:1px solid rgba(99,102,241,0.15);border-radius:8px;color:#e2e8f0;text-decoration:none;display:block;transition:all .15s"><div style="font-size:.85rem;color:#a5b4fc;margin-bottom:4px">claude-monitor.html</div><div style="font-size:.75rem;color:#64748b">Claude Sync Monitor - 18KB</div></a>
<a href="/command-center.html" class="orphan-card" style="padding:12px 14px;background:rgba(30,41,59,0.6);border:1px solid rgba(99,102,241,0.15);border-radius:8px;color:#e2e8f0;text-decoration:none;display:block;transition:all .15s"><div style="font-size:.85rem;color:#a5b4fc;margin-bottom:4px">command-center.html</div><div style="font-size:.75rem;color:#64748b">WEVAL Command Center - 58KB</div></a>
<a href="/crons-monitor.html" class="orphan-card" style="padding:12px 14px;background:rgba(30,41,59,0.6);border:1px solid rgba(99,102,241,0.15);border-radius:8px;color:#e2e8f0;text-decoration:none;display:block;transition:all .15s"><div style="font-size:.85rem;color:#a5b4fc;margin-bottom:4px">crons-monitor.html</div><div style="font-size:.75rem;color:#64748b">WEVAL — Infrastructure & Crons Monitor - 23KB</div></a>
<a href="/cyber-monitor.html" class="orphan-card" style="padding:12px 14px;background:rgba(30,41,59,0.6);border:1px solid rgba(99,102,241,0.15);border-radius:8px;color:#e2e8f0;text-decoration:none;display:block;transition:all .15s"><div style="font-size:.85rem;color:#a5b4fc;margin-bottom:4px">cyber-monitor.html</div><div style="font-size:.75rem;color:#64748b">WEVAL Cyber Monitor - 8KB</div></a>
<a href="/director-center.html" class="orphan-card" style="padding:12px 14px;background:rgba(30,41,59,0.6);border:1px solid rgba(99,102,241,0.15);border-radius:8px;color:#e2e8f0;text-decoration:none;display:block;transition:all .15s"><div style="font-size:.85rem;color:#a5b4fc;margin-bottom:4px">director-center.html</div><div style="font-size:.75rem;color:#64748b">WEVIA Director — Autonomous Center - 31KB</div></a>
<a href="/director-chat.html" class="orphan-card" style="padding:12px 14px;background:rgba(30,41,59,0.6);border:1px solid rgba(99,102,241,0.15);border-radius:8px;color:#e2e8f0;text-decoration:none;display:block;transition:all .15s"><div style="font-size:.85rem;color:#a5b4fc;margin-bottom:4px">director-chat.html</div><div style="font-size:.75rem;color:#64748b">WEVIA Director — Command - 28KB</div></a>
<a href="/email-hub.html" class="orphan-card" style="padding:12px 14px;background:rgba(30,41,59,0.6);border:1px solid rgba(99,102,241,0.15);border-radius:8px;color:#e2e8f0;text-decoration:none;display:block;transition:all .15s"><div style="font-size:.85rem;color:#a5b4fc;margin-bottom:4px">email-hub.html</div><div style="font-size:.75rem;color:#64748b">Email MTA Hub — WEVAL - 17KB</div></a>
<a href="/ethica-hcp-manager.html" class="orphan-card" style="padding:12px 14px;background:rgba(30,41,59,0.6);border:1px solid rgba(99,102,241,0.15);border-radius:8px;color:#e2e8f0;text-decoration:none;display:block;transition:all .15s"><div style="font-size:.85rem;color:#a5b4fc;margin-bottom:4px">ethica-hcp-manager.html</div><div style="font-size:.75rem;color:#64748b">Ethica HCP Manager - 9KB</div></a>
<a href="/ethica-monitor.html" class="orphan-card" style="padding:12px 14px;background:rgba(30,41,59,0.6);border:1px solid rgba(99,102,241,0.15);border-radius:8px;color:#e2e8f0;text-decoration:none;display:block;transition:all .15s"><div style="font-size:.85rem;color:#a5b4fc;margin-bottom:4px">ethica-monitor.html</div><div style="font-size:.75rem;color:#64748b">Ethica — Validation Monitor - 19KB</div></a>
<a href="/ethica-pipeline.html" class="orphan-card" style="padding:12px 14px;background:rgba(30,41,59,0.6);border:1px solid rgba(99,102,241,0.15);border-radius:8px;color:#e2e8f0;text-decoration:none;display:block;transition:all .15s"><div style="font-size:.85rem;color:#a5b4fc;margin-bottom:4px">ethica-pipeline.html</div><div style="font-size:.75rem;color:#64748b">Ethica — Pipeline E2E & Performance - 29KB</div></a>
<a href="/google-hub.html" class="orphan-card" style="padding:12px 14px;background:rgba(30,41,59,0.6);border:1px solid rgba(99,102,241,0.15);border-radius:8px;color:#e2e8f0;text-decoration:none;display:block;transition:all .15s"><div style="font-size:.85rem;color:#a5b4fc;margin-bottom:4px">google-hub.html</div><div style="font-size:.75rem;color:#64748b">Google Workspace Hub — WEVAL - 16KB</div></a>
<a href="/gpu-hub.html" class="orphan-card" style="padding:12px 14px;background:rgba(30,41,59,0.6);border:1px solid rgba(99,102,241,0.15);border-radius:8px;color:#e2e8f0;text-decoration:none;display:block;transition:all .15s"><div style="font-size:.85rem;color:#a5b4fc;margin-bottom:4px">gpu-hub.html</div><div style="font-size:.75rem;color:#64748b">GPU Free Hub — WEVAL - 18KB</div></a>
<a href="/keys-hub.html" class="orphan-card" style="padding:12px 14px;background:rgba(30,41,59,0.6);border:1px solid rgba(99,102,241,0.15);border-radius:8px;color:#e2e8f0;text-decoration:none;display:block;transition:all .15s"><div style="font-size:.85rem;color:#a5b4fc;margin-bottom:4px">keys-hub.html</div><div style="font-size:.75rem;color:#64748b">API Keys Hub — WEVAL - 18KB</div></a>
<a href="/l99-brain.html" class="orphan-card" style="padding:12px 14px;background:rgba(30,41,59,0.6);border:1px solid rgba(99,102,241,0.15);border-radius:8px;color:#e2e8f0;text-decoration:none;display:block;transition:all .15s"><div style="font-size:.85rem;color:#a5b4fc;margin-bottom:4px">l99-brain.html</div><div style="font-size:.75rem;color:#64748b">L99 Brain — Sovereign AI - 23KB</div></a>
<a href="/l99.html" class="orphan-card" style="padding:12px 14px;background:rgba(30,41,59,0.6);border:1px solid rgba(99,102,241,0.15);border-radius:8px;color:#e2e8f0;text-decoration:none;display:block;transition:all .15s"><div style="font-size:.85rem;color:#a5b4fc;margin-bottom:4px">l99.html</div><div style="font-size:.75rem;color:#64748b">WEVAL L99 Command Center - 21KB</div></a>
<a href="/living-proof.html" class="orphan-card" style="padding:12px 14px;background:rgba(30,41,59,0.6);border:1px solid rgba(99,102,241,0.15);border-radius:8px;color:#e2e8f0;text-decoration:none;display:block;transition:all .15s"><div style="font-size:.85rem;color:#a5b4fc;margin-bottom:4px">living-proof.html</div><div style="font-size:.75rem;color:#64748b">Living Proof · Video Scenario Testing · WEVAL - 21KB</div></a>
<a href="/medreach-dashboard.html" class="orphan-card" style="padding:12px 14px;background:rgba(30,41,59,0.6);border:1px solid rgba(99,102,241,0.15);border-radius:8px;color:#e2e8f0;text-decoration:none;display:block;transition:all .15s"><div style="font-size:.85rem;color:#a5b4fc;margin-bottom:4px">medreach-dashboard.html</div><div style="font-size:.75rem;color:#64748b">MedReach — Reach Report HCP Maghreb - 22KB</div></a>
<a href="/namecheap-hub.html" class="orphan-card" style="padding:12px 14px;background:rgba(30,41,59,0.6);border:1px solid rgba(99,102,241,0.15);border-radius:8px;color:#e2e8f0;text-decoration:none;display:block;transition:all .15s"><div style="font-size:.85rem;color:#a5b4fc;margin-bottom:4px">namecheap-hub.html</div><div style="font-size:.75rem;color:#64748b">Domains Hub — WEVAL - 15KB</div></a>
<a href="/nl-autowire-status.html" class="orphan-card" style="padding:12px 14px;background:rgba(30,41,59,0.6);border:1px solid rgba(99,102,241,0.15);border-radius:8px;color:#e2e8f0;text-decoration:none;display:block;transition:all .15s"><div style="font-size:.85rem;color:#a5b4fc;margin-bottom:4px">nl-autowire-status.html</div><div style="font-size:.75rem;color:#64748b">NL-AutoWire Status — WEVAL Sovereign IA - 12KB</div></a>
<a href="/ops-center.html" class="orphan-card" style="padding:12px 14px;background:rgba(30,41,59,0.6);border:1px solid rgba(99,102,241,0.15);border-radius:8px;color:#e2e8f0;text-decoration:none;display:block;transition:all .15s"><div style="font-size:.85rem;color:#a5b4fc;margin-bottom:4px">ops-center.html</div><div style="font-size:.75rem;color:#64748b">WEVAL OPS - 86KB</div></a>
<a href="/oss-discovery.html" class="orphan-card" style="padding:12px 14px;background:rgba(30,41,59,0.6);border:1px solid rgba(99,102,241,0.15);border-radius:8px;color:#e2e8f0;text-decoration:none;display:block;transition:all .15s"><div style="font-size:.85rem;color:#a5b4fc;margin-bottom:4px">oss-discovery.html</div><div style="font-size:.75rem;color:#64748b">WEVAL — OSS Discovery - 31KB</div></a>
<a href="/realtime-monitor.html" class="orphan-card" style="padding:12px 14px;background:rgba(30,41,59,0.6);border:1px solid rgba(99,102,241,0.15);border-radius:8px;color:#e2e8f0;text-decoration:none;display:block;transition:all .15s"><div style="font-size:.85rem;color:#a5b4fc;margin-bottom:4px">realtime-monitor.html</div><div style="font-size:.75rem;color:#64748b">WEVAL Realtime Monitor v3 - 25KB</div></a>
<a href="/security-dashboard.html" class="orphan-card" style="padding:12px 14px;background:rgba(30,41,59,0.6);border:1px solid rgba(99,102,241,0.15);border-radius:8px;color:#e2e8f0;text-decoration:none;display:block;transition:all .15s"><div style="font-size:.85rem;color:#a5b4fc;margin-bottom:4px">security-dashboard.html</div><div style="font-size:.75rem;color:#64748b">WEVAL Security Scanner — Secret Detection - 17KB</div></a>
<a href="/sovereign-claude.html" class="orphan-card" style="padding:12px 14px;background:rgba(30,41,59,0.6);border:1px solid rgba(99,102,241,0.15);border-radius:8px;color:#e2e8f0;text-decoration:none;display:block;transition:all .15s"><div style="font-size:.85rem;color:#a5b4fc;margin-bottom:4px">sovereign-claude.html</div><div style="font-size:.75rem;color:#64748b">Sovereign Claude - 21KB</div></a>
<a href="/toolhub.html" class="orphan-card" style="padding:12px 14px;background:rgba(30,41,59,0.6);border:1px solid rgba(99,102,241,0.15);border-radius:8px;color:#e2e8f0;text-decoration:none;display:block;transition:all .15s"><div style="font-size:.85rem;color:#a5b4fc;margin-bottom:4px">toolhub.html</div><div style="font-size:.75rem;color:#64748b">WEVIA — ToolHub - 23KB</div></a>
<a href="/value-chain.html" class="orphan-card" style="padding:12px 14px;background:rgba(30,41,59,0.6);border:1px solid rgba(99,102,241,0.15);border-radius:8px;color:#e2e8f0;text-decoration:none;display:block;transition:all .15s"><div style="font-size:.85rem;color:#a5b4fc;margin-bottom:4px">value-chain.html</div><div style="font-size:.75rem;color:#64748b">WEVIA — Value Chain - 10KB</div></a>
<a href="/value-stream.html" class="orphan-card" style="padding:12px 14px;background:rgba(30,41,59,0.6);border:1px solid rgba(99,102,241,0.15);border-radius:8px;color:#e2e8f0;text-decoration:none;display:block;transition:all .15s"><div style="font-size:.85rem;color:#a5b4fc;margin-bottom:4px">value-stream.html</div><div style="font-size:.75rem;color:#64748b">WEVIA — Value Stream - 10KB</div></a>
<a href="/visual-management.html" class="orphan-card" style="padding:12px 14px;background:rgba(30,41,59,0.6);border:1px solid rgba(99,102,241,0.15);border-radius:8px;color:#e2e8f0;text-decoration:none;display:block;transition:all .15s"><div style="font-size:.85rem;color:#a5b4fc;margin-bottom:4px">visual-management.html</div><div style="font-size:.75rem;color:#64748b">Visual Management · WEVAL Consulting - 21KB</div></a>
<a href="/wevads-hub.html" class="orphan-card" style="padding:12px 14px;background:rgba(30,41,59,0.6);border:1px solid rgba(99,102,241,0.15);border-radius:8px;color:#e2e8f0;text-decoration:none;display:block;transition:all .15s"><div style="font-size:.85rem;color:#a5b4fc;margin-bottom:4px">wevads-hub.html</div><div style="font-size:.75rem;color:#64748b">WEVADS Hub — WEVAL - 11KB</div></a>
<a href="/wevia-business-visual-studio.html" class="orphan-card" style="padding:12px 14px;background:rgba(30,41,59,0.6);border:1px solid rgba(99,102,241,0.15);border-radius:8px;color:#e2e8f0;text-decoration:none;display:block;transition:all .15s"><div style="font-size:.85rem;color:#a5b4fc;margin-bottom:4px">wevia-business-visual-studio.html</div><div style="font-size:.75rem;color:#64748b">🎬 WEVIA Business Visual Studio · Test Video Management - 21KB</div></a>
<a href="/wevia-hub.html" class="orphan-card" style="padding:12px 14px;background:rgba(30,41,59,0.6);border:1px solid rgba(99,102,241,0.15);border-radius:8px;color:#e2e8f0;text-decoration:none;display:block;transition:all .15s"><div style="font-size:.85rem;color:#a5b4fc;margin-bottom:4px">wevia-hub.html</div><div style="font-size:.75rem;color:#64748b">WEVIA Hub — WEVAL - 11KB</div></a>
<a href="/wiki.html" class="orphan-card" style="padding:12px 14px;background:rgba(30,41,59,0.6);border:1px solid rgba(99,102,241,0.15);border-radius:8px;color:#e2e8f0;text-decoration:none;display:block;transition:all .15s"><div style="font-size:.85rem;color:#a5b4fc;margin-bottom:4px">wiki.html</div><div style="font-size:.75rem;color:#64748b">WEVIA — Wiki - 47KB</div></a>
<a href="/wtp-login.html" class="orphan-card" style="padding:12px 14px;background:rgba(30,41,59,0.6);border:1px solid rgba(99,102,241,0.15);border-radius:8px;color:#e2e8f0;text-decoration:none;display:block;transition:all .15s"><div style="font-size:.85rem;color:#a5b4fc;margin-bottom:4px">wtp-login.html</div><div style="font-size:.75rem;color:#64748b">WEVAL — Login direct (bypass SSO) - 10KB</div></a>
</div>
</section>
</body></html>

View File

@@ -317,5 +317,7 @@ load();
setInterval(load, 60000);
</script>
<script src="/api/a11y-auto-enhancer.js" defer></script>
</body>
</html>

View File

@@ -214,4 +214,6 @@ runAll();
</script>
<!-- === OPUS UNIVERSAL DRILL-DOWN END === -->
<script src="/api/a11y-auto-enhancer.js" defer></script>
</body></html>

View File

@@ -103,5 +103,7 @@ async function load() {
load();
setInterval(load, 60000);
</script>
<script src="/api/a11y-auto-enhancer.js" defer></script>
</body>
</html>

View File

@@ -210,5 +210,7 @@ function renderRecent() {
load();
setInterval(load, 15000);
</script>
<script src="/api/a11y-auto-enhancer.js" defer></script>
</body>
</html>

View File

@@ -274,5 +274,15 @@ render();
loadFooter();
</script>
<!-- OPUS_v932m_WEPREDICT_XLINKS -->
<div id="opus-xlinks-wp" style="position:fixed;top:12px;right:12px;display:flex;gap:6px;z-index:9998;flex-wrap:wrap;max-width:380px">
<a href="/weval-technology-platform.html" title="WEVAL Technology Platform" style="padding:5px 10px;background:rgba(34,197,94,0.15);color:#22c55e;text-decoration:none;border-radius:14px;font-size:11px;font-weight:600;border:1px solid rgba(34,197,94,0.3);backdrop-filter:blur(8px)">WTP</a>
<a href="/wevia-master.html" title="WEVIA Master" style="padding:5px 10px;background:rgba(59,130,246,0.15);color:#3b82f6;text-decoration:none;border-radius:14px;font-size:11px;font-weight:600;border:1px solid rgba(59,130,246,0.3);backdrop-filter:blur(8px)">Master</a>
<a href="/all-ia-hub.html" title="All IA Hub" style="padding:5px 10px;background:rgba(6,182,212,0.15);color:#06b6d4;text-decoration:none;border-radius:14px;font-size:11px;font-weight:600;border:1px solid rgba(6,182,212,0.3);backdrop-filter:blur(8px)">IA Hub</a>
<a href="/orphans-hub.html" title="Orphans Hub" style="padding:5px 10px;background:rgba(168,85,247,0.15);color:#a855f7;text-decoration:none;border-radius:14px;font-size:11px;font-weight:600;border:1px solid rgba(168,85,247,0.3);backdrop-filter:blur(8px)">Orphans Hub</a>
</div>
<script src="/api/a11y-auto-enhancer.js" defer></script>
</body>
</html>

View File

@@ -663,4 +663,6 @@ updateHealthSummary = function(){
</script>
<!-- === OPUS UNIVERSAL DRILL-DOWN END === -->
<script src="/api/a11y-auto-enhancer.js" defer></script>
</body></html>

View File

@@ -124,6 +124,8 @@
<!-- === OPUS UNIVERSAL DRILL-DOWN END === -->
<script src="/api/archi-meta-badge.js" defer></script>
<script src="/api/a11y-auto-enhancer.js" defer></script>
</body>
</html>
```

View File

@@ -0,0 +1,101 @@
# Doctrine 103 - Rapport orphelins et consolidation WTP
Date: 2026-04-21 Total pages HTML: 294 Linked from 3 entry points: 63 Orphans: 231
## Classification orphelins
### legacy (19 pages)
- `admin-v2.html`
- `dormant-dashboard-v2.html`
- `enterprise-complete-v73.html`
- `l99-v2.html`
- `linkedin-automation-v96.html`
- `linkedin-control-v97.html`
- `linkedin-control-v98.html`
- `nonreg-old-v2.html`
- `nonreg-old.html`
- `realtime-monitor-v3.html`
- `test-wevia-exhaustive-v3.html`
- `weval-arena-v2.html`
- `wevia-apple-v3.html`
- `wevia-em-big4-v2.html`
- `wevia-em-linkedin-carousel-v3.html`
- ... +4 more
### test_demo (3 pages)
- `test-vm-widget.html`
- `test-wevia-e2e-live.html`
- `wevia-demo-autonomous.html`
### variants (13 pages)
- `agents-goodjob.html` (70.0 KB)
- `agents-3d.html` (28.4 KB)
- `admin-saas.html` (26.6 KB)
- `agents-iso3d.html` (25.9 KB)
- `agents-final.html` (24.4 KB)
- `agents-hd2.html` (24.4 KB)
- `agents-valuechain.html` (23.9 KB)
- `agents-ia.html` (21.0 KB)
- `agents-fleet.html` (20.5 KB)
- `agents-hd.html` (19.8 KB)
- `agents-alive.html` (16.7 KB)
- `agents-hub.html` (11.1 KB)
- `agents-unified-registry.html` (9.6 KB)
### fragments_iframes (10 pages)
- `all-screens-live.html`
- `droid-terminal.html`
- `googlecba1a80ba979325c.html`
- `office-workflow.html`
- `sessions-monitor.html`
- `vsm-pipelines.html`
- `wevia-admin.html`
- `wevia-control-center.html`
- `wevia-dashboard.html`
- `wevia-monitor.html`
### productive (186 pages)
- `weval-ops-screens.html` (660.5 KB)
- `wevia-training.html` (231.6 KB)
- `wevia.html` (157.2 KB)
- `ops-center.html` (86.4 KB)
- `cron-control.html` (86.0 KB)
- `technology-radar.html` (67.0 KB)
- `deepseek.html` (66.4 KB)
- `command-center.html` (57.9 KB)
- `use-cases.html` (56.8 KB)
- `intents-registry.html` (55.5 KB)
- `admin.html` (53.1 KB)
- `wiki.html` (46.6 KB)
- `faq-techniques.html` (44.0 KB)
- `ia-registre.html` (43.5 KB)
- `weval-master-inventory.html` (40.1 KB)
- `growth-engine.html` (38.2 KB)
- `weval-enterprise-management.html` (36.6 KB)
- `office-app.html` (34.5 KB)
- `erp-gap-fill.html` (34.5 KB)
- `blade-ai.html` (33.7 KB)
- `acquired-dashboard.html` (33.4 KB)
- `enterprise-management.html` (32.5 KB)
- `huawei-cloud.html` (31.8 KB)
- `director-center.html` (30.8 KB)
- `oss-discovery.html` (30.8 KB)
- `droid-terminal-hidden.html` (29.9 KB)
- `wevia-erp-unified.html` (29.5 KB)
- `dormant-dashboard.html` (29.4 KB)
- `ethica-pipeline.html` (29.2 KB)
- `value-stream-mapping.html` (28.8 KB)
## Action items
- productive : ajouter au WTP/wevia-master.html/all-ia-hub.html via section approprie
- legacy : marquer archive, deprecate banner, garder pour reference
- test_demo : garder dans wiki-exploration, ne pas exposer en prod
- variants : choisir canonical, redirect autres vers canonical
- fragments_iframes : normal, inclus dans pages parent
## Principe : RIEN SUPPRIMER, tout preserver, lier pour accessibilite