Files
wevads-platform/public/send-process-fix.html

202 lines
12 KiB
HTML

<!DOCTYPE html><html lang="fr" data-theme="dark"><head>
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate"><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>WEVADS - Production Send</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;--og:#fb923c}
.light{--bg:#f0f2f5;--s:#0c1220;--s2:#060a14;--b:#1e293b;--t:#e2e8f0;--d:#64748b}.light input,.light select,.light textarea{background:#060a14!important;border-color:#e2e8f0!important;color:#e2e8f0!important}
*{margin:0;padding:0;box-sizing:border-box}body{background:#060a14;color:var(--t);font-family:'DM Sans',sans-serif;font-size:11px}
.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(--rd)}
.wrap{padding:16px;max-width:1200px;margin:0 auto}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.grid3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}
.card{background:var(--s);border:1px solid var(--b);border-radius:10px;padding:16px;margin-bottom:12px}
.form-row{margin-bottom:10px}.form-row label{display:block;font-size:9px;text-transform:uppercase;color:var(--d);margin-bottom:4px;letter-spacing:.5px}
.form-row input,.form-row select,.form-row textarea{width:100%;background:var(--s2);border:1px solid var(--b);color:var(--t);padding:8px;border-radius:6px;font-size:11px;font-family:'DM Sans',sans-serif}
.form-row select[multiple]{min-height:140px}
.btn{padding:10px 20px;border-radius:8px;border:1px solid var(--b);background:var(--s2);color:var(--t);cursor:pointer;font-size:11px;font-weight:600;width:100%;text-align:center;transition:.2s}.btn:hover{border-color:var(--cy)}
.btn-send{background:rgba(248,113,113,.15);border-color:var(--rd);color:var(--rd);padding:14px;font-size:14px;font-weight:700}
.btn-gn{background:rgba(52,211,153,.15);border-color:var(--gn);color:var(--gn)}
.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)}
.server-tag{display:inline-block;background:var(--s2);border:1px solid var(--b);border-radius:4px;padding:2px 6px;font-size:9px;margin:2px;font-family:'JetBrains Mono',monospace}
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)}
@media(max-width:900px){.grid2,.grid3{grid-template-columns:1fr}}
.sc,.card,[class*="stat-card"]{transition:all .25s ease;position:relative;overflow:hidden}
.sc:hover,.card:hover,[class*="stat-card"]:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(0,0,0,.25)}
.sc::after,.card::after{content:'';position:absolute;bottom:0;left:0;right:0;height:2px;background:var(--cy,#22d3ee);opacity:0;transition:opacity .25s}
.sc:hover::after,.card:hover::after{opacity:.7}
.btn,.button,[class*="btn-"]{transition:all .2s ease}
.btn:hover,.button:hover{transform:translateY(-1px)}
@keyframes fadeIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.sc,.card{animation:fadeIn .4s ease both}
.sc:nth-child(2),.card:nth-child(2){animation-delay:.05s}
.sc:nth-child(3),.card:nth-child(3){animation-delay:.1s}
.sc:nth-child(4),.card:nth-child(4){animation-delay:.15s}
.sc:nth-child(5),.card:nth-child(5){animation-delay:.2s}
.sc:nth-child(6),.card:nth-child(6){animation-delay:.25s}
</style>
<style id="weval-theme-system">
/* Day/Night Theme Toggle */
[data-theme="light"] { --bg:#f0f2f5!important; --s:#0c1220!important; --s2:#060a14!important; --b:#1e293b!important; --t:#e2e8f0!important; --d:#64748b!important; }
[data-theme="light"] input, [data-theme="light"] select, [data-theme="light"] textarea {
background:#060a14!important; border-color:#e2e8f0!important; color:#e2e8f0!important;
}
[data-theme="light"] .hdr, [data-theme="light"] header, [data-theme="light"] nav {
background:#0c1220!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:#060a14!important; }
[data-theme="light"] .sc, [data-theme="light"] .card, [data-theme="light"] [class*="card"] {
background:#0c1220!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, #1e293b);
cursor:pointer; font-size:18px;
display:flex; align-items:center; justify-content:center;
box-shadow:0 2px 8px rgba(0,0,0,.3);
transition:all 0.2s;
}
.weval-theme-btn:hover { transform:scale(1.1); }
.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>
<!-- nav-pills-bar -->
<div class="hdr"><div><h1>🚀 WEVADS • <span>Production Send Process</span></h1>
<p style="font-size:12px;color:#64748b;margin:6px 0 16px;max-width:600px;line-height:1.6">Send Process Fix — diagnostic et réparation envois échoués, retry intelligent.</p><span style="font-size:10px;color:var(--d)">Sélection serveurs PMTA → VMTAs → Lancement envoi production</span></div><div style="display:flex;gap:8px;align-items:center"><span class="badge badge-gn">● PRODUCTION</span><span style="font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--d)" id="clock"></span></div></div>
<div class="wrap">
<div class="grid2">
<div>
<div class="card">
<h3 style="font-size:12px;margin-bottom:10px;color:var(--cy)">📡 SERVERS / PMTAs</h3>
<div class="form-row"><label>Serveurs disponibles</label><select multiple id="servers">
<option value="pmta-main">pmta-main (95.216.167.89) — Queue: 15,534</option>
<option value="pmta-02">pmta-02 (85.235.100.12) — Queue: 8,240</option>
<option value="pmta-03">pmta-03 (85.235.100.13) — Queue: 4,120</option>
<option value="pmta-04">pmta-04 (185.142.80.5) — Queue: 6,800</option>
<option value="pmta-05">pmta-05 (185.142.80.6) — Queue: 2,100</option>
</select></div>
<div style="font-size:9px;color:var(--d);margin-bottom:8px">Sélectionnés: <span id="srv-count" style="color:var(--cy)">0</span></div>
</div>
<div class="card">
<h3 style="font-size:12px;margin-bottom:10px;color:var(--am)">🔀 VMTAs Disponibles</h3>
<div class="form-row"><label>Available VMTAs</label><select multiple id="vmtas-avail">
<option>vmta-gmail-01 (IP: 185.142.80.10)</option>
<option>vmta-gmail-02 (IP: 185.142.80.11)</option>
<option>vmta-outlook-01 (IP: 85.235.100.20)</option>
<option>vmta-outlook-02 (IP: 85.235.100.21)</option>
<option>vmta-tonline-01 (IP: 185.142.80.30)</option>
<option>vmta-gmx-01 (IP: 85.235.100.30)</option>
<option>vmta-yahoo-01 (IP: 185.142.80.40)</option>
<option>vmta-general-01 (IP: 95.216.167.89)</option>
</select></div>
<div style="display:flex;gap:6px;margin-bottom:8px">
<button class="btn" style="width:auto;padding:6px 12px" onclick="selectAll('vmtas-avail')">Select All</button>
<button class="btn" style="width:auto;padding:6px 12px" onclick="moveSelected()">→ Add to Selected</button>
</div>
<div class="form-row"><label>Selected VMTAs</label><select multiple id="vmtas-sel" style="min-height:100px"></select></div>
<div style="font-size:9px;color:var(--d)">VMTAs sélectionnés: <span id="vmta-count" style="color:var(--am)">0</span></div>
</div>
</div>
<div>
<div class="card">
<h3 style="font-size:12px;margin-bottom:10px;color:var(--gn)">📋 Configuration d'envoi</h3>
<div class="form-row"><label>Campagne</label><input value="PROD-2026-02-08-001"></div>
<div class="form-row"><label>Liste de contacts</label><select>
<option>Hotmail US Clean Winx (4,100,000)</option>
<option>Gmail DE DACH Premium (1,200,000)</option>
<option>T-Online Leads (340,000)</option>
<option>GMX/Web.de Mix (520,000)</option>
</select></div>
<div class="form-row"><label>Template</label><select>
<option>FOMO Urgence — Winter Sale -40%</option>
<option>B2B Outreach — Decision Maker</option>
<option>Newsletter Premium</option>
<option>Pharma Free Trial</option>
</select></div>
<div class="form-row"><label>Méthode d'envoi</label><select>
<option>PMTA Direct (VMTAs sélectionnés)</option>
<option>Brain Unified Send (auto-routing)</option>
<option>O365 Graph API</option>
<option>Mix: PMTA + O365</option>
</select></div>
<div class="form-row"><label>Volume</label><select>
<option>100 (test)</option>
<option>1,000</option>
<option>10,000</option>
<option>100,000</option>
<option selected>Full list</option>
</select></div>
<div class="form-row"><label>Throttle (emails/min)</label><input type="number" value="50"></div>
<div class="form-row"><label>Planification</label><select>
<option>Maintenant</option>
<option selected>Predictive Window (IA)</option>
<option>Programmé — choisir date/heure</option>
</select></div>
</div>
<div class="card">
<h3 style="font-size:12px;margin-bottom:8px">✅ Checklist pré-envoi</h3>
<div style="font-size:10px;line-height:2">
<div><span style="color:var(--gn)"></span> Serveurs PMTA actifs</div>
<div><span style="color:var(--gn)"></span> VMTAs configurés</div>
<div><span style="color:var(--gn)"></span> Liste nettoyée (Trap Detector)</div>
<div><span style="color:var(--gn)"></span> Template muté (Neural DOM)</div>
<div><span style="color:var(--gn)"></span> DNS vérifié (SPF+DKIM+DMARC)</div>
<div><span style="color:var(--gn)"></span> IP reputation OK</div>
<div><span style="color:var(--gn)"></span> Kill Switch prêt</div>
</div>
</div>
<button class="btn btn-send" onclick="launchSend()">🚀 LANCER ENVOI PRODUCTION</button>
<div id="send-status" style="margin-top:8px;text-align:center;font-size:11px"></div>
</div>
</div>
</div>
<script>
}
document.getElementById('servers').addEventListener('change',function(){document.getElementById('srv-count').textContent=this.selectedOptions.length});
function selectAll(id){var s=document.getElementById(id);for(var i=0;i<s.options.length;i++)s.options[i].selected=true}
function moveSelected(){var a=document.getElementById('vmtas-avail'),s=document.getElementById('vmtas-sel');for(var i=a.options.length-1;i>=0;i--){if(a.options[i].selected){var o=new Option(a.options[i].text,a.options[i].value);s.add(o);a.remove(i)}}document.getElementById('vmta-count').textContent=s.options.length}
function launchSend(){var st=document.getElementById('send-status');st.innerHTML='<span style="color:var(--am)">⏳ Préparation envoi...</span>';setTimeout(function(){st.innerHTML='<span style="color:var(--gn)">✅ Envoi lancé — Monitoring en cours sur Brain Drilldown</span>'},2000)}
setInterval(function(){document.getElementById('clock').textContent=new Date().toLocaleString('fr-FR')},1000);
</script><script src="arsenal-common.js?v1770778169"></script>
</script>
<script>
var _API="/api/send-factory.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>
</body></html>