Files
wevia-brain/s89-arsenal-screens/brain-central.html
2026-04-12 23:01:36 +02:00

398 lines
32 KiB
HTML
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php include_once("/opt/wevads-arsenal/public/api/wevads-metrics.php"); ?>
<?php
@$_db=new PDO("pgsql:host=localhost;dbname=adx_system","admin","admin123");$_db->exec("SET search_path TO admin");
$_w=(int)$_db->query("SELECT COUNT(*) FROM warmup_accounts WHERE status='warming'")->fetchColumn();
$_wa=(int)$_db->query("SELECT COUNT(*) FROM warmup_accounts")->fetchColumn();
$_sd=(int)$_db->query("SELECT COUNT(*) FROM seed_accounts")->fetchColumn();
$_bc=(int)$_db->query("SELECT COUNT(*) FROM brain_send_configs")->fetchColumn();
$_bw=(int)$_db->query("SELECT COUNT(*) FROM brain_send_configs WHERE is_winner=true")->fetchColumn();
$_ba=(int)$_db->query("SELECT COUNT(*) FROM brain_send_configs WHERE status='active'")->fetchColumn();
$_o365=(int)$_db->query("SELECT COUNT(*) FROM o365_accounts")->fetchColumn();
$_sc=(int)$_db->query("SELECT COUNT(*) FROM send_contacts")->fetchColumn();
$_sr=(int)$_db->query("SELECT COUNT(*) FROM scrapping_results")->fetchColumn();
$_oc=(int)$_db->query("SELECT COUNT(*) FROM offer_creatives")->fetchColumn();
$_of=(int)$_db->query("SELECT COUNT(*) FROM offers")->fetchColumn();
$_ps=(int)$_db->query("SELECT COUNT(*) FROM personas")->fetchColumn();
$_cv=(int)$_db->query("SELECT COUNT(*) FROM conversion_log WHERE source='real'")->fetchColumn();
$_cap=$_w*50;
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
<meta charset="UTF-8">
<title>WEVADS - Brain IA Central - WEVADS</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;600;700&family=DM+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
<style>
:root{--bg:#030308;--card:#0f0f1a;--hover:#1a1a2e;--cyan:#00ffff;--green:#00ff88;--purple:#bf00ff;--orange:#ff6600;--red:#ff3366;--text:#fff;--dim:#667;--border:rgba(0,255,255,0.25)}
*{margin:0;padding:0;box-sizing:border-box}
body{font-family:'DM Sans',sans-serif;background:var(--bg);color:var(--text);min-height:100vh;padding:15px}
.container{max-width:1800px;margin:0 auto}
.header{display:flex;justify-content:space-between;align-items:center;padding:20px;background:linear-gradient(135deg,rgba(0,255,255,0.06),rgba(191,0,255,0.06));border:1px solid var(--border);border-radius:14px;margin-bottom:15px}
.logo{display:flex;align-items:center;gap:15px}
.logo-icon{width:55px;height:55px;background:linear-gradient(135deg,var(--cyan),var(--purple));border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:28px}
.logo h1{font-family:'JetBrains Mono',sans-serif;font-size:1.6em;background:linear-gradient(90deg,var(--cyan),var(--green));-webkit-background-clip:text;-webkit-text-fill-color:transparent}
.stats{display:flex;gap:12px}
.stat{text-align:center;padding:10px 18px;background:rgba(0,0,0,0.4);border:1px solid var(--border);border-radius:8px}
.stat-val{font-family:'JetBrains Mono',sans-serif;font-size:1.4em;color:var(--cyan)}
.stat-lbl{font-size:0.65em;color:var(--dim);text-transform:uppercase}
.breadcrumb{display:flex;align-items:center;gap:8px;padding:10px 18px;background:var(--card);border:1px solid var(--border);border-radius:8px;margin-bottom:15px;font-family:'JetBrains Mono',monospace;font-size:0.8em}
.bc-item{color:var(--dim);cursor:pointer;padding:4px 8px;border-radius:4px}
.bc-item:hover{color:var(--cyan);background:rgba(0,255,255,0.1)}
.bc-item.active{color:var(--green);font-weight:600}
.section{font-family:'JetBrains Mono',sans-serif;font-size:1.1em;margin:20px 0 12px;display:flex;align-items:center;gap:10px}
.section i{color:var(--cyan)}
.grid{display:grid;gap:12px}
.g3{grid-template-columns:repeat(3,1fr)}
.g4{grid-template-columns:repeat(4,1fr)}
.card{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:18px;cursor:pointer;transition:0.25s;position:relative}
.card:hover{transform:translateY(-4px);border-color:var(--cyan);box-shadow:0 0 20px rgba(0,255,255,0.25)}
.card-head{display:flex;align-items:center;gap:12px;margin-bottom:10px}
.card-icon{width:42px;height:42px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:20px}
.card-icon.cyan{background:linear-gradient(135deg,var(--cyan),#0088ff)}
.card-icon.green{background:linear-gradient(135deg,var(--green),var(--cyan))}
.card-icon.purple{background:linear-gradient(135deg,var(--purple),#ff00aa)}
.card-icon.orange{background:linear-gradient(135deg,var(--orange),#ff0)}
.card-title{font-family:'JetBrains Mono',sans-serif;font-size:1em;font-weight:600}
.card-sub{font-size:0.75em;color:var(--dim)}
.card-stats{display:flex;gap:10px;margin-top:10px}
.card-s{flex:1;text-align:center;padding:6px;background:rgba(0,0,0,0.3);border-radius:6px}
.card-s-v{font-family:'JetBrains Mono',monospace;font-size:1.1em;color:var(--green)}
.card-s-l{font-size:0.6em;color:var(--dim);text-transform:uppercase}
.card-arrow{position:absolute;right:15px;top:50%;transform:translateY(-50%);color:var(--border)}
.card:hover .card-arrow{color:var(--cyan)}
.view{display:none}
.view.active{display:block}
.list{background:var(--card);border:1px solid var(--border);border-radius:10px;overflow:hidden}
.list-item{display:flex;align-items:center;padding:12px 18px;border-bottom:1px solid rgba(255,255,255,0.04);cursor:pointer}
.list-item:hover{background:var(--hover)}
.list-item:last-child{border:none}
.list-icon{width:32px;height:32px;border-radius:8px;display:flex;align-items:center;justify-content:center;margin-right:12px;background:rgba(0,255,255,0.1);color:var(--cyan)}
.list-info{flex:1}
.list-name{font-weight:600}
.list-path{font-family:'JetBrains Mono',monospace;font-size:0.7em;color:var(--dim)}
.badge{padding:3px 10px;border-radius:12px;font-size:0.65em;font-weight:600;margin-left:8px}
.b-ok{background:rgba(0,255,136,0.15);color:var(--green)}
.b-kb{background:rgba(255,102,0,0.15);color:var(--orange)}
.b-api{background:rgba(0,136,255,0.15);color:#0088ff}
.btn-s{width:28px;height:28px;border:none;border-radius:6px;background:rgba(0,255,255,0.1);color:var(--cyan);cursor:pointer;margin-left:5px}
.btn-s:hover{background:var(--cyan);color:var(--bg)}
.detail{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:20px;margin-top:15px}
.detail h2{font-family:'JetBrains Mono',sans-serif;margin-bottom:15px}
.form-g{margin-bottom:12px}
.form-l{font-size:0.7em;color:var(--dim);text-transform:uppercase;margin-bottom:4px}
.form-i{width:100%;padding:10px;background:rgba(0,0,0,0.4);border:1px solid var(--border);border-radius:6px;color:var(--text);font-family:'JetBrains Mono',monospace}
.form-i:focus{outline:none;border-color:var(--cyan)}
.toggle{width:46px;height:24px;background:rgba(0,0,0,0.4);border:1px solid var(--border);border-radius:12px;position:relative;cursor:pointer;display:inline-block}
.toggle.on{background:rgba(0,255,136,0.25);border-color:var(--green)}
.toggle::after{content:'';position:absolute;width:18px;height:18px;background:var(--dim);border-radius:50%;top:2px;left:2px;transition:0.2s}
.toggle.on::after{left:24px;background:var(--green)}
.btn{padding:10px 18px;border:none;border-radius:6px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.btn-p{background:var(--cyan);color:var(--bg)}
.btn-sec{background:transparent;border:1px solid var(--border);color:var(--text)}
.btn-grp{display:flex;gap:8px;margin-top:15px}
.providers{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:15px 0}
.prov{padding:12px;background:rgba(0,0,0,0.3);border:1px solid rgba(191,0,255,0.2);border-radius:8px;text-align:center;cursor:pointer}
.prov:hover{border-color:var(--purple)}
.prov.on{border-color:var(--green);box-shadow:0 0 10px rgba(0,255,136,0.2)}
.tags{display:flex;flex-wrap:wrap;gap:6px;margin:15px 0}
.tag{font-family:'JetBrains Mono',monospace;font-size:0.7em;padding:4px 10px;background:rgba(0,255,255,0.1);border:1px solid rgba(0,255,255,0.2);border-radius:5px;color:var(--cyan);cursor:pointer}
.tag.purple{background:rgba(191,0,255,0.1);border-color:rgba(191,0,255,0.2);color:var(--purple)}
@media(max-width:1000px){.g3,.g4{grid-template-columns:repeat(2,1fr)}.providers{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.g3,.g4{grid-template-columns:1fr}.header{flex-direction:column;gap:15px}}
.wv-status{position:fixed;top:12px;right:140px;z-index:9998;background:rgba(52,211,153,.15);border:1px solid #34d399;border-radius:12px;padding:3px 10px;color:#34d399;font-size:10px;font-weight:700;font-family:'JetBrains Mono',monospace}
</style>
<link rel="stylesheet" href="wevads-global.css?v1770777318">
</head>
<body>
<div class="container">
<header class="header">
<div class="logo">
<div class="logo-icon">🧠</div>
<div><h1>Brain IA Central</h1><p style="color:var(--dim)">Architecture Complète • Drilldown • Édition Live</p></div>
</div>
<div class="stats">
<div class="stat"><div class="stat-val"><?=$_bw?></div><div class="stat-lbl">Instances</div></div>
<div class="stat"><div class="stat-val"><?=$_bc?></div><div class="stat-lbl">Tables</div></div>
<div class="stat"><div class="stat-val"><?=$_bw?></div><div class="stat-lbl">Providers</div></div>
<div class="stat"><div class="stat-val"><?=$_ba?></div><div class="stat-lbl">DM+Sansfaces</div></div>
</div>
</header>
<nav class="breadcrumb" id="bc"><span class="bc-item active" onclick="goHome()"><i class="fas fa-home"></i> Vue Globale</span></nav>
<div id="L0" class="view active">
<div class="section"><i class="fas fa-server"></i> SERVEUR HETZNER (89.167.40.150)</div>
<div class="grid g3">
<div class="card" onclick="showCat('wevads')"><div class="card-head"><div class="card-icon cyan">📦</div><div><div class="card-title">WEVADS</div><div class="card-sub">:5821 • App Principale</div></div></div><div class="card-stats"><div class="card-s"><div class="card-s-v"><?=round($_ba/$_bc*100)?></div><div class="card-s-l">Pages</div></div><div class="card-s"><div class="card-s-v">4</div><div class="card-s-l">Widgets</div></div></div><span class="card-arrow"></span></div>
<div class="card" onclick="showCat('fmgapp')"><div class="card-head"><div class="card-icon purple">📁</div><div><div class="card-title">FMGAPP</div><div class="card-sub">:5822 • File Manager</div></div></div><div class="card-stats"><div class="card-s"><div class="card-s-v">1</div><div class="card-s-l">Pages</div></div></div><span class="card-arrow"></span></div>
<div class="card" onclick="showCat('bcgapp')"><div class="card-head"><div class="card-icon orange">💾</div><div><div class="card-title">BCGAPP</div><div class="card-sub">:5823 • Backup DKIM</div></div></div><div class="card-stats"><div class="card-s"><div class="card-s-v">9</div><div class="card-s-l">Pages</div></div></div><span class="card-arrow"></span></div>
</div>
<div class="section"><i class="fas fa-brain"></i> BRAIN IA SYSTEM</div>
<div class="grid g3">
<div class="card" onclick="showCat('brain')"><div class="card-head"><div class="card-icon green">📧</div><div><div class="card-title">BRAIN ENGINE</div><div class="card-sub">Email Deliverability</div></div></div><div class="card-stats"><div class="card-s"><div class="card-s-v">17</div><div class="card-s-l">Tables</div></div><div class="card-s"><div class="card-s-v">6</div><div class="card-s-l">Winners</div></div></div><span class="card-arrow"></span></div>
<div class="card" onclick="showCat('hamid')"><div class="card-head"><div class="card-icon purple">🤖</div><div><div class="card-title">HAMID IA</div><div class="card-sub">11 Providers • 22 Tables</div></div></div><div class="card-stats"><div class="card-s"><div class="card-s-v">22</div><div class="card-s-l">Tables</div></div><div class="card-s"><div class="card-s-v">11</div><div class="card-s-l">Providers</div></div></div><span class="card-arrow"></span></div>
<div class="card" onclick="showCat('kb')"><div class="card-head"><div class="card-icon orange">📚</div><div><div class="card-title">KNOWLEDGE BASES</div><div class="card-sub">6 Bases Partagées</div></div></div><div class="card-stats"><div class="card-s"><div class="card-s-v">6</div><div class="card-s-l">KB</div></div></div><span class="card-arrow"></span></div>
</div>
<div class="section"><i class="fas fa-desktop"></i> INTERFACES HAMID IA</div>
<div class="grid g4">
<div class="card" onclick="showCat('ia_chat')"><div class="card-head"><div class="card-icon cyan">💬</div><div><div class="card-title">FULLSCREEN CHAT</div><div class="card-sub">DM+Sansface principale</div></div></div><span class="card-arrow"></span></div>
<div class="card" onclick="showCat('ia_cli')"><div class="card-head"><div class="card-icon green">📟</div><div><div class="card-title">CLI & TERMINAL</div><div class="card-sub">Ligne de commande</div></div></div><span class="card-arrow"></span></div>
<div class="card" onclick="showCat('ia_code')"><div class="card-head"><div class="card-icon purple">💻</div><div><div class="card-title">CODE & DEV</div><div class="card-sub">Assistant code</div></div></div><span class="card-arrow"></span></div>
<div class="card" onclick="showCat('ia_ssh')"><div class="card-head"><div class="card-icon orange">🔌</div><div><div class="card-title">SSH & SERVER</div><div class="card-sub">Accès serveur</div></div></div><span class="card-arrow"></span></div>
</div>
<div class="grid g4" style="margin-top:12px">
<div class="card" onclick="showCat('ia_canvas')"><div class="card-head"><div class="card-icon purple">🎨</div><div><div class="card-title">CANVAS & VISUAL</div><div class="card-sub">Éditeur visuel</div></div></div><span class="card-arrow"></span></div>
<div class="card" onclick="showCat('ia_search')"><div class="card-head"><div class="card-icon cyan">🔍</div><div><div class="card-title">SEARCH & KB</div><div class="card-sub">Recherche KB</div></div></div><span class="card-arrow"></span></div>
<div class="card" onclick="showCat('ia_gen')"><div class="card-head"><div class="card-icon green"></div><div><div class="card-title">GENERATE</div><div class="card-sub">Génération contenu</div></div></div><span class="card-arrow"></span></div>
<div class="card" onclick="showCat('ia_admin')"><div class="card-head"><div class="card-icon orange">⚙️</div><div><div class="card-title">ADMIN & CONFIG</div><div class="card-sub">Paramètres</div></div></div><span class="card-arrow"></span></div>
</div>
<div class="section"><i class="fas fa-th-large"></i> WIDGETS & DASHBOARDS</div>
<div class="grid g4">
<div class="card" onclick="showCat('widgets')"><div class="card-head"><div class="card-icon cyan">📊</div><div><div class="card-title">WIDGETS PUBLICS</div><div class="card-sub">Dashboards HTML</div></div></div><span class="card-arrow"></span></div>
<div class="card" onclick="showCat('widgets_int')"><div class="card-head"><div class="card-icon green">🔒</div><div><div class="card-title">WIDGETS INTERNES</div><div class="card-sub">Admin seulement</div></div></div><span class="card-arrow"></span></div>
<div class="card" onclick="showCat('deliverads')"><div class="card-head"><div class="card-icon purple">🚀</div><div><div class="card-title">DELIVERADS</div><div class="card-sub">Brain Email</div></div></div><span class="card-arrow"></span></div>
<div class="card" onclick="showCat('commonia')"><div class="card-head"><div class="card-icon orange">🌐</div><div><div class="card-title">COMMONIA</div><div class="card-sub">Shared Engine</div></div></div><span class="card-arrow"></span></div>
</div>
<div class="section"><i class="fas fa-cogs"></i> SCRIPTS & CONFIG</div>
<div class="grid g3">
<div class="card" onclick="showCat('scripts')"><div class="card-head"><div class="card-icon green">🔧</div><div><div class="card-title">SCRIPTS CRON</div><div class="card-sub">Automation</div></div></div><span class="card-arrow"></span></div>
<div class="card" onclick="showCat('api')"><div class="card-head"><div class="card-icon cyan">🔌</div><div><div class="card-title">APIs</div><div class="card-sub">Endpoints</div></div></div><span class="card-arrow"></span></div>
<div class="card" onclick="showCat('config')"><div class="card-head"><div class="card-icon purple">⚙️</div><div><div class="card-title">BRAIN CONFIG</div><div class="card-sub">Paramètres Globaux</div></div></div><span class="card-arrow"></span></div>
</div>
</div>
<div id="L1" class="view"></div>
<div id="L2" class="view"></div>
</div>
<script>
const DATA = {
wevads: {title:'WEVADS :5821', items:[
{n:'brain_editor.php',p:'/brain_editor.php',i:'✏️',b:'ok',d:'Éditeur Brain'},
{n:'brain-manager.php',p:'/brain-manager.php',i:'🧠',b:'kb',d:'Gestionnaire Brain'},
{n:'process-supervision.php',p:'/process-supervision.php',i:'👁️',b:'ok',d:'Supervision'},
{n:'hamid-fullscreen.php',p:'/hamid-fullscreen.php',i:'💬',b:'kb',d:'Chat principal'},
{n:'hamid-cli.php',p:'/hamid-cli.php',i:'📟',b:'kb',d:'Terminal IA'},
{n:'hamid-code.php',p:'/hamid-code.php',i:'💻',b:'kb',d:'Assistant code'},
{n:'hamid-ssh.php',p:'/hamid-ssh.php',i:'🔌',b:'ok',d:'Accès SSH'},
{n:'hamid-dashboard.php',p:'/hamid-dashboard.php',i:'📊',b:'ok',d:'Dashboard'}
]},
fmgapp: {title:'FMGAPP :5822', items:[{n:'index.php',p:'/index.php',i:'📁',b:'ok',d:'File Manager'}]},
bcgapp: {title:'BCGAPP :5823', items:[
{n:'dkimup.php',p:'/dkimup.php',i:'🔑',b:'ok',d:'DKIM upload'},
{n:'upload.php',p:'/upload.php',i:'📤',b:'ok',d:'Upload fichiers'},
{n:'up_server.php',p:'/up_server.php',i:'🖥️',b:'ok',d:'Upload serveur'}
]},
brain: {title:'BRAIN ENGINE', tables:['brain_config','brain_decisions','brain_isp_profiles','brain_send_methods','brain_winners','brain_tests','brain_test_results','brain_scheduler','brain_seeds','brain_learning_log','brain_targeting_matrix','brain_warmup_tests','brain_offer_profiles','brain_server_decisions'], items:[
{n:'brain-core.php',p:'/api/brain-core.php',i:'🧠',b:'api',d:'Core API'},
{n:'brain.php',p:'/api/brain.php',i:'📧',b:'api',d:'API principale'},
{n:'brain-engine.php',p:'/api/brain-engine.php',i:'⚙️',b:'api',d:'Moteur'}
]},
hamid: {title:'HAMID IA SYSTEM', providers:['Cerebras','Groq','DeepSeek','Gemini','Claude','Hyperbolic','Mistral','Cohere','SambaNova','OpenRouter','Ollama'], tables:['hamid_providers','hamid_conversations','hamid_memory','hamid_long_memory','hamid_knowledge','hamid_learning','hamid_documents','hamid_personas','hamid_brain_config','hamid_tasks','hamid_users','hamid_config','hamid_actions_history','hamid_debug_patterns','hamid_entities','hamid_files','hamid_messages','hamid_projects','hamid_provider_status','hamid_requests']},
kb: {title:'KNOWLEDGE BASES', bases:[
{n:'knowledge_base',i:'📚',d:'Base principale'},
{n:'hamid_knowledge',i:'🧠',d:'HAMID KB'},
{n:'isp_knowledge',i:'📧',d:'Règles ISP'},
{n:'commonia_knowledge',i:'🌐',d:'Partagée'},
{n:'chatbot_knowledge',i:'💬',d:'Chatbot'},
{n:'hamid_documents',i:'📄',d:'Documents'}
]},
ia_chat: {title:'FULLSCREEN & CHAT', items:[
{n:'FULLSCREEN',p:'/hamid-fullscreen.php',i:'💬',b:'kb',d:'Chat principal'},
{n:'WIDGET',p:'/hamid-widget.php',i:'📦',b:'kb',d:'Widget embed'},
{n:'STREAM',p:'/hamid-stream.php',i:'🌊',b:'api',d:'Streaming'}
]},
ia_cli: {title:'CLI & TERMINAL', items:[
{n:'CLI',p:'/hamid-cli.php',i:'📟',b:'kb',d:'Terminal IA'},
{n:'EXECUTE',p:'/hamid-execute.php',i:'▶️',b:'api',d:'Exécution'},
{n:'GPTS',p:'/hamid-gpts.php',i:'🤖',b:'ok',d:'GPTs custom'}
]},
ia_code: {title:'CODE & DEV', items:[
{n:'CODE',p:'/hamid-code.php',i:'💻',b:'kb',d:'Assistant code'},
{n:'CLAUDE',p:'/hamid-claude.php',i:'🤖',b:'api',d:'Claude direct'},
{n:'GENERATE LONG',p:'/hamid-generate-long.php',i:'📝',b:'kb',d:'Génération longue'}
]},
ia_ssh: {title:'SSH & SERVER', items:[
{n:'SSH',p:'/hamid-ssh.php',i:'🔌',b:'ok',d:'Terminal SSH web'},
{n:'WEVADS API',p:'/hamid-wevads-api.php',i:'📡',b:'api',d:'API WEVADS'},
{n:'REPAIR API',p:'/hamid-repair-api.php',i:'🔧',b:'api',d:'Auto-réparation'},
{n:'TEST API',p:'/hamid-test-api.php',i:'🧪',b:'api',d:'Tests API'}
]},
ia_canvas: {title:'CANVAS & VISUAL', items:[
{n:'CANVAS',p:'/hamid-canvas.php',i:'🎨',b:'ok',d:'Éditeur visuel'},
{n:'IMAGE',p:'/hamid-image.php',i:'🖼️',b:'ok',d:'Génération images'},
{n:'VOICE',p:'/hamid-voice.php',i:'🎤',b:'ok',d:'Entrée vocale'}
]},
ia_search: {title:'SEARCH & KB', items:[
{n:'SEARCH',p:'/hamid-search.php',i:'🔍',b:'kb',d:'Recherche KB'},
{n:'KB API',p:'/hamid-kb-api.php',i:'📚',b:'api',d:'API KB'},
{n:'MEMORY',p:'/hamid-memory.php',i:'💾',b:'ok',d:'Mémoire'}
]},
ia_gen: {title:'GENERATE', items:[
{n:'GENERATE',p:'/hamid-generate.php',i:'✨',b:'kb',d:'Génération texte'},
{n:'GENERATE LONG',p:'/hamid-generate-long.php',i:'📝',b:'kb',d:'Contenu long'}
]},
ia_admin: {title:'ADMIN & CONFIG', items:[
{n:'DASHBOARD',p:'/hamid-dashboard.php',i:'📊',b:'ok',d:'Tableau de bord'},
{n:'ADMIN',p:'/hamid-admin.php',i:'⚙️',b:'ok',d:'Administration'},
{n:'CONTROL CENTER',p:'/hamid-control-center.php',i:'🎛️',b:'ok',d:'Centre contrôle'},
{n:'PROVIDERS',p:'/hamid-providers.php',i:'🔌',b:'ok',d:'Config providers'},
{n:'BRAIN CONFIG',p:'/hamid-brain-config.php',i:'🧠',b:'ok',d:'Config Brain'},
{n:'FAILOVER',p:'/hamid-failover.php',i:'🔄',b:'ok',d:'Auto-basculement'},
{n:'HEALTH',p:'/hamid-health.php',i:'🩺',b:'ok',d:'État système'},
{n:'MONITOR',p:'/hamid-monitor.php',i:'👁️',b:'ok',d:'Monitoring'},
{n:'PERSONAS',p:'/hamid-personas.php',i:'🎭',b:'ok',d:'Personnalités'},
{n:'HISTORY',p:'/hamid-history.php',i:'📜',b:'ok',d:'Historique'},
{n:'SELECTOR',p:'/hamid-selector.php',i:'🎯',b:'ok',d:'Sélecteur'},
{n:'MAINTENANCE',p:'/hamid-maintenance.php',i:'🔧',b:'ok',d:'Maintenance'}
]},
widgets: {title:'WIDGETS PUBLICS', items:[
{n:'IA Routines Monitor',p:'/widgets/routines_dashboard.html',i:'🔄',b:'ok',d:'7 routines'},
{n:'Cloud Health',p:'/widgets/cloud_health.html',i:'☁️',b:'ok',d:'Santé cloud'},
{n:'Brain Editor',p:'/brain_editor.php',i:'✏️',b:'ok',d:'Éditeur params'},
{n:'Process Supervision',p:'/process-supervision.php',i:'👁️',b:'ok',d:'Supervision'}
]},
widgets_int: {title:'WIDGETS INTERNES', items:[
{n:'Admin Dashboard',p:'/hamid-dashboard.php',i:'📊',b:'ok',d:'Stats admin'},
{n:'Provider Status',p:'/hamid-providers.php',i:'🔌',b:'ok',d:'État providers'},
{n:'Brain Monitor',p:'/hamid-brain-monitor.php',i:'🧠',b:'ok',d:'Monitor Brain'},
{n:'Failover Monitor',p:'/hamid-failover-monitor.php',i:'🔄',b:'ok',d:'État failover'}
]},
deliverads: {title:'DELIVERADS', items:[
{n:'Brain Admin',p:'/deliverads/brain-admin.php',i:'👑',b:'ok',d:'Administration'},
{n:'Brain Dashboard',p:'/deliverads/brain-dashboard.php',i:'📊',b:'ok',d:'Stats'},
{n:'Brain Engine',p:'/deliverads/brain-engine.php',i:'⚙️',b:'ok',d:'Moteur'},
{n:'HAMID',p:'/deliverads/hamid.php',i:'💬',b:'kb',d:'DM+Sansface HAMID'},
{n:'Orchestrator',p:'/deliverads/hamid-orchestrator.php',i:'🎭',b:'ok',d:'Orchestrateur'}
]},
commonia: {title:'COMMONIA', items:[
{n:'commonia-brain.php',p:'/commonia/commonia-brain.php',i:'🧠',b:'api',d:'Brain partagé'},
{n:'hamid-engine.php',p:'/commonia/hamid-engine.php',i:'⚙️',b:'api',d:'Moteur HAMID'},
{n:'hamid-search.php',p:'/commonia/hamid-search.php',i:'🔍',b:'kb',d:'Recherche'},
{n:'providers.php',p:'/commonia/providers.php',i:'🔌',b:'api',d:'Providers'}
]},
scripts: {title:'SCRIPTS', items:[
{n:'auto_debug_routines.sh',p:'/opt/wevads/scripts/auto_debug_routines.sh',i:'🔍',b:'ok',d:'Debug auto'},
{n:'auto_system_health.sh',p:'/opt/wevads/scripts/auto_system_health.sh',i:'🩺',b:'ok',d:'Check santé'},
{n:'brain-combo-discovery.py',p:'/opt/wevads/scripts/brain-combo-discovery.py',i:'🔬',b:'ok',d:'Découverte combos'}
]},
api: {title:'APIs', items:[
{n:'brain-core.php',p:'/api/brain-core.php',i:'🧠',b:'api',d:'Core Brain'},
{n:'hamid-api.php',p:'/api/hamid-api.php',i:'🤖',b:'api',d:'API HAMID'},
{n:'hamid-brain.php',p:'/api/hamid-brain.php',i:'🔗',b:'api',d:'Bridge'}
]},
config: {title:'BRAIN CONFIG GLOBAL', config:true}
};
let currentCat = null;
function goHome() {
document.getElementById('L0').classList.add('active');
document.getElementById('L1').classList.remove('active');
document.getElementById('L2').classList.remove('active');
document.getElementById('bc').innerHTML = '<span class="bc-item active" onclick="goHome()"><i class="fas fa-home"></i> Vue Globale</span>';
currentCat = null;
}
function showCat(cat) {
currentCat = cat;
const d = DATA[cat];
let h = '<div class="section"><i class="fas fa-folder-open"></i> ' + d.title + '</div>';
if (d.providers) {
h += '<div class="detail"><h3 style="margin-bottom:10px">🔌 11 Providers IA</h3><div class="providers">';
d.providers.forEach(p => { h += '<div class="prov on" onclick="editProvider(\'' + p + '\')"><div style="font-weight:600">' + p + '</div><div style="font-size:0.7em;color:var(--green)">✓ Active</div></div>'; });
h += '</div></div>';
}
if (d.tables) {
h += '<div class="detail"><h3 style="margin-bottom:10px">📊 Tables (' + d.tables.length + ')</h3><div class="tags">';
d.tables.forEach(t => { h += '<span class="tag ' + (cat === 'hamid' ? 'purple' : '') + '" onclick="editTable(\'' + t + '\')">' + t + '</span>'; });
h += '</div></div>';
}
if (d.bases) {
h += '<div class="grid g3" style="margin-top:15px">';
d.bases.forEach(b => { h += '<div class="card" onclick="editKB(\'' + b.n + '\')"><div class="card-head"><div class="card-icon orange">' + b.i + '</div><div><div class="card-title">' + b.n + '</div><div class="card-sub">' + b.d + '</div></div></div></div>'; });
h += '</div>';
}
if (d.config) {
h += '<div class="detail"><h2>⚙️ Configuration Globale</h2>';
h += '<div class="form-g"><div class="form-l">Fichier Config</div><input class="form-i" value="/opt/wevads/config/hamid-config.json"></div>';
h += '<div class="form-g"><div class="form-l">Provider par Défaut</div><select class="form-i"><option>Cerebras</option><option>Groq</option><option>DeepSeek</option><option>Claude</option></select></div>';
h += '<div class="form-g"><div class="form-l">Brain Actif</div><div style="display:flex;align-items:center;gap:10px"><div class="toggle on" onclick="this.classList.toggle(\'on\')"></div><span>Activé</span></div></div>';
h += '<div class="form-g"><div class="form-l">Timeout Failover (ms)</div><input class="form-i" type="number" value="5000"></div>';
h += '<div class="btn-grp"><button class="btn btn-p" onclick="alert(\'✅ Sauvegardé!\')"><i class="fas fa-save"></i> Sauvegarder</button></div></div>';
}
if (d.items) {
h += '<div class="section" style="margin-top:20px"><i class="fas fa-file-code"></i> Fichiers (' + d.items.length + ')</div><div class="list">';
d.items.forEach(it => {
h += '<div class="list-item" onclick="showItem(\'' + it.n + '\',\'' + it.p + '\',\'' + it.d + '\',\'' + it.b + '\')">';
h += '<div class="list-icon">' + it.i + '</div>';
h += '<div class="list-info"><div class="list-name">' + it.n + '</div><div class="list-path">' + it.p + '</div></div>';
h += '<span class="badge b-' + it.b + '">' + (it.b === 'kb' ? '→KB' : it.b.toUpperCase()) + '</span>';
h += '<button class="btn-s" onclick="event.stopPropagation();window.open(\'' + it.p + '\',\'_blank\')"><i class="fas fa-external-link-alt"></i></button>';
h += '</div>';
});
h += '</div>';
}
document.getElementById('L1').innerHTML = h;
document.getElementById('L0').classList.remove('active');
document.getElementById('L1').classList.add('active');
document.getElementById('L2').classList.remove('active');
document.getElementById('bc').innerHTML = '<span class="bc-item" onclick="goHome()"><i class="fas fa-home"></i> Vue Globale</span> <span style="color:var(--border)"></span> <span class="bc-item active">' + d.title + '</span>';
}
function showItem(name, path, desc, badge) {
let h = '<div class="detail"><h2>' + name + '</h2><p style="color:var(--dim);margin-bottom:20px">' + desc + '</p>';
h += '<div class="form-g"><div class="form-l">Chemin</div><input class="form-i" value="' + path + '"></div>';
h += '<div class="form-g"><div class="form-l">Description</div><textarea class="form-i" style="min-height:80px">' + desc + '</textarea></div>';
h += '<div class="form-g"><div class="form-l">Connecté KB</div><div style="display:flex;align-items:center;gap:10px"><div class="toggle ' + (badge === 'kb' ? 'on' : '') + '" onclick="this.classList.toggle(\'on\')"></div><span>' + (badge === 'kb' ? 'Oui' : 'Non') + '</span></div></div>';
h += '<div class="btn-grp"><button class="btn btn-p"><i class="fas fa-save"></i> Sauvegarder</button><button class="btn btn-sec" onclick="window.open(\'' + path + '\',\'_blank\')"><i class="fas fa-external-link-alt"></i> Ouvrir</button></div></div>';
document.getElementById('L2').innerHTML = h;
document.getElementById('L0').classList.remove('active');
document.getElementById('L1').classList.remove('active');
document.getElementById('L2').classList.add('active');
document.getElementById('bc').innerHTML = '<span class="bc-item" onclick="goHome()"><i class="fas fa-home"></i> Vue Globale</span> <span style="color:var(--border)"></span> <span class="bc-item" onclick="showCat(\'' + currentCat + '\')">' + DATA[currentCat].title + '</span> <span style="color:var(--border)"></span> <span class="bc-item active">' + name + '</span>';
}
function editProvider(name) { alert('Éditer Provider: ' + name + '\n\nAPI Key: sk-••••\nPriorité: 1\nModèle: llama-3.3-70b'); }
function editTable(name) { alert('Table: ' + name + '\n\nVoir données | Export CSV | Vider'); }
function editKB(name) { alert('Knowledge Base: ' + name + '\n\nDocuments | Réindexer | Export'); }
</script>
<script>
var _API="/api/hamid-chef.php";
async function _autoLoad(){
try{
var r=await fetch(_API+"?action=status");
var d=await r.json();
if(!d)return;
var src=d.data||d;
if(typeof src==="object"&&!Array.isArray(src)){
var entries=Object.entries(src);
var statEls=document.querySelectorAll(".st .n,.kpi-value,.stat-value,[id^=k],[id^=s-]");
statEls.forEach(function(el,idx){
if(idx<entries.length){
var v=entries[idx][1];
if(typeof v==="number")v=v.toLocaleString();
if(typeof v==="string"||typeof v==="number")el.textContent=v;
}
});
}
}catch(e){console.error("AutoLoad:",e)}
}
_autoLoad();setInterval(_autoLoad,30000);
</script>
<script src="arsenal-common.js?v1770778169"></script>
<?php include("/opt/wevads-arsenal/public/universal-drill.html"); ?>
</body>
</html>