auto-sync-1010
This commit is contained in:
@@ -340,7 +340,7 @@ footer{padding:8px 18px;background:var(--bg2);border-top:1px solid var(--rim);fo
|
||||
</div>
|
||||
<!-- V119-SEARCH: search + sort controls -->
|
||||
<div style="display:flex;gap:8px;margin-bottom:12px;align-items:center;flex-wrap:wrap">
|
||||
<input type="text" id="dash-search" placeholder="Rechercher..." style="flex:1;min-width:200px;padding:6px 10px;background:var(--bg3);color:var(--ac);border:1px solid var(--bd);border-radius:4px;font-size:11px">
|
||||
<input type="text" id="dash-search" placeholder="Rechercher... (Cmd/Ctrl+K)" style="flex:1;min-width:200px;padding:6px 10px;background:var(--bg3);color:var(--ac);border:1px solid var(--bd);border-radius:4px;font-size:11px">
|
||||
<select id="dash-sort" style="padding:6px 10px;background:var(--bg3);color:var(--ac);border:1px solid var(--bd);border-radius:4px;font-size:11px">
|
||||
<option value="name">Nom A-Z</option>
|
||||
<option value="size">Taille</option>
|
||||
@@ -766,6 +766,24 @@ setTimeout(() => {
|
||||
};
|
||||
if (search) search.addEventListener('input', rerender);
|
||||
if (sort) sort.addEventListener('change', rerender);
|
||||
// V120-KEYBOARD: Cmd+K / Ctrl+K focus search when dashboards tab is visible
|
||||
document.addEventListener('keydown', (e) => {
|
||||
if ((e.metaKey || e.ctrlKey) && e.key === 'k') {
|
||||
const viewDash = document.getElementById('v-dashboards');
|
||||
if (viewDash && viewDash.classList.contains('on')) {
|
||||
e.preventDefault();
|
||||
const s = document.getElementById('dash-search');
|
||||
if (s) { s.focus(); s.select(); }
|
||||
}
|
||||
}
|
||||
if (e.key === 'Escape') {
|
||||
const s = document.getElementById('dash-search');
|
||||
if (s && document.activeElement === s && s.value) {
|
||||
s.value = '';
|
||||
s.dispatchEvent(new Event('input'));
|
||||
}
|
||||
}
|
||||
});
|
||||
}, 500);
|
||||
|
||||
// V114-TRAINING-LIVE: fetch real training stats
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"generated_at": "2026-04-21T10:05:01.806047",
|
||||
"generated_at": "2026-04-21T10:10:01.915981",
|
||||
"stats": {
|
||||
"total": 48,
|
||||
"pending": 32,
|
||||
"pending": 31,
|
||||
"kaouther_surfaced": 18,
|
||||
"chrome_surfaced": 3,
|
||||
"notif_only_done": 0,
|
||||
|
||||
BIN
api/blade-tasks/v121-keyboard-proof/01-search-via-cmdk.png
Normal file
BIN
api/blade-tasks/v121-keyboard-proof/01-search-via-cmdk.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 87 KiB |
BIN
api/blade-tasks/v121-keyboard-proof/02-after-escape.png
Normal file
BIN
api/blade-tasks/v121-keyboard-proof/02-after-escape.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 807 KiB |
Binary file not shown.
8
api/blade-tasks/v121-keyboard-proof/proof.json
Normal file
8
api/blade-tasks/v121-keyboard-proof/proof.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"v121": "keyboard-shortcuts",
|
||||
"cmd_k_focuses_search": true,
|
||||
"typing_filters": true,
|
||||
"escape_clears": true,
|
||||
"ctrl_k_also_works": true,
|
||||
"VERDICT": "WIRED"
|
||||
}
|
||||
@@ -1,281 +0,0 @@
|
||||
{
|
||||
"ts": "2026-04-21T08:05:01+00:00",
|
||||
"server": "s204",
|
||||
"s204": {
|
||||
"load": 1.62,
|
||||
"uptime": "2026-04-14 11:51:24",
|
||||
"ram_total_mb": 31335,
|
||||
"ram_used_mb": 12047,
|
||||
"ram_free_mb": 19287,
|
||||
"disk_total": "150G",
|
||||
"disk_used": "116G",
|
||||
"disk_free": "29G",
|
||||
"disk_pct": "81%",
|
||||
"fpm_workers": 140,
|
||||
"docker_containers": 19,
|
||||
"cpu_cores": 8
|
||||
},
|
||||
"s95": {
|
||||
"load": 0.16,
|
||||
"disk_pct": "81%",
|
||||
"status": "UP",
|
||||
"ram_total_mb": 15610,
|
||||
"ram_free_mb": 11984
|
||||
},
|
||||
"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": 110582,
|
||||
"with_phone": 155149,
|
||||
"gap_email": 51151,
|
||||
"pct_email": 68.4,
|
||||
"pct_phone": 95.9,
|
||||
"by_country": [
|
||||
{
|
||||
"country": "DZ",
|
||||
"hcps": 122337,
|
||||
"with_email": 78486,
|
||||
"with_tel": 119394,
|
||||
"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": 15143,
|
||||
"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 32 hours (healthy)",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "vaultwarden",
|
||||
"status": "Up 6 days (healthy)",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "qdrant",
|
||||
"status": "Up 6 days",
|
||||
"ports": ""
|
||||
}
|
||||
],
|
||||
"crons": {
|
||||
"active": 35
|
||||
},
|
||||
"git": {
|
||||
"head": "4e975785b AUTO-BACKUP 20260421-1005",
|
||||
"dirty": 1,
|
||||
"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": 11891
|
||||
}
|
||||
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"ok": true,
|
||||
"version": "V83-business-kpi",
|
||||
"ts": "2026-04-21T08:07:02+00:00",
|
||||
"ts": "2026-04-21T08:09:57+00:00",
|
||||
"summary": {
|
||||
"total_categories": 8,
|
||||
"total_kpis": 64,
|
||||
"ok": 38,
|
||||
"warn": 26,
|
||||
"ok": 39,
|
||||
"warn": 25,
|
||||
"fail": 0,
|
||||
"wire_needed": 0,
|
||||
"data_completeness_pct": 100
|
||||
|
||||
@@ -226,7 +226,7 @@ $kpis = [
|
||||
"title" => "📇 Architecture Quality",
|
||||
"description" => "Zero orphans. Every page wired. Full navigation integrity.",
|
||||
"kpis" => [
|
||||
["id" => "orphans_count", "label" => "Pages orphelines (is_orphan=true)", "value" => 9, "unit" => "pages", "target" => 0, "trend" => "live", "status" => "warn", "source" => "TREE.all_pages.orphans", "drill" => "/orphans-hub.html"],
|
||||
["id" => "orphans_count", "label" => "Pages orphelines (is_orphan=true)", "value" => ($_oc = safe_int('cat /tmp/wevia-pages-registry-cache.json 2>/dev/null | jq -r ".orphans_count // 0" 2>/dev/null')), "unit" => "pages", "target" => 0, "trend" => "live", "status" => ($_oc === 0 ? "ok" : "warn"), "source" => "TREE.all_pages.orphans", "drill" => "/orphans-hub.html"],
|
||||
["id" => "orphans_rescued_submodule", "label" => "Pages wired via V98 submodule", "value" => 11, "unit" => "pages", "target" => 11, "trend" => "live", "status" => "ok", "source" => "knowledge.orphans_rescue_v98", "drill" => "WTP Knowledge > Orphans Rescue"],
|
||||
["id" => "orphans_hub_inbound", "label" => "Pages wired inside orphans-hub.html", "value" => 183, "unit" => "pages", "target" => 100, "trend" => "live", "status" => "ok", "source" => "orphans-hub.html V96.22", "drill" => "/orphans-hub.html"],
|
||||
["id" => "wtp_modules_erp", "label" => "WTP ERP modules (point entrée unique)", "value" => 16, "unit" => "modules", "target" => 16, "trend" => "live", "status" => "ok", "source" => "TREE.modules count", "drill" => "/weval-technology-platform.html"],
|
||||
|
||||
Reference in New Issue
Block a user