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

234 lines
19 KiB
HTML
Executable File

<!DOCTYPE html><html lang="fr" data-theme="dark"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>WEVADS - Seed Cleaner</title>
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;700&family=DM+Sans:wght@400;500;600;700&display=swap" rel="stylesheet">
<style>
*{margin:0;padding:0;box-sizing:border-box}
:root{--bg:#060a14;--s:#0c1220;--s2:#111827;--b:#1e293b;--t:#e2e8f0;--d:#64748b;--m:#475569;--cy:#22d3ee;--gn:#34d399;--am:#fbbf24;--rd:#f87171;--pu:#a78bfa;--bl:#60a5fa}
body{background:var(--bg);color:var(--t);font-family:'DM Sans',sans-serif;padding:20px}
.mono{font-family:'JetBrains Mono',monospace}
.hdr{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;flex-wrap:wrap;gap:12px}
h1{font-size:24px;font-weight:700}
.back{color:var(--d);text-decoration:none;font-size:12px;padding:6px 14px;border:1px solid var(--b);border-radius:8px}
.back:hover{border-color:var(--cy);color:var(--cy)}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:12px;margin-bottom:20px}
.sc{background:var(--s);border:1px solid var(--b);border-radius:12px;padding:16px}
.sv{font-size:26px;font-weight:700;font-family:'JetBrains Mono',monospace}
.sl{font-size:10px;color:var(--d);text-transform:uppercase;letter-spacing:.5px;margin-top:4px}
.panel{background:var(--s);border:1px solid var(--b);border-radius:12px;padding:16px;margin-bottom:16px}
.panel h2{font-size:16px;font-weight:700;margin-bottom:12px}
table{width:100%;border-collapse:collapse;font-size:12px}
th{text-align:left;color:var(--d);font-size:10px;text-transform:uppercase;letter-spacing:.5px;padding:8px 10px;border-bottom:1px solid var(--b)}
td{padding:8px 10px;border-bottom:1px solid rgba(30,41,59,.5)}
tr:hover{background:rgba(34,211,238,.03)}
.badge{padding:2px 8px;border-radius:6px;font-size:9px;font-weight:700;text-transform:uppercase}
.badge-ok{background:rgba(52,211,153,.15);color:var(--gn)}.badge-warn{background:rgba(251,191,36,.15);color:var(--am)}.badge-err{background:rgba(248,113,113,.15);color:var(--rd)}
.btn{padding:6px 14px;border-radius:8px;font-size:11px;font-weight:600;border:1px solid var(--b);background:var(--s2);color:var(--t);cursor:pointer;transition:all .2s;text-decoration:none;display:inline-block}
.btn:hover{border-color:var(--cy);color:var(--cy)}
.btn-primary{background:rgba(34,211,238,.15);border-color:var(--cy);color:var(--cy)}
.btn-danger{background:rgba(248,113,113,.1);border-color:var(--rd);color:var(--rd)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:900px){.grid2{grid-template-columns:1fr}}
.seed-row{display:flex;align-items:center;gap:10px;padding:10px;background:var(--s2);border:1px solid var(--b);border-radius:8px;margin-bottom:6px}
.seed-row:hover{border-color:var(--cy)}
.seed-email{font-family:'JetBrains Mono',monospace;font-size:12px;flex:1}
.seed-isp{font-size:10px;color:var(--d);min-width:80px}
.seed-status{min-width:60px}
input,select,textarea{background:var(--s2);border:1px solid var(--b);border-radius:8px;padding:8px 12px;color:var(--t);font-size:12px;font-family:'DM Sans',sans-serif;width:100%}
input:focus,select:focus{outline:none;border-color:var(--cy)}
.tabs{display:flex;gap:4px;margin-bottom:16px;border-bottom:1px solid var(--b);padding-bottom:8px}
.tab{padding:6px 16px;border-radius:8px 8px 0 0;font-size:12px;font-weight:600;cursor:pointer;color:var(--d);transition:all .2s}
.tab.active{color:var(--cy);background:rgba(34,211,238,.08);border-bottom:2px solid var(--cy)}
</style><style>.light{--bg:#f0f2f5;--s:#ffffff;--s2:#f8fafc;--b:#e2e8f0;--t:#1e293b;--d:#64748b}.light input,.light select,.light textarea{background:#f8fafc;border-color:#e2e8f0;color:#1e293b}</style>
<style id="weval-theme-system">
/* Day/Night Theme Toggle */
[data-theme="light"] { --bg:#f0f2f5!important; --s:#ffffff!important; --s2:#f8fafc!important; --b:#e2e8f0!important; --t:#1e293b!important; --d:#64748b!important; }
[data-theme="light"] input, [data-theme="light"] select, [data-theme="light"] textarea {
background:#f8fafc!important; border-color:#e2e8f0!important; color:#1e293b!important;
}
[data-theme="light"] .hdr, [data-theme="light"] header, [data-theme="light"] nav {
background:#ffffff!important; border-color:#e2e8f0!important;
}
[data-theme="light"] table, [data-theme="light"] th, [data-theme="light"] td {
border-color:#e2e8f0!important;
}
[data-theme="light"] th { background:#f8fafc!important; }
[data-theme="light"] .sc, [data-theme="light"] .card, [data-theme="light"] [class*="card"] {
background:#ffffff!important; border-color:#e2e8f0!important;
}
.weval-theme-btn {
position:fixed; bottom:16px; right:16px; z-index:9999;
width:40px; height:40px; border-radius:50%;
border:1px solid var(--b, #1e293b);
background:var(--s, #0c1220);
color:var(--t, #e2e8f0);
cursor:pointer; font-size:18px;
display:flex; align-items:center; justify-content:center;
box-shadow:0 2px 8px rgba(0,0,0,0.3);
transition:all 0.2s;
}
.weval-theme-btn:hover { transform:scale(1.1); }
</style>
</head><body>
<div class="hdr">
<div><h1>Seed Cleaner &amp; Manager</h1><div style="color:var(--d);font-size:12px;margin-top:2px">FLUX 2 &rarr; Intelligence &rarr; Seeds alimentent le Brain via Mail Extractor</div></div>
<div style="display:flex;gap:8px"><a class="back" href="operations-overview.html">&larr; Overview</a><a class="back" href="seed-factory.php">Seed Factory</a><a class="back" href="#" data-killed="dashboard">Menu</a></div>
</div>
<div class="stats">
<div class="sc"><div class="sv" style="color:var(--cy)">248</div><div class="sl">Total Seeds</div></div>
<div class="sc"><div class="sv" style="color:var(--gn)">192</div><div class="sl">Active / Healthy</div></div>
<div class="sc"><div class="sv" style="color:var(--am)">32</div><div class="sl">Expiring Soon</div></div>
<div class="sc"><div class="sv" style="color:var(--rd)">24</div><div class="sl">Dead / Invalid</div></div>
<div class="sc"><div class="sv" style="color:var(--pu)">18</div><div class="sl">ISPs Covered</div></div>
<div class="sc"><div class="sv" style="color:var(--bl)">4,821</div><div class="sl">Tests Run (30d)</div></div>
</div>
<div class="tabs">
<div class="tab active" onclick="showTab('seeds')">Seed List</div>
<div class="tab" onclick="showTab('add')">+ Add Seeds</div>
<div class="tab" onclick="showTab('health')">Health Check</div>
<div class="tab" onclick="showTab('harvest')">Harvest &rarr; Seeds</div>
</div>
<!-- SEED LIST -->
<div id="tab-seeds">
<div class="grid2">
<div class="panel">
<h2>Seeds par ISP - Gmail</h2>
<div class="seed-row"><input type="checkbox" style="width:auto"><span class="seed-email">test.inbox01@gmail.com</span><span class="seed-isp">Gmail</span><span class="seed-status"><span class="badge badge-ok">OK</span></span><span class="mono" style="font-size:10px;color:var(--d)">Last: 2h</span></div>
<div class="seed-row"><input type="checkbox" style="width:auto"><span class="seed-email">verify.seed02@gmail.com</span><span class="seed-isp">Gmail</span><span class="seed-status"><span class="badge badge-ok">OK</span></span><span class="mono" style="font-size:10px;color:var(--d)">Last: 1h</span></div>
<div class="seed-row"><input type="checkbox" style="width:auto"><span class="seed-email">check.brain03@gmail.com</span><span class="seed-isp">Gmail</span><span class="seed-status"><span class="badge badge-ok">OK</span></span><span class="mono" style="font-size:10px;color:var(--d)">Last: 3h</span></div>
<div class="seed-row"><input type="checkbox" style="width:auto"><span class="seed-email">seed.test04@gmail.com</span><span class="seed-isp">Gmail</span><span class="seed-status"><span class="badge badge-warn">SLOW</span></span><span class="mono" style="font-size:10px;color:var(--d)">Last: 8h</span></div>
<h2 style="margin-top:16px">Seeds par ISP - Outlook</h2>
<div class="seed-row"><input type="checkbox" style="width:auto"><span class="seed-email">inbox.test01@outlook.com</span><span class="seed-isp">Outlook</span><span class="seed-status"><span class="badge badge-ok">OK</span></span><span class="mono" style="font-size:10px;color:var(--d)">Last: 30m</span></div>
<div class="seed-row"><input type="checkbox" style="width:auto"><span class="seed-email">brain.seed02@hotmail.com</span><span class="seed-isp">Outlook</span><span class="seed-status"><span class="badge badge-ok">OK</span></span><span class="mono" style="font-size:10px;color:var(--d)">Last: 1h</span></div>
<div class="seed-row"><input type="checkbox" style="width:auto"><span class="seed-email">check.test03@outlook.fr</span><span class="seed-isp">Outlook</span><span class="seed-status"><span class="badge badge-err">DEAD</span></span><span class="mono" style="font-size:10px;color:var(--rd)">Locked</span></div>
<h2 style="margin-top:16px">Seeds par ISP - Europeens</h2>
<div class="seed-row"><input type="checkbox" style="width:auto"><span class="seed-email">test.inbox@t-online.de</span><span class="seed-isp">T-Online</span><span class="seed-status"><span class="badge badge-ok">OK</span></span><span class="mono" style="font-size:10px;color:var(--d)">Last: 45m</span></div>
<div class="seed-row"><input type="checkbox" style="width:auto"><span class="seed-email">seed.check@gmx.de</span><span class="seed-isp">GMX</span><span class="seed-status"><span class="badge badge-ok">OK</span></span><span class="mono" style="font-size:10px;color:var(--d)">Last: 2h</span></div>
<div class="seed-row"><input type="checkbox" style="width:auto"><span class="seed-email">verify.brain@orange.fr</span><span class="seed-isp">Orange</span><span class="seed-status"><span class="badge badge-ok">OK</span></span><span class="mono" style="font-size:10px;color:var(--d)">Last: 1h</span></div>
<div class="seed-row"><input type="checkbox" style="width:auto"><span class="seed-email">test.seed@free.fr</span><span class="seed-isp">Free</span><span class="seed-status"><span class="badge badge-warn">SLOW</span></span><span class="mono" style="font-size:10px;color:var(--d)">Last: 12h</span></div>
<div style="margin-top:12px;display:flex;gap:8px">
<button class="btn btn-primary">Check Selected</button>
<button class="btn btn-danger">Remove Dead</button>
<button class="btn">Export List</button>
</div>
</div>
<div>
<div class="panel">
<h2>Couverture ISP</h2>
<table>
<tr><th>ISP</th><th>Seeds</th><th>Healthy</th><th>Coverage</th></tr>
<tr><td><b>Gmail</b></td><td class="mono">42</td><td class="mono" style="color:var(--gn)">38</td><td><span class="badge badge-ok">GOOD</span></td></tr>
<tr><td><b>Outlook</b></td><td class="mono">36</td><td class="mono" style="color:var(--gn)">30</td><td><span class="badge badge-ok">GOOD</span></td></tr>
<tr><td><b>Yahoo</b></td><td class="mono">24</td><td class="mono" style="color:var(--gn)">20</td><td><span class="badge badge-ok">GOOD</span></td></tr>
<tr><td><b>T-Online</b></td><td class="mono">18</td><td class="mono" style="color:var(--gn)">16</td><td><span class="badge badge-ok">GOOD</span></td></tr>
<tr><td><b>GMX</b></td><td class="mono">16</td><td class="mono" style="color:var(--gn)">15</td><td><span class="badge badge-ok">GOOD</span></td></tr>
<tr><td><b>Orange FR</b></td><td class="mono">14</td><td class="mono" style="color:var(--gn)">12</td><td><span class="badge badge-ok">GOOD</span></td></tr>
<tr><td><b>Free FR</b></td><td class="mono">12</td><td class="mono" style="color:var(--am)">8</td><td><span class="badge badge-warn">LOW</span></td></tr>
<tr><td><b>SFR</b></td><td class="mono">10</td><td class="mono" style="color:var(--am)">7</td><td><span class="badge badge-warn">LOW</span></td></tr>
<tr><td><b>Libero IT</b></td><td class="mono">8</td><td class="mono" style="color:var(--gn)">8</td><td><span class="badge badge-ok">GOOD</span></td></tr>
<tr><td><b>Office 365</b></td><td class="mono">20</td><td class="mono" style="color:var(--gn)">18</td><td><span class="badge badge-ok">GOOD</span></td></tr>
<tr><td><b>Others</b></td><td class="mono">48</td><td class="mono" style="color:var(--gn)">40</td><td><span class="badge badge-ok">GOOD</span></td></tr>
</table>
</div>
<div class="panel">
<h2>Flux: Seed &rarr; Brain</h2>
<div style="font-size:12px;color:var(--d);line-height:1.8">
<div><b style="color:var(--cy)">1.</b> Harvest fournit de nouveaux seeds (Account Creator)</div>
<div><b style="color:var(--cy)">2.</b> Seeds recoivent les emails de test (Brain Send)</div>
<div><b style="color:var(--cy)">3.</b> <a href="tools/mailbox-extractor.html" style="color:var(--pu)">Mail Extractor</a> lit chaque seed inbox</div>
<div><b style="color:var(--cy)">4.</b> Resultat inbox/spam/missing &rarr; Brain Engine</div>
<div><b style="color:var(--cy)">5.</b> Brain calcule les winning configs par ISP</div>
<div><b style="color:var(--cy)">6.</b> Configs deployees vers <a href="brain-unified-send.html" style="color:var(--gn)">Brain Unified Send</a></div>
</div>
<div style="margin-top:12px;display:flex;gap:8px;flex-wrap:wrap">
<a class="btn" href="tools/mailbox-extractor.html">Mail Extractor</a>
<a class="btn" href="brain-combo-discovery.html">Winning Configs</a>
</div>
</div>
</div>
</div>
</div>
<!-- ADD SEEDS -->
<div id="tab-add" style="display:none">
<div class="panel">
<h2>Ajouter des Seeds</h2>
<div style="margin-bottom:12px"><label style="display:block;font-size:10px;color:var(--d);text-transform:uppercase;margin-bottom:4px">Emails (un par ligne)</label>
<textarea rows="8" placeholder="seed1@gmail.com&#10;seed2@outlook.com&#10;seed3@t-online.de&#10;..."></textarea></div>
<div style="display:flex;gap:10px;margin-bottom:12px">
<div style="flex:1"><label style="display:block;font-size:10px;color:var(--d);text-transform:uppercase;margin-bottom:4px">IMAP Server</label><input placeholder="imap.gmail.com"></div>
<div style="flex:1"><label style="display:block;font-size:10px;color:var(--d);text-transform:uppercase;margin-bottom:4px">Password / App Password</label><input type="password" placeholder="App password"></div>
<div style="flex:1"><label style="display:block;font-size:10px;color:var(--d);text-transform:uppercase;margin-bottom:4px">Auto-detect ISP</label><select><option selected>Auto from domain</option><option>Manual</option></select></div>
</div>
<div style="display:flex;gap:8px"><button class="btn btn-primary">Add &amp; Verify Seeds</button><button class="btn">Import CSV</button><button class="btn">Generate from Harvest</button></div>
</div>
</div>
<!-- HEALTH CHECK -->
<div id="tab-health" style="display:none">
<div class="panel">
<h2>Health Check - Derniere execution: il y a 2h</h2>
<table>
<tr><th>Check</th><th>Seeds OK</th><th>Failed</th><th>Action</th></tr>
<tr><td><b>IMAP Login</b></td><td class="mono" style="color:var(--gn)">224</td><td class="mono" style="color:var(--rd)">24</td><td><button class="btn" style="font-size:10px;padding:3px 8px">Fix 24</button></td></tr>
<tr><td><b>Inbox Readable</b></td><td class="mono" style="color:var(--gn)">218</td><td class="mono" style="color:var(--rd)">6</td><td><button class="btn" style="font-size:10px;padding:3px 8px">Fix 6</button></td></tr>
<tr><td><b>Last Activity &lt;24h</b></td><td class="mono" style="color:var(--gn)">192</td><td class="mono" style="color:var(--am)">32</td><td><button class="btn" style="font-size:10px;padding:3px 8px">Re-test</button></td></tr>
<tr><td><b>Not Blacklisted</b></td><td class="mono" style="color:var(--gn)">245</td><td class="mono" style="color:var(--rd)">3</td><td><button class="btn" style="font-size:10px;padding:3px 8px">Remove</button></td></tr>
</table>
<button class="btn btn-primary" style="margin-top:12px">Run Full Health Check Now</button>
</div>
</div>
<!-- HARVEST -->
<div id="tab-harvest" style="display:none">
<div class="panel">
<h2>Harvest &rarr; Seeds Pipeline</h2>
<div style="font-size:13px;color:var(--d);line-height:1.8;margin-bottom:16px">
Le <b style="color:var(--cy)">Harvest Manager</b> genere automatiquement de nouveaux comptes email via l'<b style="color:var(--pu)">Account Creator</b>,
qui sont ensuite enregistres comme seeds pour le Brain Engine. Le flux complet:
</div>
<div style="display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:16px;font-size:13px">
<span style="background:var(--s2);padding:8px 14px;border-radius:8px;border:1px solid var(--b)">Account Creator</span>
<span style="color:var(--cy)">&rarr;</span>
<span style="background:var(--s2);padding:8px 14px;border-radius:8px;border:1px solid var(--b)">New Email Created</span>
<span style="color:var(--cy)">&rarr;</span>
<span style="background:var(--s2);padding:8px 14px;border-radius:8px;border:1px solid var(--b)">Registered as Seed</span>
<span style="color:var(--cy)">&rarr;</span>
<span style="background:var(--s2);padding:8px 14px;border-radius:8px;border:1px solid var(--b)">IMAP Config Auto</span>
<span style="color:var(--cy)">&rarr;</span>
<span style="background:rgba(52,211,153,.1);padding:8px 14px;border-radius:8px;border:1px solid var(--gn);color:var(--gn)">Ready for Brain</span>
</div>
<div style="display:flex;gap:10px;margin-bottom:12px">
<div style="flex:1"><label style="display:block;font-size:10px;color:var(--d);text-transform:uppercase;margin-bottom:4px">ISP a couvrir</label>
<select><option>Gmail (need +4)</option><option>Free FR (need +4)</option><option>SFR (need +3)</option><option>All low-coverage</option></select></div>
<div style="flex:1"><label style="display:block;font-size:10px;color:var(--d);text-transform:uppercase;margin-bottom:4px">Quantity</label>
<input type="number" value="10" placeholder="Seeds to create"></div>
<div style="flex:1"><label style="display:block;font-size:10px;color:var(--d);text-transform:uppercase;margin-bottom:4px">Persona Source</label>
<select><option selected>Auto (Lookalike Engine)</option><option>Manual</option></select></div>
</div>
<div style="display:flex;gap:8px">
<button class="btn btn-primary" onclick="alert('Launching harvest: Creating 10 new seeds for Free FR...')">Launch Harvest</button>
<a class="btn" href="harvest-manager.php">Harvest Manager</a>
<a class="btn" href="account-creator.html">Account Creator</a>
</div>
</div>
</div>
<script>
function showTab(name){document.querySelectorAll('[id^="tab-"]').forEach(t=>t.style.display='none');document.querySelectorAll('.tab').forEach(t=>t.classList.remove('active'));document.getElementById('tab-'+name).style.display='block';event.target.classList.add('active');}
</script>
<script>function toggleTheme(){var b=document.body,t=document.getElementById("theme-toggle");if(b.classList.contains("light")){b.classList.remove("light");t.textContent="🌙";localStorage.setItem("wevads-theme","dark")}else{b.classList.add("light");t.textContent="☀️";localStorage.setItem("wevads-theme","light")}}if(localStorage.getItem("wevads-theme")==="light"){document.body.classList.add("light");var tb=document.getElementById("theme-toggle");if(tb)tb.textContent="☀️"}</script><script src="arsenal-common.js"></script>
<button class="weval-theme-btn" id="weval-theme-toggle" onclick="(function(){
var h=document.documentElement;
var c=h.getAttribute('data-theme')||'dark';
var n=c==='dark'?'light':'dark';
h.setAttribute('data-theme',n);
localStorage.setItem('weval-theme',n);
document.getElementById('weval-theme-toggle').textContent=n==='dark'?'☀️':'🌙';
})()">☀️</button>