diff --git a/api/agent-escalation.json b/api/agent-escalation.json index c4bec1bcf..adf383592 100644 --- a/api/agent-escalation.json +++ b/api/agent-escalation.json @@ -1,6 +1,6 @@ { "agent": "V41_Risk_Escalation", - "ts": "2026-04-21T12:00:02+02:00", + "ts": "2026-04-21T12:15:03+02:00", "dg_alerts_active": 7, "wevia_life_stats_preview": "{ "ok": true, diff --git a/api/blade-actions-surfaced.json b/api/blade-actions-surfaced.json index 82fedb083..fad319157 100644 --- a/api/blade-actions-surfaced.json +++ b/api/blade-actions-surfaced.json @@ -1,5 +1,5 @@ { - "generated_at": "2026-04-21T12:10:02.193929", + "generated_at": "2026-04-21T12:15:02.243628", "stats": { "total": 48, "pending": 31, diff --git a/api/blade-heartbeat.json b/api/blade-heartbeat.json index 3f0aea40b..2ccffbb82 100644 --- a/api/blade-heartbeat.json +++ b/api/blade-heartbeat.json @@ -1,8 +1,8 @@ { "status": "ALIVE", - "ts": "2026-04-21T12:00:02.286993", - "last_heartbeat": "2026-04-21T12:00:02.286993", - "last_heartbeat_ts_epoch": 1776765602, + "ts": "2026-04-21T12:15:02.133817", + "last_heartbeat": "2026-04-21T12:15:02.133817", + "last_heartbeat_ts_epoch": 1776766502, "tasks_today": 232, "tasks_week": 574, "agent_id": "blade-ops", diff --git a/api/em-kpi-cache.json b/api/em-kpi-cache.json index e69de29bb..5f029383d 100644 --- a/api/em-kpi-cache.json +++ b/api/em-kpi-cache.json @@ -0,0 +1,281 @@ +{ + "ts": "2026-04-21T10:15:01+00:00", + "server": "s204", + "s204": { + "load": 3.9, + "uptime": "2026-04-14 11:51:24", + "ram_total_mb": 31335, + "ram_used_mb": 10626, + "ram_free_mb": 20708, + "disk_total": "150G", + "disk_used": "116G", + "disk_free": "29G", + "disk_pct": "81%", + "fpm_workers": 140, + "docker_containers": 19, + "cpu_cores": 8 + }, + "s95": { + "load": 0.04, + "disk_pct": "81%", + "status": "UP", + "ram_total_mb": 15610, + "ram_free_mb": 11973 + }, + "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": 293, + "php_apis": 775, + "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": 110594, + "with_phone": 155151, + "gap_email": 51139, + "pct_email": 68.4, + "pct_phone": 95.9, + "by_country": [ + { + "country": "DZ", + "hcps": 122337, + "with_email": 78495, + "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": "b27c20baf auto-sync-1215", + "dirty": 4, + "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": 3761, + "health": { + "score": 5, + "max": 6, + "pct": 83 + }, + "elapsed_ms": 10726 +} \ No newline at end of file diff --git a/api/v83-business-kpi-latest.json b/api/v83-business-kpi-latest.json index af5a2a3ee..8f7ec6104 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-21T10:14:33+00:00", + "ts": "2026-04-21T10:15:54+00:00", "summary": { "total_categories": 8, "total_kpis": 64, diff --git a/wiki/audit-doublons-21avr-1215.md b/wiki/audit-doublons-21avr-1215.md new file mode 100644 index 000000000..edbc70e28 --- /dev/null +++ b/wiki/audit-doublons-21avr-1215.md @@ -0,0 +1,144 @@ +# Audit Doublons Complet · Opus · 21 avr 12h15 + +## État actuel /var/www/html + +**293 HTML actifs** + **572 HTML backups** (21 MB) +**775 PHP actifs** + **102 PHP backups** (4.2 MB) +**Total = 25 MB** de backups legacy + +--- + +## 1. DOUBLONS FONCTIONNELS ACTIFS (non-backup) + +### ORCHESTRATORS (14 variants actifs!) +Risque doublon : eleve - tous paraissent en prod + +| Fichier | Taille | Action proposee | +|---------|--------|-----------------| +| wevia-orchestrator.php | 5884 B | **GARDER** (canonique) | +| wevia-orchestrator-v2.php | 2932 B | Archiver si non utilise | +| wevia-brain-orchestrator.php | ? | Verifier usage | +| weval-unified-orchestrator.php | ? | Verifier usage | +| wevia-sse-orchestrator.php | ? | SSE public variant | +| wevia-sse-orchestrator-public.php | ? | Duplication avec non-public ? | +| wevia-v83-multi-agent-orchestrator.php | ? | V83 variant | +| opus5-autonomous-orchestrator.php | ? | Opus5 variant | +| opus5-autonomous-orchestrator-v3.php | ? | Opus5 v3 variant | +| opus5-plan-orchestrator.php | ? | Opus5 plan | +| orchestrator-agents.php | ? | Agents orchestrator | +| wevia-orchestrator-extra-agents.php | ? | Extra | +| wevia-orchestrator-extra-agents-v72.php | ? | v72 variant | +| wevia-orchestrator-scan.php | ? | Scan variant | + +Usage wevia-orchestrator.php: wevia-orchestrator.html + weval-ops-screens.html + WTP + wevia-master.html + +### NONREG MASTER +| Fichier | Taille | Usage | +|---------|--------|-------| +| nonreg-master.php | 11 KB | **GARDER** (canonique) | +| nonreg-master-v8.php | 9 KB | Version v8 archive a verifier | + +### FAST-PATH +| Fichier | Taille | Usage | +|---------|--------|-------| +| wevia-fast-path.php | 9 KB | Variant leger | +| wevia-fast-path-v3.php | 116 KB | **GARDER** (utilise par fast-path pipeline v3) | + +Disparite taille 9K vs 116K = pas vraiment doublons, roles differents. + +### WTP API +| Fichier | Taille | Usage | +|---------|--------|-------| +| weval-technology-platform-api.php | 50 KB | **GARDER** (canonique) | +| weval-technology-platform-api-v80.php | 6 KB | Archive v80 a verifier | + +### L99 PAGES (5 variants) +| Fichier | Taille | Role | +|---------|--------|------| +| l99.html | 21 KB | **GARDER** (canonique) | +| l99-v2.html | 19 KB | Variant v2 | +| l99-saas.html | 36 KB | SaaS view | +| l99-brain.html | 23 KB | Brain view | +| l99-fullscreen.html | 5 KB | Fullscreen | + +Chaque variant a son role potentiel. Demander user si tous utilises. + +### ADMIN PAGES +| Fichier | Taille | Role | +|---------|--------|------| +| admin.html | 54 KB | Main admin | +| admin-v2.html | 25 KB | Admin v2 | +| admin-saas.html | 27 KB | SaaS admin | +| wevia-admin.html | 212 B | **PRESQUE VIDE** (redirect probably) | +| office-admins.html | ? | Office specific | +| wevia-ia/wevia-admin.php | ~? | Main admin PHP (celui qu'on a patche) | + +--- + +## 2. BACKUPS LEGACY (a purger) + +### Top 10 fichiers avec le plus de .bak/.GOLD +| Fichier | Nb backups | Total size | +|---------|-----------|------------| +| wevia-fast-path-v3.php | **18 backups** | ~2 MB | +| wevia-master-api.php | 12 backups | ~? | +| oss-discovery.php | 12 backups | ~? | +| wevia-opus-intents.php | 7 backups | ~? | +| wevia-ops.php | 5 backups | ~? | +| wevia-autonomous.php | 5 backups | ~? | +| wevia-vault.php | 3 backups | ~? | +| wevia-exec.php | 3 backups | ~? | +| linkedin-alignment-kpi.php | 3 backups | ~? | + +### Types de backups +- `.bak-*` (temp work files): ~30 files +- `.GOLD-*-pre-*` (Opus version markers): ~400 files +- `.gold-*`: ~100 files +- `.pre-carto-banner-*`: ~40 files (16 avril carto session) +- `.v[0-9]-backup-*`: ~15 files +- `.pre-phase4-*`: ~10 files + +--- + +## 3. VRAIES POLLUTIONS NON-NECESSAIRES + +### Top candidates a purge (backup files avec GOLD officiel present) +Approche doctrine #3 GOLD rule: garder UNIQUEMENT le dernier GOLD par fichier, purger les anciens. + +Actuellement `/var/www/html` = GOLDs inline polluent. Meilleur pattern = deplacer tous les GOLDs vers `/opt/wevads/vault/` (hors web root) et garder la fonction de restauration. + +### Doublons visibles dans nginx/web +- Les 572 .html.* sont **tous accessibles en HTTP** (pollution serveur) +- Les 102 api/*.php.* sont **aussi executables** par PHP-FPM (risque) + +--- + +## 4. RECOMMANDATIONS + +### Safe actions (aucun risque) +1. **Purger les `.bak-*` temp work files** (~30 files, clairement temporaires) +2. **Archiver les `.pre-carto-banner-20260416_*`** (session 16 avril terminee) → /opt/wevads/vault/ +3. **Ajouter un .gitignore** pour `*.bak`, `*.gold-*`, `*.pre-*` dans /var/www/html/ + +### Actions avec validation utilisateur requise +4. **Valider quel orchestrator est canonique** et archiver les 13 autres si non utilises +5. **Decider sort de admin-v2/admin-saas/wevia-admin.html** vs `admin.html` +6. **Consolider l99-*.html** ou clarifier role de chaque variant +7. **Pour les .GOLD- anciens** (> 7 jours), deplacer vers /opt/wevads/vault/ + +### Actions dangereuses (REFUSE sans user confirm) +- Suppression de fichiers .html ou .php actifs (meme si "doublon") +- Modification nginx sans auth prealable +- Suppression de GOLDs recents + +--- + +## 5. STATUS AUTH (deja traite) +- 6 login pages unifiees vers /api/weval-auth-session.php +- HTTP Basic Auth ajoute sur wevia-admin.php +- 5 pw legacy accepted: YacineWeval2026 + Weval@2026 + WevalWeval2026 + weval2026 + admin123 + +--- + +**Je n'ai rien supprime.** Doctrine #14 = zero ecrasement sans autorisation. +Reponds OK pour telle action et j'execute. Sinon laisser en l'etat.