398 lines
32 KiB
HTML
Executable File
398 lines
32 KiB
HTML
Executable File
<?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>
|