auto-sync via WEVIA git_sync_all intent 2026-04-21T10:45:00+02:00
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"agent": "V45_Leads_Sync",
|
||||
"ts": "2026-04-21T10:30:03+02:00",
|
||||
"ts": "2026-04-21T10:40:02+02:00",
|
||||
"paperclip_total": 48,
|
||||
"active_customer": 4,
|
||||
"warm_prospect": 5,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"generated_at": "2026-04-21T10:35:01.434968",
|
||||
"generated_at": "2026-04-21T10:40:01.771998",
|
||||
"stats": {
|
||||
"total": 48,
|
||||
"pending": 31,
|
||||
|
||||
BIN
api/blade-tasks/v125-widen-proof/01-84-tiles.png
Normal file
|
After Width: | Height: | Size: 1011 KiB |
BIN
api/blade-tasks/v125-widen-proof/02-filter-monitor.png
Normal file
|
After Width: | Height: | Size: 124 KiB |
BIN
api/blade-tasks/v125-widen-proof/03-filter-admin.png
Normal file
|
After Width: | Height: | Size: 85 KiB |
9
api/blade-tasks/v125-widen-proof/proof.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"v125": "widen-84-tiles-14-cats",
|
||||
"tiles_total": 84,
|
||||
"filters_total": 15,
|
||||
"all_tiles_have_star": true,
|
||||
"count_text": "84 / 84 tuiles",
|
||||
"js_errors": [],
|
||||
"VERDICT": "OK"
|
||||
}
|
||||
|
Before Width: | Height: | Size: 885 KiB After Width: | Height: | Size: 1001 KiB |
|
Before Width: | Height: | Size: 923 KiB After Width: | Height: | Size: 1.0 MiB |
BIN
api/blade-tasks/v126-proof/c7bfc950a0b57de753cc400991158f82.webm
Normal file
@@ -7,7 +7,7 @@ header('Content-Type: application/json');
|
||||
header('Access-Control-Allow-Origin: *');
|
||||
|
||||
$ROOT = '/var/www/html';
|
||||
$patterns = ['*dashboard*.html', '*-hub.html', '*-live.html', 'kpi-*.html', 'visual-*.html'];
|
||||
$patterns = ['*dashboard*.html', '*-hub.html', '*-live.html', 'kpi-*.html', 'visual-*.html', 'admin-*.html', '*monitor*.html', '*report*.html']; // V125-WIDEN
|
||||
$files = [];
|
||||
foreach ($patterns as $p) {
|
||||
$found = glob("$ROOT/$p");
|
||||
@@ -34,6 +34,10 @@ function categorize($name) {
|
||||
if (strpos($n,'ai')!==false || strpos($n,'anthropic')!==false || strpos($n,'deepseek')!==false || strpos($n,'huggingface')!==false || strpos($n,'qdrant')!==false) return ['ai','🧠','#a855f7'];
|
||||
if (strpos($n,'github')!==false || strpos($n,'google')!==false || strpos($n,'namecheap')!==false || strpos($n,'n8n')!==false || strpos($n,'automation')!==false || strpos($n,'deerflow')!==false || strpos($n,'universal')!==false) return ['integration','🔗','#64748b'];
|
||||
if (strpos($n,'dormant')!==false || strpos($n,'orphan')!==false) return ['cleanup','🗑','#94a3b8'];
|
||||
/* V125B-MOVE-ORDER: admin/monitor/report checks BEFORE all-screens/other fallback */
|
||||
if (strpos($n,'admin')!==false) return ['admin','🔒','#dc2626'];
|
||||
if (strpos($n,'monitor')!==false || strpos($n,'health')!==false || strpos($n,'status')!==false) return ['monitor','🔍','#0ea5e9'];
|
||||
if (strpos($n,'report')!==false || strpos($n,'analytics')!==false) return ['report','📃','#7c3aed'];
|
||||
if (strpos($n,'all-screens')!==false || strpos($n,'ops-screens')!==false || strpos($n,'data-hub')!==false || strpos($n,'dashboards-hub')!==false) return ['ops','🔧','#84cc16'];
|
||||
return ['other','📄','#6b7280'];
|
||||
}
|
||||
|
||||
@@ -0,0 +1,281 @@
|
||||
{
|
||||
"ts": "2026-04-21T08:40:01+00:00",
|
||||
"server": "s204",
|
||||
"s204": {
|
||||
"load": 1.26,
|
||||
"uptime": "2026-04-14 11:51:24",
|
||||
"ram_total_mb": 31335,
|
||||
"ram_used_mb": 12023,
|
||||
"ram_free_mb": 19311,
|
||||
"disk_total": "150G",
|
||||
"disk_used": "116G",
|
||||
"disk_free": "29G",
|
||||
"disk_pct": "81%",
|
||||
"fpm_workers": 141,
|
||||
"docker_containers": 19,
|
||||
"cpu_cores": 8
|
||||
},
|
||||
"s95": {
|
||||
"load": 2.41,
|
||||
"disk_pct": "81%",
|
||||
"status": "UP",
|
||||
"ram_total_mb": 15610,
|
||||
"ram_free_mb": 11960
|
||||
},
|
||||
"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": 774,
|
||||
"wiki_entries": 1928,
|
||||
"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": 110588,
|
||||
"with_phone": 155151,
|
||||
"gap_email": 51145,
|
||||
"pct_email": 68.4,
|
||||
"pct_phone": 95.9,
|
||||
"by_country": [
|
||||
{
|
||||
"country": "DZ",
|
||||
"hcps": 122337,
|
||||
"with_email": 78490,
|
||||
"with_tel": 119396,
|
||||
"pct_email": 64.2,
|
||||
"pct_tel": 97.6
|
||||
},
|
||||
{
|
||||
"country": "MA",
|
||||
"hcps": 19723,
|
||||
"with_email": 15074,
|
||||
"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 4 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 4 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 33 hours (healthy)",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "vaultwarden",
|
||||
"status": "Up 6 days (healthy)",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "qdrant",
|
||||
"status": "Up 6 days",
|
||||
"ports": ""
|
||||
}
|
||||
],
|
||||
"crons": {
|
||||
"active": 35
|
||||
},
|
||||
"git": {
|
||||
"head": "766f15411 auto-sync-1040",
|
||||
"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": 3700,
|
||||
"health": {
|
||||
"score": 5,
|
||||
"max": 6,
|
||||
"pct": 83
|
||||
},
|
||||
"elapsed_ms": 9957
|
||||
}
|
||||
@@ -1,27 +1,27 @@
|
||||
{
|
||||
"ok": true,
|
||||
"agent": "V42_MQL_Scoring_Agent_REAL",
|
||||
"ts": "2026-04-21T08:30:01+00:00",
|
||||
"ts": "2026-04-21T08:40:02+00:00",
|
||||
"status": "DEPLOYED_AUTO",
|
||||
"deployed": true,
|
||||
"algorithm": "weighted_behavioral_signals",
|
||||
"signals_tracked": {
|
||||
"wtp_engagement": 80,
|
||||
"wtp_engagement": 26,
|
||||
"chat_engagement": 0,
|
||||
"roi_tool": 0,
|
||||
"email_opened": 0
|
||||
},
|
||||
"avg_score": 20,
|
||||
"avg_score": 6.5,
|
||||
"mql_threshold": 50,
|
||||
"sql_threshold": 75,
|
||||
"leads_captured": 48,
|
||||
"mql_auto_scored": 19,
|
||||
"sql_auto_scored": 8,
|
||||
"mql_auto_pct": 40,
|
||||
"mql_auto_scored": 18,
|
||||
"sql_auto_scored": 7,
|
||||
"mql_auto_pct": 37,
|
||||
"improvement_vs_manual": {
|
||||
"before_manual_pct": 33.3,
|
||||
"after_auto_pct": 40,
|
||||
"delta": 6.700000000000003
|
||||
"after_auto_pct": 37,
|
||||
"delta": 3.700000000000003
|
||||
},
|
||||
"paperclip_db_ok": true,
|
||||
"paperclip_tables": 1,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"ok": true,
|
||||
"version": "V83-business-kpi",
|
||||
"ts": "2026-04-21T08:35:24+00:00",
|
||||
"ts": "2026-04-21T08:40:17+00:00",
|
||||
"summary": {
|
||||
"total_categories": 8,
|
||||
"total_kpis": 64,
|
||||
|
||||
110
wiki/V124-V125-bulk-section-recent-theme.md
Normal file
@@ -0,0 +1,110 @@
|
||||
# V124-V125 Opus WIRE - Bulk Clear + Pinned Section + Recent Badge + Theme Toggle · 21avr 10:40
|
||||
|
||||
## Context
|
||||
Continuations demandées par Yacine:
|
||||
- Bulk unpin ("Clear pins" button)
|
||||
- Section "Pinned" séparée visuellement avec header ⭐ Favorites
|
||||
- Badge "updated recently" sur tuiles mtime < 24h
|
||||
- Thème light/dark toggle
|
||||
|
||||
## Livrables V124 (enrichissement DASHBOARDS tab)
|
||||
|
||||
### 1. Section Favorites séparée
|
||||
Nouveau bloc au-dessus de la grille normale:
|
||||
```html
|
||||
<div id="dash-pinned-section">
|
||||
<div>⭐ Favorites · N dashboards</div>
|
||||
<div id="dash-pinned-grid">...pinned tiles...</div>
|
||||
</div>
|
||||
```
|
||||
- Affiché uniquement si au moins 1 pin (auto show/hide via JS)
|
||||
- Header gold borders, séparateur visuel avec le reste
|
||||
- Tuiles pinned ne figurent plus dans la grid principale (évite doublon)
|
||||
|
||||
### 2. Bulk "Clear pins" button
|
||||
- Position: à droite du counter dans la row de contrôles
|
||||
- Couleur gold avec icône ⭐
|
||||
- Click → `confirm("Clear all pins?")` puis reset URL hash
|
||||
- Auto-show quand ≥1 pin, auto-hide sinon
|
||||
|
||||
### 3. Badge "new" sur mtime < 24h
|
||||
```js
|
||||
function recentBadge(mtime){
|
||||
const age = Date.now() - new Date(mtime).getTime();
|
||||
if(age < 24*3600*1000) return '<span title="Updated <24h" style="color:#10b981">✨ new</span>';
|
||||
return '';
|
||||
}
|
||||
```
|
||||
Highlight vert ✨ pour les dashboards modifiés récemment.
|
||||
|
||||
## Livrables V125 (thème light/dark)
|
||||
|
||||
### 1. Bouton toggle dans la tab bar
|
||||
- Position: margin-left:auto (à droite des 7 tabs)
|
||||
- Icône: ☀ en dark mode, ☾ en light mode
|
||||
- Class `.tab` pour cohérence visuelle
|
||||
|
||||
### 2. CSS light theme mappé aux vars existantes
|
||||
```css
|
||||
body.light{
|
||||
--bg:#fafafa; --bg2:#f0f0f0; --bg3:#e4e4e7;
|
||||
--rim:#d4d4d8; --t:#18181b; --mu:#52525b; --dm:#71717a;
|
||||
--cy:#0891b2; --gr:#059669; --vl:#7c3aed;
|
||||
--am:#d97706; --rd:#dc2626
|
||||
}
|
||||
```
|
||||
Override complet des 12 CSS vars existantes dans `:root`.
|
||||
|
||||
### 3. Persist via URL hash
|
||||
```
|
||||
https://weval-consulting.com/all-ia-hub.html#theme=light&pins=a,b
|
||||
```
|
||||
- Cohabite avec le hash des pins (V123)
|
||||
- Shareable, bookmarkable, zero localStorage
|
||||
|
||||
## État final (verified direct HTTPS)
|
||||
|
||||
Markers présents dans /var/www/html/all-ia-hub.html (vérifié via curl direct):
|
||||
```
|
||||
V124-ENRICH : 5 markers
|
||||
V125-THEME : 3 markers
|
||||
__dashClearAllPins : 2 refs
|
||||
__toggleTheme : 2 refs
|
||||
body.light : 5 CSS rules
|
||||
dash-pinned-section : 2 refs
|
||||
recentBadge : 2 refs
|
||||
```
|
||||
|
||||
Hub HTTP: **200** · size 50.5KB (vs 45.3KB V123 · +5.2KB additif)
|
||||
|
||||
## Séquence complète V116→V125
|
||||
|
||||
| V | Feature |
|
||||
|---|---|
|
||||
| V116 | DASHBOARDS tab · 69 tuiles · 12 catégories |
|
||||
| V117 | HTTP status badges |
|
||||
| V118 | Intent chat `dashboards status` |
|
||||
| V119 | Search + Sort + Counter |
|
||||
| V120 | Keyboard Cmd+K / Escape |
|
||||
| V121 | E2E proof keyboard |
|
||||
| V122 | CSS polish (sticky, hover, fadeIn) |
|
||||
| V123 | Favorites/pinning URL hash |
|
||||
| **V124** | **Bulk clear + Pinned section + Recent badge** |
|
||||
| **V125** | **Light/dark theme toggle** |
|
||||
|
||||
## GOLD backups
|
||||
- `/opt/wevads/vault/all-ia-hub.html.GOLD-V124-pre-enrich`
|
||||
- `/opt/wevads/vault/all-ia-hub.html.GOLD-V125-pre-theme`
|
||||
|
||||
## Notes techniques
|
||||
|
||||
### E2E Playwright non-exécuté ce tour
|
||||
CX endpoint (FPM pool partagé) retourne 502 sur requêtes >60s pendant saturation (V9.55 pattern identifié par autre Claude). Markers vérifiés via curl direct HTTPS sur le Hub (méthode alternative fiable). Le comportement UI est testable manuellement (`https://weval-consulting.com/all-ia-hub.html` → tab DASHBOARDS → pin tiles → observe section / click ☀ toggle).
|
||||
|
||||
### Zéro régression
|
||||
Tous markers V109-V123 toujours présents. Hub HTTP 200. NR stable 199/201 (2 transitoires master non-causés par V124/V125).
|
||||
|
||||
## Doctrines respectées
|
||||
#1 scan · #3 GOLD · #4 honnêteté (marqueurs vérifiés même sans E2E) · #13 cause racine · **#14 ADDITIF PUR** · #16 NR · **#60 UX premium** (section séparée, toggle intuitif, badges contextuels) · #100
|
||||
|
||||
## Sessions consécutives sans régression applicative : 96+
|
||||