139 lines
16 KiB
HTML
Executable File
139 lines
16 KiB
HTML
Executable File
<!DOCTYPE html><html lang="fr"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>WEVADS • Brain Drilldown</title>
|
|
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet">
|
|
<style>
|
|
:root{--bg:#060a14;--s:#0c1220;--s2:#111827;--b:#1e293b;--t:#e2e8f0;--d:#64748b;--cy:#22d3ee;--gn:#34d399;--am:#fbbf24;--rd:#f87171;--pu:#a78bfa;--bl:#60a5fa;--pk:#f472b6}
|
|
*{margin:0;padding:0;box-sizing:border-box}body{background:var(--bg);color:var(--t);font-family:'DM Sans',sans-serif;font-size:11px}
|
|
.light{--bg:#f0f2f5;--s:#ffffff;--s2:#f8fafc;--b:#e2e8f0;--t:#1e293b;--d:#64748b}
|
|
.hdr{background:var(--s);border-bottom:1px solid var(--b);padding:12px 20px;display:flex;align-items:center;justify-content:space-between}
|
|
.hdr h1{font-size:16px;font-weight:700}.hdr h1 span{color:var(--cy)}
|
|
.wrap{padding:16px;max-width:1400px;margin:0 auto}
|
|
.stats{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin-bottom:16px}
|
|
.sc{background:var(--s);border:1px solid var(--b);border-radius:10px;padding:14px;text-align:center}.sc .n{font-family:'JetBrains Mono',monospace;font-size:22px;font-weight:700}.sc .l{font-size:9px;text-transform:uppercase;color:var(--d);margin-top:4px}
|
|
.tabs{display:flex;gap:2px;margin-bottom:16px;border-bottom:1px solid var(--b)}.tab{padding:8px 16px;cursor:pointer;font-size:10px;font-weight:600;text-transform:uppercase;color:var(--d);border-bottom:2px solid transparent}.tab:hover{color:var(--t)}.tab.active{color:var(--cy);border-color:var(--cy)}
|
|
.panel{display:none;background:var(--s);border:1px solid var(--b);border-radius:10px;padding:16px}.panel.active{display:block}
|
|
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
|
|
.grid3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}
|
|
.badge{font-size:8px;padding:2px 6px;border-radius:3px;font-weight:600}
|
|
.badge-gn{background:rgba(52,211,153,.15);color:var(--gn)}.badge-am{background:rgba(251,191,36,.15);color:var(--am)}.badge-rd{background:rgba(248,113,113,.15);color:var(--rd)}.badge-cy{background:rgba(34,211,238,.15);color:var(--cy)}
|
|
table{width:100%;border-collapse:collapse;font-size:10px}th{text-align:left;color:var(--d);text-transform:uppercase;font-size:9px;padding:6px 8px;border-bottom:1px solid var(--b)}td{padding:6px 8px;border-bottom:1px solid rgba(30,41,59,.3)}
|
|
.config-card{background:var(--s2);border:1px solid var(--b);border-radius:8px;padding:12px;margin-bottom:8px}
|
|
.config-hdr{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}
|
|
.config-name{font-weight:600;font-size:12px}.config-isp{font-size:9px;color:var(--d)}
|
|
.config-params{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px}
|
|
.param{background:var(--bg);border:1px solid var(--b);border-radius:4px;padding:3px 8px;font-size:9px;font-family:'JetBrains Mono',monospace}
|
|
.metric-bar{height:6px;background:var(--s2);border-radius:3px;margin-top:3px}.metric-fill{height:100%;border-radius:3px}
|
|
.isp-card{background:var(--s2);border:1px solid var(--b);border-radius:8px;padding:12px;text-align:center}
|
|
.isp-name{font-weight:700;font-size:13px;margin-bottom:4px}
|
|
.isp-rate{font-family:'JetBrains Mono',monospace;font-size:20px;font-weight:700}
|
|
.btn{padding:6px 14px;border-radius:6px;border:1px solid var(--b);background:var(--s2);color:var(--t);cursor:pointer;font-size:10px;font-weight:500}.btn:hover{border-color:var(--cy)}
|
|
.toggle-btn{background:var(--s2);border:1px solid var(--b);border-radius:50%;width:30px;height:30px;display:flex;align-items:center;justify-content:center;padding:0;cursor:pointer;font-size:14px;color:var(--t)}
|
|
@media(max-width:900px){.stats{grid-template-columns:repeat(3,1fr)}.grid2,.grid3{grid-template-columns:1fr}}
|
|
</style>
|
|
|
|
</head><body>
|
|
<!-- nav-pills-bar -->
|
|
<div class="hdr"><div><h1>🧠 WEVADS • <span>Brain Drilldown</span></h1><span style="font-size:10px;color:var(--d)">Analyse approfondie des configs Brain — Performance par ISP — Apprentissage continu</span></div><div style="display:flex;gap:8px;align-items:center"><span class="badge badge-gn">● LEARNING</span><span style="font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--d)" id="clock"></span></div></div>
|
|
<div class="wrap">
|
|
<div class="stats">
|
|
<div class="sc"><div class="n" style="color:var(--cy)">48</div><div class="l">Configs actives</div></div>
|
|
<div class="sc"><div class="n" style="color:var(--gn)">91%</div><div class="l">Inbox moyen</div></div>
|
|
<div class="sc"><div class="n" style="color:var(--am)">12</div><div class="l">ISPs optimisés</div></div>
|
|
<div class="sc"><div class="n" style="color:var(--bl)">1,247</div><div class="l">Tests 7j</div></div>
|
|
<div class="sc"><div class="n" style="color:var(--pu)">23</div><div class="l">Winning configs</div></div>
|
|
<div class="sc"><div class="n" style="color:var(--pk)">6</div><div class="l">Régressions détectées</div></div>
|
|
</div>
|
|
<div class="tabs">
|
|
<div class="tab active" onclick="showTab('isp')">Par ISP</div>
|
|
<div class="tab" onclick="showTab('configs')">Winning Configs</div>
|
|
<div class="tab" onclick="showTab('learning')">Apprentissage</div>
|
|
<div class="tab" onclick="showTab('regression')">Régressions</div>
|
|
</div>
|
|
<div class="panel active" id="tab-isp">
|
|
<div class="grid3" id="isp-grid"></div>
|
|
<h3 style="font-size:12px;margin:16px 0 10px">📊 Détail par ISP — Derniers 7 jours</h3>
|
|
<table><thead><tr><th>ISP</th><th>Envois</th><th>Inbox</th><th>Spam</th><th>Bounce</th><th>Méthode gagnante</th><th>Config</th><th>Tendance</th></tr></thead><tbody>
|
|
<tr><td style="font-weight:600">Gmail</td><td>45,200</td><td style="color:var(--gn)">88%</td><td style="color:var(--am)">8%</td><td>4%</td><td>Graph API</td><td>gmail_v47</td><td style="color:var(--gn)">↑ +2%</td></tr>
|
|
<tr><td style="font-weight:600">Outlook</td><td>38,100</td><td style="color:var(--gn)">92%</td><td style="color:var(--am)">5%</td><td>3%</td><td>EWS</td><td>outlook_v32</td><td style="color:var(--gn)">↑ +1%</td></tr>
|
|
<tr><td style="font-weight:600">T-Online</td><td>12,400</td><td style="color:var(--gn)">95%</td><td>3%</td><td>2%</td><td>PMTA Direct</td><td>tol_v18</td><td style="color:var(--gn)">→ stable</td></tr>
|
|
<tr><td style="font-weight:600">GMX/Web.de</td><td>18,700</td><td style="color:var(--gn)">100%</td><td>0%</td><td>0%</td><td>PMTA + Exchange</td><td>gmx_v22</td><td style="color:var(--gn)">→ stable</td></tr>
|
|
<tr><td style="font-weight:600">Yahoo</td><td>22,300</td><td style="color:var(--am)">78%</td><td style="color:var(--rd)">15%</td><td>7%</td><td>Brain Unified</td><td>yahoo_v41</td><td style="color:var(--rd)">↓ -3%</td></tr>
|
|
<tr><td style="font-weight:600">Orange</td><td>8,900</td><td style="color:var(--gn)">90%</td><td>7%</td><td>3%</td><td>O365 SMTP</td><td>orange_v15</td><td style="color:var(--gn)">↑ +1%</td></tr>
|
|
<tr><td style="font-weight:600">Free/LaPoste</td><td>6,200</td><td style="color:var(--gn)">94%</td><td>4%</td><td>2%</td><td>PMTA Direct</td><td>free_v12</td><td style="color:var(--gn)">→ stable</td></tr>
|
|
<tr><td style="font-weight:600">Office365</td><td>52,800</td><td style="color:var(--gn)">97%</td><td>2%</td><td>1%</td><td>Graph API</td><td>o365_v55</td><td style="color:var(--gn)">↑ +1%</td></tr>
|
|
</tbody></table>
|
|
</div>
|
|
<div class="panel" id="tab-configs">
|
|
<h3 style="font-size:12px;margin-bottom:10px">🏆 Configurations gagnantes actuelles</h3>
|
|
<div class="config-card"><div class="config-hdr"><span class="config-name">gmail_v47</span><span class="badge badge-gn">WINNING</span></div><div class="config-isp">Gmail/Google — Graph API — 88% inbox</div><div class="config-params"><span class="param">method: graph_api</span><span class="param">from_domain: culturellemejean.charity</span><span class="param">tls: required</span><span class="param">dkim: rsa-2048</span><span class="param">x-mailer: none</span><span class="param">encoding: quoted-printable</span><span class="param">throttle: 50/min</span><span class="param">warmup: day_32</span></div></div>
|
|
<div class="config-card"><div class="config-hdr"><span class="config-name">outlook_v32</span><span class="badge badge-gn">WINNING</span></div><div class="config-isp">Outlook/Hotmail — EWS Exchange — 92% inbox</div><div class="config-params"><span class="param">method: ews</span><span class="param">auth: oauth2</span><span class="param">x-mailer: none</span><span class="param">content-type: multipart/alternative</span><span class="param">throttle: 80/min</span><span class="param">retry: 3x</span></div></div>
|
|
<div class="config-card"><div class="config-hdr"><span class="config-name">gmx_v22</span><span class="badge badge-gn">WINNING</span></div><div class="config-isp">GMX/Web.de — PMTA + Exchange headers — 100% inbox</div><div class="config-params"><span class="param">method: pmta_direct</span><span class="param">headers: exchange_format</span><span class="param">x-mailer: none</span><span class="param">ip: 89.167.40.150</span><span class="param">throttle: 30/min</span><span class="param">dkim: ed25519</span></div></div>
|
|
<div class="config-card"><div class="config-hdr"><span class="config-name">yahoo_v41</span><span class="badge badge-am">TESTING</span></div><div class="config-isp">Yahoo/AOL — Brain Unified — 78% inbox (en baisse)</div><div class="config-params"><span class="param">method: brain_unified</span><span class="param">rotate: 3 senders</span><span class="param">warmup: day_45</span><span class="param">throttle: 20/min</span><span class="param">content: text_only</span><span class="param">⚠ regression detected</span></div></div>
|
|
</div>
|
|
<div class="panel" id="tab-learning">
|
|
<div class="grid2">
|
|
<div>
|
|
<h3 style="font-size:12px;margin-bottom:10px;color:var(--cy)">📈 Cycle d'apprentissage</h3>
|
|
<div style="background:var(--s2);border:1px solid var(--b);border-radius:8px;padding:14px;margin-bottom:8px">
|
|
<div style="font-weight:600;margin-bottom:8px">Processus Brain Engine</div>
|
|
<div style="font-size:10px;line-height:1.8">
|
|
1. <span style="color:var(--cy)">SEED</span> → Envoyer email test via config candidate<br>
|
|
2. <span style="color:var(--bl)">CHECK</span> → Vérifier inbox/spam via IMAP (Seed Factory)<br>
|
|
3. <span style="color:var(--gn)">SCORE</span> → Calculer inbox_rate par ISP (Brain Engine)<br>
|
|
4. <span style="color:var(--pu)">LEARN</span> → Ajuster paramètres selon résultats<br>
|
|
5. <span style="color:var(--am)">VALIDATE</span> → Re-tester avec nouvelle config<br>
|
|
6. <span style="color:var(--gn)">PROMOTE</span> → Si inbox > 85% → Winning Config<br>
|
|
7. <span style="color:var(--rd)">DEMOTE</span> → Si inbox < 70% → Archiver + Retry
|
|
</div>
|
|
</div>
|
|
<div style="background:var(--s2);border:1px solid var(--b);border-radius:8px;padding:14px">
|
|
<div style="font-weight:600;margin-bottom:8px">Statistiques apprentissage</div>
|
|
<div style="display:grid;grid-template-columns:1fr 1fr;gap:8px;font-size:10px">
|
|
<div><span style="color:var(--d)">Tests cette semaine:</span> <strong>1,247</strong></div>
|
|
<div><span style="color:var(--d)">Configs testées:</span> <strong>89</strong></div>
|
|
<div><span style="color:var(--d)">Promues winning:</span> <strong style="color:var(--gn)">23</strong></div>
|
|
<div><span style="color:var(--d)">Démotées:</span> <strong style="color:var(--rd)">12</strong></div>
|
|
<div><span style="color:var(--d)">En test:</span> <strong style="color:var(--am)">54</strong></div>
|
|
<div><span style="color:var(--d)">Taux amélioration:</span> <strong style="color:var(--gn)">+4.2%</strong></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<h3 style="font-size:12px;margin-bottom:10px">🧪 Tests récents</h3>
|
|
<table><thead><tr><th>Config</th><th>ISP</th><th>Résultat</th><th>Action</th></tr></thead><tbody>
|
|
<tr><td>gmail_v48_test</td><td>Gmail</td><td style="color:var(--gn)">91%</td><td><span class="badge badge-cy">PROMOTE?</span></td></tr>
|
|
<tr><td>yahoo_v42_test</td><td>Yahoo</td><td style="color:var(--am)">75%</td><td><span class="badge badge-am">RETRY</span></td></tr>
|
|
<tr><td>outlook_v33_test</td><td>Outlook</td><td style="color:var(--gn)">94%</td><td><span class="badge badge-cy">PROMOTE?</span></td></tr>
|
|
<tr><td>apple_v3_test</td><td>iCloud</td><td style="color:var(--rd)">62%</td><td><span class="badge badge-rd">DEMOTE</span></td></tr>
|
|
<tr><td>orange_v16_test</td><td>Orange</td><td style="color:var(--gn)">92%</td><td><span class="badge badge-cy">PROMOTE?</span></td></tr>
|
|
<tr><td>proton_v2_test</td><td>Proton</td><td style="color:var(--am)">68%</td><td><span class="badge badge-am">RETRY</span></td></tr>
|
|
</tbody></table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="panel" id="tab-regression">
|
|
<h3 style="font-size:12px;margin-bottom:10px;color:var(--rd)">⚠ Régressions détectées</h3>
|
|
<table><thead><tr><th>ISP</th><th>Config</th><th>Avant</th><th>Maintenant</th><th>Drop</th><th>Cause probable</th><th>Action</th></tr></thead><tbody>
|
|
<tr><td style="font-weight:600">Yahoo</td><td>yahoo_v41</td><td>81%</td><td style="color:var(--rd)">78%</td><td style="color:var(--rd)">-3%</td><td>Changement filtres Yahoo (Feb 2026)</td><td><button class="btn" style="font-size:9px">Re-learn</button></td></tr>
|
|
<tr><td style="font-weight:600">iCloud</td><td>apple_v2</td><td>78%</td><td style="color:var(--rd)">74%</td><td style="color:var(--rd)">-4%</td><td>Apple Mail Privacy update</td><td><button class="btn" style="font-size:9px">Re-learn</button></td></tr>
|
|
<tr><td style="font-weight:600">ProtonMail</td><td>proton_v1</td><td>74%</td><td style="color:var(--rd)">70%</td><td style="color:var(--rd)">-4%</td><td>Proton anti-spam renforcé</td><td><button class="btn" style="font-size:9px">Re-learn</button></td></tr>
|
|
<tr><td style="font-weight:600">Comcast</td><td>comcast_v8</td><td>82%</td><td style="color:var(--rd)">79%</td><td style="color:var(--rd)">-3%</td><td>IP reputation drop</td><td><button class="btn" style="font-size:9px">Rotate IP</button></td></tr>
|
|
<tr><td style="font-weight:600">Libero</td><td>libero_v5</td><td>86%</td><td style="color:var(--am)">84%</td><td style="color:var(--am)">-2%</td><td>SPF check strict</td><td><button class="btn" style="font-size:9px">Fix DNS</button></td></tr>
|
|
<tr><td style="font-weight:600">Mail.ru</td><td>mailru_v3</td><td>79%</td><td style="color:var(--am)">76%</td><td style="color:var(--am)">-3%</td><td>DMARC policy change</td><td><button class="btn" style="font-size:9px">Re-learn</button></td></tr>
|
|
</tbody></table>
|
|
<div style="margin-top:12px;display:flex;gap:8px">
|
|
<button class="btn" style="background:rgba(34,211,238,.1);border-color:var(--cy);color:var(--cy)">🧠 Re-learn All Regressions</button>
|
|
<button class="btn">📊 Export Rapport</button>
|
|
<button class="btn">🔔 Configurer Alertes</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<script>
|
|
function showTab(id){document.querySelectorAll('.tab').forEach(t=>t.classList.remove('active'));document.querySelectorAll('.panel').forEach(p=>p.classList.remove('active'));document.getElementById('tab-'+id).classList.add('active');event.target.classList.add('active')}
|
|
var isps=[{n:'Gmail',r:88,c:'var(--rd)'},{n:'Outlook',r:92,c:'var(--bl)'},{n:'T-Online',r:95,c:'var(--cy)'},{n:'GMX',r:100,c:'var(--gn)'},{n:'Yahoo',r:78,c:'var(--am)'},{n:'Orange',r:90,c:'var(--am)'},{n:'Free',r:94,c:'var(--cy)'},{n:'O365',r:97,c:'var(--gn)'},{n:'Web.de',r:93,c:'var(--gn)'}];
|
|
var ig=document.getElementById('isp-grid');
|
|
isps.forEach(function(i){var col=i.r>=90?'var(--gn)':i.r>=80?'var(--am)':'var(--rd)';ig.innerHTML+='<div class="isp-card"><div class="isp-name">'+i.n+'</div><div class="isp-rate" style="color:'+col+'">'+i.r+'%</div><div style="font-size:9px;color:var(--d)">inbox rate</div><div class="metric-bar"><div class="metric-fill" style="width:'+i.r+'%;background:'+i.c+'"></div></div></div>'});
|
|
setInterval(function(){document.getElementById('clock').textContent=new Date().toLocaleTimeString('fr-FR')},1000);
|
|
</script><script src="arsenal-common.js"></script>
|
|
|
|
</script>
|