feat: BI estrategico — cohort retention, revenue expansion, cross-sell, maturity + receita em USD
- Cohort retention heatmap com matriz de retencao por mes de aquisicao - Revenue expansion/contraction waterfall (new/expansion/stable/contraction/churned) - Cross-sell analysis (CambioPay only vs CambioCheckout only vs Both) - Client maturity segmentation (new/growing/mature/declining) - Nova query fetchBIStrategic + endpoint /admin/api/bi/strategic - Todas receitas de spread convertidas de BRL para USD em todas as queries - Labels e formatacao atualizados para USD em admin-bi e admin-cliente Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
14
server.js
14
server.js
@@ -11,7 +11,7 @@ const express = require('express');
|
||||
const session = require('express-session');
|
||||
const path = require('path');
|
||||
const { authenticate, requireAuth, requireRole, createAgente, createUser } = require('./src/auth');
|
||||
const { fetchTransacoes, fetchAllTransacoes, serialize, fetchDailyStats, fetchKPIs, fetchTrend30Days, fetchTopAgentes, fetchTrendByPeriod, fetchKPIsByPeriod, fetchBIData, fetchRevenueAnalytics, fetchClientList, fetchClientProfile, fetchClientData } = require('./src/queries');
|
||||
const { fetchTransacoes, fetchAllTransacoes, serialize, fetchDailyStats, fetchKPIs, fetchTrend30Days, fetchTopAgentes, fetchTrendByPeriod, fetchKPIsByPeriod, fetchBIData, fetchRevenueAnalytics, fetchBIStrategic, fetchClientList, fetchClientProfile, fetchClientData } = require('./src/queries');
|
||||
const { buildHTML } = require('./src/dashboard');
|
||||
const { buildAdminHTML } = require('./src/admin-panel');
|
||||
const { buildAdminHomeHTML } = require('./src/admin-home');
|
||||
@@ -370,6 +370,18 @@ app.get('/admin/api/bi/revenue', requireRole('admin'), async (req, res) => {
|
||||
}
|
||||
});
|
||||
|
||||
app.get('/admin/api/bi/strategic', requireRole('admin'), async (req, res) => {
|
||||
try {
|
||||
const { start, end } = req.query;
|
||||
if (!start || !end) return res.status(400).json({ error: 'start and end required' });
|
||||
const data = await fetchBIStrategic(start, end);
|
||||
res.json(data);
|
||||
} catch (err) {
|
||||
console.error('Strategic BI API error:', err);
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
});
|
||||
|
||||
// --- Admin Cliente Dashboard (admin only) ---
|
||||
app.get('/admin/cliente', requireRole('admin'), (req, res) => {
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user