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

143 lines
12 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",[PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION,PDO::ATTR_DEFAULT_FETCH_MODE=>PDO::FETCH_ASSOC]);
$_db->exec("SET search_path TO admin,public");
$_tc=(int)$_db->query("SELECT COUNT(*) FROM send_contacts")->fetchColumn();
$_ta=(int)$_db->query("SELECT COUNT(*) FROM send_contacts WHERE status='active'")->fetchColumn();
$_by_isp=$_db->query("SELECT isp,COUNT(*) as cnt FROM send_contacts GROUP BY isp ORDER BY cnt DESC LIMIT 15")->fetchAll();
$_by_source=$_db->query("SELECT COALESCE(source,'unknown') as source,COUNT(*) as cnt FROM send_contacts GROUP BY source ORDER BY cnt DESC LIMIT 10")->fetchAll();
$_warmup=(int)$_db->query("SELECT COUNT(*) FROM warmup_accounts WHERE status='warming'")->fetchColumn();
$_seeds=(int)$_db->query("SELECT COUNT(*) FROM seed_accounts")->fetchColumn();
$_bc=(int)$_db->query("SELECT COUNT(*) FROM brain_send_configs WHERE status='active'")->fetchColumn();
$_bw=(int)$_db->query("SELECT COUNT(*) FROM brain_send_configs WHERE is_winner=true")->fetchColumn();
$_creatives=(int)$_db->query("SELECT COUNT(*) FROM offer_creatives WHERE status='active'")->fetchColumn();
$_offers=(int)$_db->query("SELECT COUNT(*) FROM offers WHERE status='active'")->fetchColumn();
$_sent_today=(int)$_db->query("SELECT COUNT(*) FROM unified_send_log WHERE created_at > CURRENT_DATE")->fetchColumn();
$_sent_week=(int)$_db->query("SELECT COUNT(*) FROM unified_send_log WHERE created_at > CURRENT_DATE - INTERVAL '7 days'")->fetchColumn();
$_opens=(int)$_db->query("SELECT COUNT(*) FROM open_log")->fetchColumn();
$_clicks=(int)$_db->query("SELECT COUNT(*) FROM click_log")->fetchColumn();
$_cv_real=(int)$_db->query("SELECT COUNT(*) FROM conversion_log WHERE source='real'")->fetchColumn();
$_rev_real=(float)$_db->query("SELECT COALESCE(SUM(payout),0) FROM conversion_log WHERE source='real'")->fetchColumn();
$_cap=$_warmup*50;
?><!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<title>WEVADS - CRM 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;--pk:#f472b6;--or:#f59e0b}
*{margin:0;padding:0;box-sizing:border-box}body{background:var(--bg);color:var(--t);font-family:'DM Sans',sans-serif;font-size:12px}
.app{max-width:1440px;margin:0 auto;padding:16px}
.hdr{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;background:var(--s);border:1px solid var(--b);border-radius:10px;margin-bottom:16px}
.hdr h1{font-size:20px;font-weight:700}.hdr h1 b{color:var(--cy)}.hdr .sub{color:var(--d);font-size:11px;margin-top:2px}
.sr{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:16px}
.sc{background:var(--s);border:1px solid var(--b);border-radius:8px;padding:14px;text-align:center}
.sc .n{font-family:'JetBrains Mono',monospace;font-size:22px;font-weight:700}.sc .l{font-size:9px;color:var(--d);margin-top:4px;text-transform:uppercase;letter-spacing:.5px}
.tabs{display:flex;gap:4px;margin-bottom:12px;border-bottom:1px solid var(--b);padding-bottom:6px}
.tab{padding:8px 16px;cursor:pointer;font-weight:600;font-size:11px;color:var(--d);border-bottom:2px solid transparent;transition:.2s}.tab:hover{color:var(--t)}.tab.on{color:var(--cy);border-color:var(--cy)}
.tab .bg{background:rgba(34,211,238,.15);color:var(--cy);padding:1px 8px;border-radius:10px;font-size:9px;margin-left:4px}
.sec{display:none}.sec.on{display:block}
.cd{background:var(--s);border:1px solid var(--b);border-radius:10px;padding:16px;margin-bottom:12px}
table{width:100%;border-collapse:collapse}th{text-align:left;padding:6px 8px;color:var(--d);font-size:9px;text-transform:uppercase;border-bottom:1px solid var(--b)}
td{padding:6px 8px;border-bottom:1px solid rgba(30,41,59,.3);font-size:11px}tr:hover{background:rgba(34,211,238,.02)}
.bar{height:8px;border-radius:4px;background:var(--s2);overflow:hidden}.bar-fill{height:100%;border-radius:4px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.grid3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}
.funnel{display:flex;gap:8px;align-items:center;justify-content:center;margin:20px 0}
.funnel-step{text-align:center;padding:16px;background:var(--s);border:1px solid var(--b);border-radius:8px;flex:1}
.funnel-step .n{font-family:'JetBrains Mono',monospace;font-size:20px;font-weight:700}
.funnel-step .l{font-size:9px;color:var(--d);margin-top:4px;text-transform:uppercase}
.funnel-arr{color:var(--d);font-size:20px}
.ready{background:linear-gradient(135deg,rgba(34,211,238,.1),rgba(52,211,153,.1));border:1px solid rgba(34,211,238,.3);border-radius:10px;padding:20px;text-align:center;margin-bottom:16px}
.ready h2{color:var(--cy);margin-bottom:8px}
@media(max-width:1000px){.sr{grid-template-columns:repeat(2,1fr)}.grid2,.grid3{grid-template-columns:1fr}.funnel{flex-direction:column}}
</style>
<link rel="stylesheet" href="wevads-global.css?v1770777318">
</head><body>
<div class="app">
<div class="hdr"><div><h1>📤 <b>CRM</b> Send</h1><div class="sub">Targeted email campaigns — Segmented send, ISP routing, funnel tracking</div></div>
<div style="text-align:right"><div style="font-family:'JetBrains Mono',monospace;font-size:28px;font-weight:700;color:var(--cy)"><?=number_format($_tc)?></div><div style="font-size:10px;color:var(--d)">Total Contacts</div></div></div>
<div class="sr">
<div class="sc"><div class="n" style="color:var(--gn)"><?=number_format($_warmup)?></div><div class="l">Warming Accounts</div></div>
<div class="sc"><div class="n" style="color:var(--bl)"><?=number_format($_cap)?></div><div class="l">Daily Capacity</div></div>
<div class="sc"><div class="n" style="color:var(--am)"><?=$_bc?></div><div class="l">Active Configs</div></div>
<div class="sc"><div class="n" style="color:var(--pk)">$<?=number_format($_rev_real,2)?></div><div class="l">Real Revenue</div></div>
</div>
<div class="ready"><h2>📊 Send Funnel — Live</h2>
<div class="funnel">
<div class="funnel-step"><div class="n" style="color:var(--bl)"><?=number_format($_sent_week)?></div><div class="l">Sent (7d)</div></div>
<div class="funnel-arr"></div>
<div class="funnel-step"><div class="n" style="color:var(--cy)"><?=number_format($_opens)?></div><div class="l">Opens</div></div>
<div class="funnel-arr"></div>
<div class="funnel-step"><div class="n" style="color:var(--am)"><?=number_format($_clicks)?></div><div class="l">Clicks</div></div>
<div class="funnel-arr"></div>
<div class="funnel-step"><div class="n" style="color:var(--gn)"><?=$_cv_real?></div><div class="l">Conversions</div></div>
<div class="funnel-arr"></div>
<div class="funnel-step"><div class="n" style="color:var(--pk)">$<?=number_format($_rev_real,2)?></div><div class="l">Revenue</div></div>
</div></div>
<div class="tabs">
<div class="tab on" onclick="st('seg',this)">Segments</div>
<div class="tab" onclick="st('isp',this)">By ISP <span class="bg"><?=count($_by_isp)?></span></div>
<div class="tab" onclick="st('src',this)">By Source <span class="bg"><?=count($_by_source)?></span></div>
<div class="tab" onclick="st('rdy',this)">Send Ready</div>
</div>
<div class="sec on" id="s-seg"><div class="grid3">
<div class="cd" style="text-align:center"><h3 style="color:var(--gn);margin-bottom:8px">🟢 Active Pool</h3>
<div style="font-family:'JetBrains Mono',monospace;font-size:32px;font-weight:700;color:var(--gn)"><?=number_format($_ta)?></div>
<div style="color:var(--d);font-size:10px;margin-top:4px">Ready to receive emails</div></div>
<div class="cd" style="text-align:center"><h3 style="color:var(--am);margin-bottom:8px">🌱 Seeds</h3>
<div style="font-family:'JetBrains Mono',monospace;font-size:32px;font-weight:700;color:var(--am)"><?=number_format($_seeds)?></div>
<div style="color:var(--d);font-size:10px;margin-top:4px">Inbox placement validators</div></div>
<div class="cd" style="text-align:center"><h3 style="color:var(--pk);margin-bottom:8px">🎨 Creatives</h3>
<div style="font-family:'JetBrains Mono',monospace;font-size:32px;font-weight:700;color:var(--pk)"><?=$_creatives?></div>
<div style="color:var(--d);font-size:10px;margin-top:4px">Active email templates</div></div>
</div>
<div class="grid2" style="margin-top:12px">
<div class="cd"><h3 style="margin-bottom:8px">⚡ Send Engine Status</h3>
<table><tr><th>Component</th><th>Value</th></tr>
<tr><td>Warming Accounts</td><td style="color:var(--gn);font-weight:700"><?=number_format($_warmup)?></td></tr>
<tr><td>Daily Capacity</td><td style="color:var(--bl);font-weight:700"><?=number_format($_cap)?> emails</td></tr>
<tr><td>Active Configs</td><td style="color:var(--am);font-weight:700"><?=$_bc?></td></tr>
<tr><td>Winner Configs</td><td style="color:var(--pk);font-weight:700"><?=$_bw?></td></tr>
<tr><td>Active Offers</td><td style="color:var(--cy);font-weight:700"><?=$_offers?></td></tr>
<tr><td>Sent Today</td><td style="font-weight:700"><?=number_format($_sent_today)?></td></tr>
</table></div>
<div class="cd"><h3 style="margin-bottom:8px">📈 Performance</h3>
<table><tr><th>Metric</th><th>Value</th></tr>
<tr><td>Sent (7 days)</td><td style="font-weight:700"><?=number_format($_sent_week)?></td></tr>
<tr><td>Total Opens</td><td style="color:var(--cy);font-weight:700"><?=number_format($_opens)?></td></tr>
<tr><td>Total Clicks</td><td style="color:var(--am);font-weight:700"><?=number_format($_clicks)?></td></tr>
<tr><td>Real Conversions</td><td style="color:var(--gn);font-weight:700"><?=$_cv_real?></td></tr>
<tr><td>Real Revenue</td><td style="color:var(--pk);font-weight:700">$<?=number_format($_rev_real,2)?></td></tr>
<tr><td>Conversion Rate</td><td style="font-weight:700"><?=$_clicks>0?number_format($_cv_real/$_clicks*100,2):'0'?>%</td></tr>
</table></div>
</div></div>
<div class="sec" id="s-isp"><div class="cd"><h3 style="margin-bottom:12px">ISP Distribution — <?=number_format($_tc)?> Contacts</h3>
<table><tr><th>ISP</th><th>Contacts</th><th>Share</th><th>Distribution</th></tr>
<?php foreach($_by_isp as $i):$pct=$_tc>0?round($i['cnt']/$_tc*100,1):0;$clr=$pct>30?'var(--gn)':($pct>10?'var(--cy)':'var(--pu)');?>
<tr><td><b style="cursor:pointer;color:var(--cy);text-decoration:underline" onclick="if(typeof drillISP==='function')drillISP('<?=$i['isp']?>')"><?=htmlspecialchars($i['isp'])?></b></td>
<td style="font-family:'JetBrains Mono',monospace;font-weight:700"><?=number_format($i['cnt'])?></td>
<td><?=$pct?>%</td>
<td><div class="bar" style="width:200px"><div class="bar-fill" style="width:<?=$pct?>%;background:<?=$clr?>"></div></div></td></tr>
<?php endforeach;?></table>
</div></div>
<div class="sec" id="s-src"><div class="cd"><h3 style="margin-bottom:12px">Contact Sources</h3>
<table><tr><th>Source</th><th>Contacts</th><th>Share</th></tr>
<?php foreach($_by_source as $s):?>
<tr><td><b><?=htmlspecialchars($s['source'])?></b></td>
<td style="font-family:'JetBrains Mono',monospace"><?=number_format($s['cnt'])?></td>
<td><?=$_tc>0?number_format($s['cnt']/$_tc*100,1):0?>%</td></tr>
<?php endforeach;?></table>
</div></div>
<div class="sec" id="s-rdy"><div class="cd" style="text-align:center;padding:40px">
<h2 style="color:var(--cy);margin-bottom:16px">Send Pipeline Ready</h2>
<div class="grid3" style="max-width:600px;margin:0 auto">
<div><div style="font-size:40px">📧</div><div style="font-family:'JetBrains Mono',monospace;font-size:28px;font-weight:700;color:var(--gn)"><?=number_format($_tc)?></div><div style="color:var(--d);font-size:10px">Contacts</div></div>
<div><div style="font-size:40px">🎨</div><div style="font-family:'JetBrains Mono',monospace;font-size:28px;font-weight:700;color:var(--pk)"><?=$_creatives?></div><div style="color:var(--d);font-size:10px">Creatives</div></div>
<div><div style="font-size:40px"></div><div style="font-family:'JetBrains Mono',monospace;font-size:28px;font-weight:700;color:var(--am)"><?=$_bc?></div><div style="color:var(--d);font-size:10px">Configs</div></div>
</div>
<p style="color:var(--d);margin-top:20px;font-size:12px">Brain productive sends are automated via cron. CRM targeted campaigns coming in Phase 2.</p>
</div></div>
</div>
<script>function st(id,el){document.querySelectorAll('.tab').forEach(t=>t.classList.remove('on'));document.querySelectorAll('.sec').forEach(s=>s.classList.remove('on'));el.classList.add('on');document.getElementById('s-'+id).classList.add('on');}</script>
<?php include("/opt/wevads-arsenal/public/universal-drill.html"); ?>
</body></html>