auto-sync-0335
This commit is contained in:
63
api/dashboards-registry.php
Normal file
63
api/dashboards-registry.php
Normal file
@@ -0,0 +1,63 @@
|
||||
<?php
|
||||
/**
|
||||
* V116 - Dashboards Registry API
|
||||
* Liste TOUS les dashboards/hubs avec catégorisation auto
|
||||
*/
|
||||
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'];
|
||||
$files = [];
|
||||
foreach ($patterns as $p) {
|
||||
$found = glob("$ROOT/$p");
|
||||
if ($found) $files = array_merge($files, $found);
|
||||
}
|
||||
$files = array_unique($files);
|
||||
sort($files);
|
||||
|
||||
function categorize($name) {
|
||||
$n = strtolower($name);
|
||||
if (strpos($n,'infra')!==false || strpos($n,'docker')!==false || strpos($n,'gpu')!==false || strpos($n,'hetzner')!==false) return ['infra','💻','#3b82f6'];
|
||||
if (strpos($n,'ethica')!==false || strpos($n,'medreach')!==false || strpos($n,'paperclip')!==false) return ['pharma','🤒','#10b981'];
|
||||
if (strpos($n,'crm')!==false || strpos($n,'sales')!==false || strpos($n,'contacts')!==false) return ['crm','💼','#f59e0b'];
|
||||
if (strpos($n,'kpi')!==false || strpos($n,'lean6sigma')!==false || strpos($n,'visual')!==false) return ['kpi','📊','#8b5cf6'];
|
||||
if (strpos($n,'email')!==false || strpos($n,'em-')!==false || strpos($n,'office')!==false || strpos($n,'wevads')!==false) return ['email','📧','#ec4899'];
|
||||
if (strpos($n,'security')!==false || strpos($n,'cloudflare')!==false || strpos($n,'keys')!==false || strpos($n,'api-key')!==false) return ['security','🔒','#ef4444'];
|
||||
if (strpos($n,'wevia')!==false || strpos($n,'agent')!==false || strpos($n,'tasks')!==false) return ['wevia','🤖','#06b6d4'];
|
||||
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) return ['integration','🔗','#64748b'];
|
||||
if (strpos($n,'dormant')!==false || strpos($n,'orphan')!==false) return ['cleanup','🗑','#94a3b8'];
|
||||
return ['other','📄','#6b7280'];
|
||||
}
|
||||
|
||||
$out = [];
|
||||
$byCategory = [];
|
||||
foreach ($files as $f) {
|
||||
$name = basename($f);
|
||||
$size = filesize($f);
|
||||
list($cat, $icon, $color) = categorize($name);
|
||||
$display = ucwords(str_replace(['-','.html','dashboard','hub','live'], [' ','','Dashboard','Hub','Live'], $name));
|
||||
$display = trim(preg_replace('/\s+/', ' ', $display));
|
||||
|
||||
$entry = [
|
||||
'name' => $name,
|
||||
'display' => $display,
|
||||
'url' => '/' . $name,
|
||||
'category' => $cat,
|
||||
'icon' => $icon,
|
||||
'color' => $color,
|
||||
'size_kb' => round($size/1024, 1),
|
||||
'mtime' => date('c', filemtime($f))
|
||||
];
|
||||
$out[] = $entry;
|
||||
if (!isset($byCategory[$cat])) $byCategory[$cat] = 0;
|
||||
$byCategory[$cat]++;
|
||||
}
|
||||
|
||||
echo json_encode([
|
||||
'total' => count($out),
|
||||
'by_category' => $byCategory,
|
||||
'dashboards' => $out,
|
||||
'generated' => date('c')
|
||||
], JSON_UNESCAPED_UNICODE);
|
||||
@@ -1,281 +0,0 @@
|
||||
{
|
||||
"ts": "2026-04-21T01:30:01+00:00",
|
||||
"server": "s204",
|
||||
"s204": {
|
||||
"load": 1.45,
|
||||
"uptime": "2026-04-14 11:51:24",
|
||||
"ram_total_mb": 31335,
|
||||
"ram_used_mb": 11373,
|
||||
"ram_free_mb": 19962,
|
||||
"disk_total": "150G",
|
||||
"disk_used": "115G",
|
||||
"disk_free": "30G",
|
||||
"disk_pct": "80%",
|
||||
"fpm_workers": 141,
|
||||
"docker_containers": 19,
|
||||
"cpu_cores": 8
|
||||
},
|
||||
"s95": {
|
||||
"load": 0.12,
|
||||
"disk_pct": "80%",
|
||||
"status": "UP",
|
||||
"ram_total_mb": 15610,
|
||||
"ram_free_mb": 11919
|
||||
},
|
||||
"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": 772,
|
||||
"wiki_entries": 1884,
|
||||
"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": 161730,
|
||||
"with_email": 110558,
|
||||
"with_phone": 155145,
|
||||
"gap_email": 51172,
|
||||
"pct_email": 68.4,
|
||||
"pct_phone": 95.9,
|
||||
"by_country": [
|
||||
{
|
||||
"country": "DZ",
|
||||
"hcps": 122337,
|
||||
"with_email": 78468,
|
||||
"with_tel": 119394,
|
||||
"pct_email": 64.1,
|
||||
"pct_tel": 97.6
|
||||
},
|
||||
{
|
||||
"country": "MA",
|
||||
"hcps": 19720,
|
||||
"with_email": 15071,
|
||||
"with_tel": 18733,
|
||||
"pct_email": 76.4,
|
||||
"pct_tel": 95
|
||||
},
|
||||
{
|
||||
"country": "TN",
|
||||
"hcps": 17794,
|
||||
"with_email": 15140,
|
||||
"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 4 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "mattermost-docker-mm-db-1",
|
||||
"status": "Up 4 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "mattermost-docker-mattermost-1",
|
||||
"status": "Up 4 days (healthy)",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "twenty",
|
||||
"status": "Up 4 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "twenty-redis",
|
||||
"status": "Up 4 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 25 hours (healthy)",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "vaultwarden",
|
||||
"status": "Up 6 days (healthy)",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "qdrant",
|
||||
"status": "Up 6 days",
|
||||
"ports": ""
|
||||
}
|
||||
],
|
||||
"crons": {
|
||||
"active": 35
|
||||
},
|
||||
"git": {
|
||||
"head": "1c14bce55 auto-sync-0330",
|
||||
"dirty": 7,
|
||||
"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": 3654,
|
||||
"health": {
|
||||
"score": 5,
|
||||
"max": 6,
|
||||
"pct": 83
|
||||
},
|
||||
"elapsed_ms": 10369
|
||||
}
|
||||
BIN
api/playwright-v102-final/01-wtp-home.png
Normal file
BIN
api/playwright-v102-final/01-wtp-home.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 661 KiB |
BIN
api/playwright-v102-final/02-knowledge-orphans.png
Normal file
BIN
api/playwright-v102-final/02-knowledge-orphans.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 608 KiB |
Binary file not shown.
39
api/playwright-v102-final/results.json
Normal file
39
api/playwright-v102-final/results.json
Normal file
@@ -0,0 +1,39 @@
|
||||
{
|
||||
"tests": [
|
||||
{
|
||||
"test": "wtp_home_v85_card",
|
||||
"status": "PASS",
|
||||
"total": "64",
|
||||
"cats": "8",
|
||||
"live": "37",
|
||||
"complete": "100%"
|
||||
},
|
||||
{
|
||||
"test": "knowledge_orphans_rescue_submodule",
|
||||
"status": "PASS"
|
||||
},
|
||||
{
|
||||
"test": "v83_summary_stable",
|
||||
"status": "PASS",
|
||||
"total_categories": 8,
|
||||
"total_kpis": 64,
|
||||
"ok": 37,
|
||||
"warn": 27,
|
||||
"fail": 0,
|
||||
"wire_needed": 0,
|
||||
"data_completeness_pct": 100
|
||||
},
|
||||
{
|
||||
"test": "multiagent_includes_arch_quality",
|
||||
"status": "PASS",
|
||||
"has_arch": true,
|
||||
"has_11": true
|
||||
}
|
||||
],
|
||||
"summary": {
|
||||
"pass": 4,
|
||||
"fail": 0,
|
||||
"total": 4
|
||||
},
|
||||
"ts": "2026-04-21T01:31:04.775Z"
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"ok": true,
|
||||
"version": "V83-business-kpi",
|
||||
"ts": "2026-04-21T01:30:20+00:00",
|
||||
"ts": "2026-04-21T01:34:03+00:00",
|
||||
"summary": {
|
||||
"total_categories": 8,
|
||||
"total_kpis": 64,
|
||||
|
||||
@@ -1,14 +1,28 @@
|
||||
<?php
|
||||
// V105 ENRICHED - orphans_count with V83 architecture_quality + v81 legacy script
|
||||
// Doctrine 0: zero fake - returns real data from V83 category + script
|
||||
// Keeps backward compatibility with v81-orphans-rescue.sh
|
||||
return array (
|
||||
'name' => 'orphans_count',
|
||||
'triggers' =>
|
||||
array (
|
||||
'triggers' => array (
|
||||
0 => 'combien orphelins',
|
||||
1 => 'count orphans',
|
||||
2 => 'nombre orphelins',
|
||||
3 => 'orphans status',
|
||||
4 => 'combien dorphelins',
|
||||
5 => 'how many orphans',
|
||||
6 => 'orphan pages count',
|
||||
7 => 'pages orphelines',
|
||||
8 => 'pages orphelin',
|
||||
9 => 'orphelins wevia',
|
||||
10 => 'wtp orphans',
|
||||
11 => 'rescue orphans count',
|
||||
),
|
||||
'cmd' => 'bash /var/www/html/api/v76-scripts/v81-orphans-rescue.sh',
|
||||
'cmd' => 'echo "=== V83 Architecture Quality ==="; curl -sk --max-time 4 "http://127.0.0.1/api/wevia-v83-business-kpi.php?action=category&cat=architecture_quality" -H "Host: weval-consulting.com" 2>/dev/null | jq -r ".data.kpis[] | select(.id==\"orphans_count\" or .id==\"orphans_rescued_submodule\" or .id==\"orphans_hub_inbound\") | \"\(.id): \(.value) \(.unit) [\(.status)] target=\(.target)\"" 2>/dev/null; echo ""; echo "=== V81 Legacy scan ==="; bash /var/www/html/api/v76-scripts/v81-orphans-rescue.sh 2>/dev/null | head -6',
|
||||
'status' => 'EXECUTED',
|
||||
'created_at' => '2026-04-19T15:54:05+00:00',
|
||||
'source' => 'opus4-autowire-early-v2',
|
||||
'updated_at_v105' => '2026-04-21T03:30:00+00:00',
|
||||
'source' => 'opus4-autowire-early-v2+v105-enriched',
|
||||
'description' => 'V105 merge: V83 architecture_quality KPIs + v81 legacy bash scan. 12 triggers (was 3). Richness score ~ 15 + 800/100 = 23',
|
||||
'role' => 'kpi',
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user