0]; $arb = pg_fetch_assoc(pg_query($db, "SELECT COUNT(*) as total, COUNT(*) FILTER(WHERE decision_type='kill') as kills, COUNT(*) FILTER(WHERE decision_type='boost') as boosts FROM ads_arbitrage_log")); $spent = (float)($ads['spent'] ?? 0); $rev = (float)($ads['revenue'] ?? 0); echo json_encode(['status'=>'success','channels'=>[ 'youtube'=>['videos'=>$yt['videos'],'published'=>$yt['published'],'views'=>$yt['views']], 'ads'=>['campaigns'=>$ads['campaigns'],'spent'=>$spent,'revenue'=>$rev,'conversions'=>$ads['conversions'],'roas'=>$spent>0?round($rev/$spent,2):0], 'email'=>['sent_today'=>$email['sent_today']], 'arbitrage'=>['decisions'=>$arb['total'],'kills'=>$arb['kills'],'boosts'=>$arb['boosts']] ],'totals'=>['spent'=>$spent,'revenue'=>$rev,'roas'=>$spent>0?round($rev/$spent,2):0]]); break; case 'daily_snapshot': $today = date('Y-m-d'); $yt = pg_fetch_assoc(pg_query($db, "SELECT COUNT(*) as v FROM yt_jobs WHERE created_at::date='$today'")); $ads = pg_fetch_assoc(pg_query($db, "SELECT COALESCE(SUM(budget_spent),0) as s, COALESCE(SUM(revenue_generated),0) as r, COALESCE(SUM(conversions),0) as c FROM xc_campaigns")); $em = pg_fetch_assoc(pg_query($db, "SELECT COUNT(*) as s FROM unified_send_log WHERE created_at::date='$today'")); pg_query($db, "INSERT INTO xc_performance_daily(date,yt_videos_published,email_sent,ads_spent,ads_revenue,ads_conversions,total_spent,total_revenue,overall_roas,calculated_at) VALUES('$today',{$yt['v']},{$em['s']},{$ads['s']},{$ads['r']},{$ads['c']},{$ads['s']},{$ads['r']},CASE WHEN {$ads['s']}>0 THEN round({$ads['r']}::numeric/{$ads['s']},2) ELSE 0 END,NOW()) ON CONFLICT(date) DO UPDATE SET yt_videos_published=EXCLUDED.yt_videos_published,email_sent=EXCLUDED.email_sent,ads_spent=EXCLUDED.ads_spent,ads_revenue=EXCLUDED.ads_revenue,calculated_at=NOW()"); echo json_encode(['status'=>'saved','date'=>$today]); break; case 'history': $days=(int)($_GET['days']??30); $p=pg_fetch_all(pg_query($db,"SELECT * FROM xc_performance_daily ORDER BY date DESC LIMIT $days")); echo json_encode(['status'=>'success','data'=>$p?:[]]); break; } ?>