diff --git a/services/arbiter-3.0/src/views/admin/financials/index.ejs b/services/arbiter-3.0/src/views/admin/financials/index.ejs index 98ebd51..c0cbe8e 100644 --- a/services/arbiter-3.0/src/views/admin/financials/index.ejs +++ b/services/arbiter-3.0/src/views/admin/financials/index.ejs @@ -1,13 +1,151 @@ -<%- include('../../layout', { - body: ` -
-
-

Revenue Analytics

-

Real-time MRR and subscriber intelligence

+<% +// Build the body content as a string variable +let bodyContent = ` +
+
+

💰 Revenue Analytics

+

Real-time MRR and subscriber intelligence

+
+
+ + +
+ +
+
Active Subscribers
+
${metrics.activeSubs}
+
+ + +
+
Monthly Revenue
+
$${metrics.recognizedMrr.toFixed(2)}
+
+ + +
+
Annual Run Rate
+
$${metrics.arr}
+
+ + +
+
At Risk
+
${metrics.atRiskSubs}
+
$${metrics.atRiskMrr.toFixed(2)} MRR
+
+ + +
+
Lifetime Revenue
+
$${metrics.lifetimeRevenue.toFixed(2)}
+
${metrics.lifetimeSubs} Sovereign
+
+
+`; + +// Fire vs Frost Path Comparison +bodyContent += ` +
+ +
+
+ 🔥 +
+

Fire Path

+

PvP • Competition • Glory

+
+
+
+
+ Subscribers: + ${paths.fire.subs} +
+
+ Monthly Revenue: + $${paths.fire.mrr.toFixed(2)} +
-
-

Financials module placeholder - data integration pending

+ + +
+
+ ❄️ +
+

Frost Path

+

Building • Creativity • Chill

+
+
+
+
+ Subscribers: + ${paths.frost.subs} +
+
+ Monthly Revenue: + $${paths.frost.mrr.toFixed(2)} +
+
- ` -}) %> +
+`; + +// Tier Breakdown Table +bodyContent += ` +
+
+

Tier Performance

+

Subscriber distribution and revenue by tier

+
+
+ + + + + + + + + + + +`; + +// Loop through tiers and add rows +Object.keys(tierBreakdown).sort((a, b) => parseInt(b) - parseInt(a)).forEach(tierLevel => { + const tier = tierBreakdown[tierLevel]; + const pathColor = tier.path === 'fire' ? 'text-orange-600 dark:text-orange-400' : + tier.path === 'frost' ? 'text-cyan-600 dark:text-cyan-400' : + 'text-purple-600 dark:text-purple-400'; + + bodyContent += ` + + + + + + + + `; +}); + +bodyContent += ` + +
TierPathActiveAt RiskMRR
+
${tier.name}
+
+ ${tier.path.charAt(0).toUpperCase() + tier.path.slice(1)} + + ${tier.activeCount} + + ${tier.graceCount} + + $${tier.totalMrr.toFixed(2)} +
+
+
+`; +%> + +<%- include('../../layout', { body: bodyContent }) %>