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

83 lines
7.5 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");
$_cp_count=(int)$_db->query("SELECT COUNT(*) FROM creative_performance")->fetchColumn();
$_sp_count=(int)$_db->query("SELECT COUNT(*) FROM subject_performance")->fetchColumn();
$_cr_active=(int)$_db->query("SELECT COUNT(*) FROM offer_creatives WHERE status='active'")->fetchColumn();
$_cr_total=(int)$_db->query("SELECT COUNT(*) FROM offer_creatives")->fetchColumn();
$_cp_cols=$_db->query("SELECT column_name FROM information_schema.columns WHERE table_schema='admin' AND table_name='creative_performance' ORDER BY ordinal_position")->fetchAll(PDO::FETCH_COLUMN);
$_sp_cols=$_db->query("SELECT column_name FROM information_schema.columns WHERE table_schema='admin' AND table_name='subject_performance' ORDER BY ordinal_position")->fetchAll(PDO::FETCH_COLUMN);
// Creative performance
$_cp=[];
try{
$select_cp='*';
if(in_array('creative_id',$_cp_cols)&&in_array('opens',$_cp_cols))$select_cp='creative_id,isp,opens,clicks,conversions,inbox_rate,score';
$_cp=$_db->query("SELECT $select_cp FROM creative_performance ORDER BY id DESC LIMIT 30")->fetchAll();
}catch(Exception $e){$_cp=[];}
// Subject performance
$_sp=[];
try{
$select_sp='*';
if(in_array('subject',$_sp_cols)&&in_array('open_rate',$_sp_cols))$select_sp='subject,open_rate,click_rate,sends,isp';
elseif(in_array('subject_line',$_sp_cols))$select_sp='subject_line as subject,open_rate,click_rate,total_sent as sends,isp_target as isp';
$_sp=$_db->query("SELECT $select_sp FROM subject_performance ORDER BY id DESC LIMIT 30")->fetchAll();
}catch(Exception $e){$_sp=[];}
$_bcp=[];
try{$_bcp=$_db->query("SELECT * FROM brain_creative_performance ORDER BY id DESC LIMIT 20")->fetchAll();}catch(Exception $e){}
?><!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<title>WEVADS - Creative Performance</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(--am)}.hdr .sub{color:var(--d);font-size:11px}
.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}
.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}.tab:hover{color:var(--t)}.tab.on{color:var(--am);border-color:var(--am)}
.tab .bg{background:rgba(251,191,36,.15);color:var(--am);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(251,191,36,.02)}
.bar{height:8px;border-radius:4px;background:var(--s2);overflow:hidden}.bar-fill{height:100%;border-radius:4px}
.subj{max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
</style><link rel="stylesheet" href="wevads-global.css?v1770777318">
</head><body>
<div class="app">
<div class="hdr"><div><h1>📊 <b>Creative</b> Performance</h1><div class="sub">A/B testing results, subject line performance, ISP-level creative analytics</div></div></div>
<div class="sr">
<div class="sc"><div class="n" style="color:var(--am)"><?=number_format($_cp_count)?></div><div class="l">Creative Tests</div></div>
<div class="sc"><div class="n" style="color:var(--cy)"><?=number_format($_sp_count)?></div><div class="l">Subject Tests</div></div>
<div class="sc"><div class="n" style="color:var(--gn)"><?=$_cr_active?></div><div class="l">Active Creatives</div></div>
<div class="sc"><div class="n" style="color:var(--pk)"><?=$_cr_total?></div><div class="l">Total Creatives</div></div>
</div>
<div class="tabs">
<div class="tab on" onclick="st('cp',this)">Creative Perf <span class="bg"><?=$_cp_count?></span></div>
<div class="tab" onclick="st('sp',this)">Subject Lines <span class="bg"><?=$_sp_count?></span></div>
<div class="tab" onclick="st('bp',this)">Brain Perf <span class="bg"><?=count($_bcp)?></span></div>
</div>
<div class="sec on" id="s-cp"><div class="cd"><h3 style="margin-bottom:10px">Creative Performance Log — <?=number_format($_cp_count)?> records</h3>
<p style="color:var(--d);margin-bottom:8px;font-size:10px">Schema: <?=implode(', ',$_cp_cols)?></p>
<table><tr><?php foreach(array_slice($_cp_cols,0,8) as $col):?><th><?=$col?></th><?php endforeach;?></tr>
<?php foreach(array_slice($_cp,0,20) as $r):?><tr><?php foreach(array_slice($_cp_cols,0,8) as $col):?><td><?=htmlspecialchars(substr($r[$col]??'',0,40))?></td><?php endforeach;?></tr><?php endforeach;?></table>
</div></div>
<div class="sec" id="s-sp"><div class="cd"><h3 style="margin-bottom:10px;color:var(--cy)">Subject Line Performance — <?=number_format($_sp_count)?> records</h3>
<p style="color:var(--d);margin-bottom:8px;font-size:10px">Schema: <?=implode(', ',$_sp_cols)?></p>
<table><tr><?php foreach(array_slice($_sp_cols,0,8) as $col):?><th><?=$col?></th><?php endforeach;?></tr>
<?php foreach(array_slice($_sp,0,20) as $r):?><tr><?php foreach(array_slice($_sp_cols,0,8) as $col):?><td class="subj"><?=htmlspecialchars(substr($r[$col]??'',0,50))?></td><?php endforeach;?></tr><?php endforeach;?></table>
</div></div>
<div class="sec" id="s-bp"><div class="cd"><h3 style="margin-bottom:10px;color:var(--pk)">Brain Creative Performance — <?=count($_bcp)?> records</h3>
<?php if(!empty($_bcp)):$bk=array_keys($_bcp[0]);?>
<table><tr><?php foreach(array_slice($bk,0,8) as $col):?><th><?=$col?></th><?php endforeach;?></tr>
<?php foreach(array_slice($_bcp,0,20) as $r):?><tr><?php foreach(array_slice($bk,0,8) as $col):?><td><?=htmlspecialchars(substr($r[$col]??'',0,40))?></td><?php endforeach;?></tr><?php endforeach;?></table>
<?php else:?><p style="color:var(--d);text-align:center;padding:20px">No brain creative performance data yet</p><?php endif;?>
</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>