364 lines
20 KiB
TypeScript
364 lines
20 KiB
TypeScript
// ─── Business Analytics — Types, Labels, Mock Data ───────────────────────────
|
|
|
|
export type AnalyticsTimePoint = { m: string; v: number; display: string }
|
|
export type AnalyticsDomainId = 'production' | 'claims' | 'pipeline' | 'service'
|
|
export type AnalyticsChartType = 'line' | 'bar' | 'area'
|
|
|
|
export interface AnalyticsMetric {
|
|
id: string
|
|
domain: AnalyticsDomainId
|
|
label: string
|
|
unit: string
|
|
data12m: AnalyticsTimePoint[]
|
|
change: string
|
|
changeTone: 'positive' | 'negative' | 'neutral'
|
|
defaultChartType: AnalyticsChartType
|
|
}
|
|
|
|
export interface AnalyticsKpiSummary {
|
|
id: string
|
|
label: string
|
|
value: string
|
|
change: string
|
|
changeTone: 'positive' | 'negative' | 'neutral'
|
|
hint: string
|
|
sparkline: number[]
|
|
}
|
|
|
|
// ─── Domain Labels ───────────────────────────────────────────────────────────
|
|
|
|
export const ANALYTICS_DOMAIN_LABELS: Record<AnalyticsDomainId, string> = {
|
|
production: 'Producción',
|
|
claims: 'Siniestros',
|
|
pipeline: 'Pipeline',
|
|
service: 'Servicio',
|
|
}
|
|
|
|
// ─── Headline KPI Summaries ──────────────────────────────────────────────────
|
|
|
|
export const ANALYTICS_KPI_SUMMARIES: AnalyticsKpiSummary[] = [
|
|
{ id: 'gwp', label: 'GWP Written', value: '$5.41M', change: '+6.2%', changeTone: 'positive', hint: 'Gross written premium YTD', sparkline: [72, 68, 76, 74, 81, 88, 85, 90, 87, 92, 95, 98] },
|
|
{ id: 'policies', label: 'Active Policies', value: '342', change: '+12', changeTone: 'positive', hint: 'Currently active policies', sparkline: [290, 295, 298, 305, 310, 315, 318, 322, 328, 332, 338, 342] },
|
|
{ id: 'loss-ratio', label: 'Loss Ratio', value: '58%', change: '-3.1%', changeTone: 'positive', hint: 'Claims paid / earned premium', sparkline: [68, 72, 65, 63, 60, 58, 61, 59, 57, 60, 58, 58] },
|
|
{ id: 'retention', label: 'Retention Rate', value: '91%', change: '+1.2%', changeTone: 'positive', hint: 'Client renewal rate', sparkline: [86, 87, 88, 87, 89, 90, 89, 90, 91, 90, 91, 91] },
|
|
{ id: 'open-claims', label: 'Open Claims', value: '7', change: '-2', changeTone: 'positive', hint: 'Currently unresolved claims', sparkline: [12, 11, 10, 9, 11, 10, 8, 9, 8, 7, 8, 7] },
|
|
{ id: 'pipeline-value', label: 'Pipeline Value', value: '$6.2M', change: '+$820K', changeTone: 'positive', hint: 'Open quoted premium', sparkline: [42, 45, 48, 50, 52, 55, 53, 56, 58, 60, 62, 65] },
|
|
]
|
|
|
|
// ─── Metrics: Production & Revenue ───────────────────────────────────────────
|
|
|
|
const productionMetrics: AnalyticsMetric[] = [
|
|
{
|
|
id: 'gwp', domain: 'production', label: 'GWP Written', unit: '$',
|
|
change: '+6.2%', changeTone: 'positive', defaultChartType: 'area',
|
|
data12m: [
|
|
{ m: 'May', v: 62, display: '$3.82M' }, { m: 'Jun', v: 65, display: '$4.01M' },
|
|
{ m: 'Jul', v: 60, display: '$3.70M' }, { m: 'Aug', v: 68, display: '$4.19M' },
|
|
{ m: 'Sep', v: 71, display: '$4.38M' }, { m: 'Oct', v: 72, display: '$4.52M' },
|
|
{ m: 'Nov', v: 68, display: '$4.28M' }, { m: 'Dec', v: 76, display: '$4.71M' },
|
|
{ m: 'Jan', v: 74, display: '$4.61M' }, { m: 'Feb', v: 81, display: '$4.98M' },
|
|
{ m: 'Mar', v: 88, display: '$5.41M' }, { m: 'Apr', v: 91, display: '$5.58M' },
|
|
],
|
|
},
|
|
{
|
|
id: 'premium-by-lob', domain: 'production', label: 'Premium by LOB', unit: '$',
|
|
change: '+4.8%', changeTone: 'positive', defaultChartType: 'bar',
|
|
data12m: [
|
|
{ m: 'Auto', v: 85, display: '$1.82M' }, { m: 'Health', v: 72, display: '$1.54M' },
|
|
{ m: 'Life', v: 48, display: '$1.03M' }, { m: 'Property', v: 35, display: '$750K' },
|
|
{ m: 'Marine', v: 18, display: '$386K' }, { m: 'Liability', v: 12, display: '$257K' },
|
|
{ m: 'Surety', v: 8, display: '$171K' }, { m: 'Travel', v: 5, display: '$107K' },
|
|
{ m: 'Other', v: 3, display: '$64K' }, { m: '', v: 0, display: '' },
|
|
{ m: '', v: 0, display: '' }, { m: '', v: 0, display: '' },
|
|
],
|
|
},
|
|
{
|
|
id: 'new-biz-vs-renewal', domain: 'production', label: 'New Biz vs Renewal', unit: '$',
|
|
change: '+$820K', changeTone: 'positive', defaultChartType: 'bar',
|
|
data12m: [
|
|
{ m: 'May', v: 45, display: '$1.8M' }, { m: 'Jun', v: 48, display: '$1.9M' },
|
|
{ m: 'Jul', v: 42, display: '$1.7M' }, { m: 'Aug', v: 52, display: '$2.1M' },
|
|
{ m: 'Sep', v: 55, display: '$2.2M' }, { m: 'Oct', v: 52, display: '$2.4M' },
|
|
{ m: 'Nov', v: 48, display: '$2.2M' }, { m: 'Dec', v: 62, display: '$2.9M' },
|
|
{ m: 'Jan', v: 58, display: '$2.7M' }, { m: 'Feb', v: 64, display: '$3.0M' },
|
|
{ m: 'Mar', v: 70, display: '$3.2M' }, { m: 'Apr', v: 73, display: '$3.4M' },
|
|
],
|
|
},
|
|
{
|
|
id: 'commission-revenue', domain: 'production', label: 'Commission Revenue', unit: '$',
|
|
change: '+8.4%', changeTone: 'positive', defaultChartType: 'area',
|
|
data12m: [
|
|
{ m: 'May', v: 48, display: '$590K' }, { m: 'Jun', v: 50, display: '$615K' },
|
|
{ m: 'Jul', v: 46, display: '$565K' }, { m: 'Aug', v: 53, display: '$652K' },
|
|
{ m: 'Sep', v: 55, display: '$680K' }, { m: 'Oct', v: 55, display: '$680K' },
|
|
{ m: 'Nov', v: 52, display: '$640K' }, { m: 'Dec', v: 60, display: '$740K' },
|
|
{ m: 'Jan', v: 58, display: '$715K' }, { m: 'Feb', v: 65, display: '$800K' },
|
|
{ m: 'Mar', v: 72, display: '$886K' }, { m: 'Apr', v: 75, display: '$923K' },
|
|
],
|
|
},
|
|
{
|
|
id: 'policies-bound', domain: 'production', label: 'Policies Bound', unit: '#',
|
|
change: '+12', changeTone: 'positive', defaultChartType: 'bar',
|
|
data12m: [
|
|
{ m: 'May', v: 28, display: '28' }, { m: 'Jun', v: 30, display: '30' },
|
|
{ m: 'Jul', v: 25, display: '25' }, { m: 'Aug', v: 33, display: '33' },
|
|
{ m: 'Sep', v: 35, display: '35' }, { m: 'Oct', v: 32, display: '32' },
|
|
{ m: 'Nov', v: 28, display: '28' }, { m: 'Dec', v: 35, display: '35' },
|
|
{ m: 'Jan', v: 38, display: '38' }, { m: 'Feb', v: 36, display: '36' },
|
|
{ m: 'Mar', v: 42, display: '42' }, { m: 'Apr', v: 44, display: '44' },
|
|
],
|
|
},
|
|
{
|
|
id: 'avg-premium', domain: 'production', label: 'Avg Premium', unit: '$',
|
|
change: '+2.1%', changeTone: 'positive', defaultChartType: 'line',
|
|
data12m: [
|
|
{ m: 'May', v: 52, display: '$12.4K' }, { m: 'Jun', v: 53, display: '$12.6K' },
|
|
{ m: 'Jul', v: 51, display: '$12.1K' }, { m: 'Aug', v: 54, display: '$12.8K' },
|
|
{ m: 'Sep', v: 55, display: '$13.1K' }, { m: 'Oct', v: 56, display: '$13.3K' },
|
|
{ m: 'Nov', v: 55, display: '$13.1K' }, { m: 'Dec', v: 57, display: '$13.6K' },
|
|
{ m: 'Jan', v: 56, display: '$13.3K' }, { m: 'Feb', v: 58, display: '$13.8K' },
|
|
{ m: 'Mar', v: 59, display: '$14.0K' }, { m: 'Apr', v: 60, display: '$14.3K' },
|
|
],
|
|
},
|
|
]
|
|
|
|
// ─── Metrics: Claims & Loss ──────────────────────────────────────────────────
|
|
|
|
const claimsMetrics: AnalyticsMetric[] = [
|
|
{
|
|
id: 'claims-count', domain: 'claims', label: 'Claims Opened', unit: '#',
|
|
change: '-2', changeTone: 'positive', defaultChartType: 'bar',
|
|
data12m: [
|
|
{ m: 'May', v: 8, display: '8' }, { m: 'Jun', v: 6, display: '6' },
|
|
{ m: 'Jul', v: 10, display: '10' }, { m: 'Aug', v: 7, display: '7' },
|
|
{ m: 'Sep', v: 9, display: '9' }, { m: 'Oct', v: 8, display: '8' },
|
|
{ m: 'Nov', v: 6, display: '6' }, { m: 'Dec', v: 5, display: '5' },
|
|
{ m: 'Jan', v: 7, display: '7' }, { m: 'Feb', v: 8, display: '8' },
|
|
{ m: 'Mar', v: 6, display: '6' }, { m: 'Apr', v: 5, display: '5' },
|
|
],
|
|
},
|
|
{
|
|
id: 'loss-ratio', domain: 'claims', label: 'Loss Ratio', unit: '%',
|
|
change: '-3.1%', changeTone: 'positive', defaultChartType: 'line',
|
|
data12m: [
|
|
{ m: 'May', v: 66, display: '66%' }, { m: 'Jun', v: 64, display: '64%' },
|
|
{ m: 'Jul', v: 70, display: '70%' }, { m: 'Aug', v: 67, display: '67%' },
|
|
{ m: 'Sep', v: 65, display: '65%' }, { m: 'Oct', v: 68, display: '68%' },
|
|
{ m: 'Nov', v: 72, display: '72%' }, { m: 'Dec', v: 65, display: '65%' },
|
|
{ m: 'Jan', v: 63, display: '63%' }, { m: 'Feb', v: 60, display: '60%' },
|
|
{ m: 'Mar', v: 58, display: '58%' }, { m: 'Apr', v: 57, display: '57%' },
|
|
],
|
|
},
|
|
{
|
|
id: 'avg-resolution-days', domain: 'claims', label: 'Avg Resolution', unit: 'days',
|
|
change: '-4d', changeTone: 'positive', defaultChartType: 'line',
|
|
data12m: [
|
|
{ m: 'May', v: 38, display: '38d' }, { m: 'Jun', v: 35, display: '35d' },
|
|
{ m: 'Jul', v: 40, display: '40d' }, { m: 'Aug', v: 36, display: '36d' },
|
|
{ m: 'Sep', v: 34, display: '34d' }, { m: 'Oct', v: 32, display: '32d' },
|
|
{ m: 'Nov', v: 30, display: '30d' }, { m: 'Dec', v: 28, display: '28d' },
|
|
{ m: 'Jan', v: 31, display: '31d' }, { m: 'Feb', v: 29, display: '29d' },
|
|
{ m: 'Mar', v: 27, display: '27d' }, { m: 'Apr', v: 26, display: '26d' },
|
|
],
|
|
},
|
|
{
|
|
id: 'reserve-trend', domain: 'claims', label: 'Reserve Trend', unit: '$',
|
|
change: '-$45K', changeTone: 'positive', defaultChartType: 'area',
|
|
data12m: [
|
|
{ m: 'May', v: 75, display: '$380K' }, { m: 'Jun', v: 70, display: '$355K' },
|
|
{ m: 'Jul', v: 80, display: '$405K' }, { m: 'Aug', v: 72, display: '$365K' },
|
|
{ m: 'Sep', v: 68, display: '$345K' }, { m: 'Oct', v: 65, display: '$330K' },
|
|
{ m: 'Nov', v: 60, display: '$304K' }, { m: 'Dec', v: 58, display: '$294K' },
|
|
{ m: 'Jan', v: 62, display: '$314K' }, { m: 'Feb', v: 57, display: '$289K' },
|
|
{ m: 'Mar', v: 55, display: '$279K' }, { m: 'Apr', v: 52, display: '$264K' },
|
|
],
|
|
},
|
|
{
|
|
id: 'claims-by-status', domain: 'claims', label: 'Claims by Status', unit: '#',
|
|
change: '', changeTone: 'neutral', defaultChartType: 'bar',
|
|
data12m: [
|
|
{ m: 'Open', v: 3, display: '3' }, { m: 'Review', v: 3, display: '3' },
|
|
{ m: 'Docs', v: 1, display: '1' }, { m: 'Approved', v: 2, display: '2' },
|
|
{ m: 'Denied', v: 0, display: '0' }, { m: 'Closed', v: 1, display: '1' },
|
|
{ m: '', v: 0, display: '' }, { m: '', v: 0, display: '' },
|
|
{ m: '', v: 0, display: '' }, { m: '', v: 0, display: '' },
|
|
{ m: '', v: 0, display: '' }, { m: '', v: 0, display: '' },
|
|
],
|
|
},
|
|
{
|
|
id: 'severity-trend', domain: 'claims', label: 'Avg Severity', unit: '$',
|
|
change: '-$2.1K', changeTone: 'positive', defaultChartType: 'line',
|
|
data12m: [
|
|
{ m: 'May', v: 65, display: '$18.5K' }, { m: 'Jun', v: 60, display: '$17.1K' },
|
|
{ m: 'Jul', v: 72, display: '$20.5K' }, { m: 'Aug', v: 63, display: '$17.9K' },
|
|
{ m: 'Sep', v: 58, display: '$16.5K' }, { m: 'Oct', v: 55, display: '$15.7K' },
|
|
{ m: 'Nov', v: 52, display: '$14.8K' }, { m: 'Dec', v: 50, display: '$14.2K' },
|
|
{ m: 'Jan', v: 54, display: '$15.4K' }, { m: 'Feb', v: 48, display: '$13.7K' },
|
|
{ m: 'Mar', v: 46, display: '$13.1K' }, { m: 'Apr', v: 44, display: '$12.5K' },
|
|
],
|
|
},
|
|
]
|
|
|
|
// ─── Metrics: Sales Pipeline ─────────────────────────────────────────────────
|
|
|
|
const pipelineMetrics: AnalyticsMetric[] = [
|
|
{
|
|
id: 'conversion-rate', domain: 'pipeline', label: 'Conversion Rate', unit: '%',
|
|
change: '+2.8%', changeTone: 'positive', defaultChartType: 'line',
|
|
data12m: [
|
|
{ m: 'May', v: 28, display: '28%' }, { m: 'Jun', v: 30, display: '30%' },
|
|
{ m: 'Jul', v: 27, display: '27%' }, { m: 'Aug', v: 32, display: '32%' },
|
|
{ m: 'Sep', v: 31, display: '31%' }, { m: 'Oct', v: 33, display: '33%' },
|
|
{ m: 'Nov', v: 30, display: '30%' }, { m: 'Dec', v: 35, display: '35%' },
|
|
{ m: 'Jan', v: 34, display: '34%' }, { m: 'Feb', v: 36, display: '36%' },
|
|
{ m: 'Mar', v: 38, display: '38%' }, { m: 'Apr', v: 39, display: '39%' },
|
|
],
|
|
},
|
|
{
|
|
id: 'pipeline-value', domain: 'pipeline', label: 'Pipeline Value', unit: '$',
|
|
change: '+$820K', changeTone: 'positive', defaultChartType: 'area',
|
|
data12m: [
|
|
{ m: 'May', v: 42, display: '$3.8M' }, { m: 'Jun', v: 45, display: '$4.1M' },
|
|
{ m: 'Jul', v: 40, display: '$3.6M' }, { m: 'Aug', v: 48, display: '$4.4M' },
|
|
{ m: 'Sep', v: 52, display: '$4.7M' }, { m: 'Oct', v: 55, display: '$5.0M' },
|
|
{ m: 'Nov', v: 50, display: '$4.5M' }, { m: 'Dec', v: 58, display: '$5.3M' },
|
|
{ m: 'Jan', v: 56, display: '$5.1M' }, { m: 'Feb', v: 60, display: '$5.5M' },
|
|
{ m: 'Mar', v: 65, display: '$5.9M' }, { m: 'Apr', v: 68, display: '$6.2M' },
|
|
],
|
|
},
|
|
{
|
|
id: 'lead-sources', domain: 'pipeline', label: 'Lead Sources', unit: '#',
|
|
change: '+18%', changeTone: 'positive', defaultChartType: 'bar',
|
|
data12m: [
|
|
{ m: 'Referral', v: 85, display: '85' }, { m: 'Walk-in', v: 42, display: '42' },
|
|
{ m: 'WhatsApp', v: 38, display: '38' }, { m: 'Google', v: 28, display: '28' },
|
|
{ m: 'Instagram', v: 22, display: '22' }, { m: 'Facebook', v: 15, display: '15' },
|
|
{ m: 'Partner', v: 12, display: '12' }, { m: 'Event', v: 8, display: '8' },
|
|
{ m: 'Other', v: 6, display: '6' }, { m: '', v: 0, display: '' },
|
|
{ m: '', v: 0, display: '' }, { m: '', v: 0, display: '' },
|
|
],
|
|
},
|
|
{
|
|
id: 'quote-to-bind-days', domain: 'pipeline', label: 'Quote-to-Bind', unit: 'days',
|
|
change: '-2d', changeTone: 'positive', defaultChartType: 'line',
|
|
data12m: [
|
|
{ m: 'May', v: 18, display: '18d' }, { m: 'Jun', v: 16, display: '16d' },
|
|
{ m: 'Jul', v: 20, display: '20d' }, { m: 'Aug', v: 15, display: '15d' },
|
|
{ m: 'Sep', v: 14, display: '14d' }, { m: 'Oct', v: 13, display: '13d' },
|
|
{ m: 'Nov', v: 15, display: '15d' }, { m: 'Dec', v: 12, display: '12d' },
|
|
{ m: 'Jan', v: 14, display: '14d' }, { m: 'Feb', v: 11, display: '11d' },
|
|
{ m: 'Mar', v: 10, display: '10d' }, { m: 'Apr', v: 9, display: '9d' },
|
|
],
|
|
},
|
|
{
|
|
id: 'agent-performance', domain: 'pipeline', label: 'Agent Performance', unit: '#',
|
|
change: '', changeTone: 'neutral', defaultChartType: 'bar',
|
|
data12m: [
|
|
{ m: 'Ana R.', v: 88, display: '44 pólizas' }, { m: 'Marco V.', v: 72, display: '36 pólizas' },
|
|
{ m: 'Carlos V.', v: 64, display: '32 pólizas' }, { m: 'María F.', v: 56, display: '28 pólizas' },
|
|
{ m: 'Luis G.', v: 40, display: '20 pólizas' }, { m: '', v: 0, display: '' },
|
|
{ m: '', v: 0, display: '' }, { m: '', v: 0, display: '' },
|
|
{ m: '', v: 0, display: '' }, { m: '', v: 0, display: '' },
|
|
{ m: '', v: 0, display: '' }, { m: '', v: 0, display: '' },
|
|
],
|
|
},
|
|
{
|
|
id: 'win-rate', domain: 'pipeline', label: 'Win Rate', unit: '%',
|
|
change: '+3.5%', changeTone: 'positive', defaultChartType: 'line',
|
|
data12m: [
|
|
{ m: 'May', v: 35, display: '35%' }, { m: 'Jun', v: 38, display: '38%' },
|
|
{ m: 'Jul', v: 33, display: '33%' }, { m: 'Aug', v: 40, display: '40%' },
|
|
{ m: 'Sep', v: 42, display: '42%' }, { m: 'Oct', v: 41, display: '41%' },
|
|
{ m: 'Nov', v: 39, display: '39%' }, { m: 'Dec', v: 44, display: '44%' },
|
|
{ m: 'Jan', v: 43, display: '43%' }, { m: 'Feb', v: 46, display: '46%' },
|
|
{ m: 'Mar', v: 48, display: '48%' }, { m: 'Apr', v: 50, display: '50%' },
|
|
],
|
|
},
|
|
]
|
|
|
|
// ─── Metrics: Customer & Service ─────────────────────────────────────────────
|
|
|
|
const serviceMetrics: AnalyticsMetric[] = [
|
|
{
|
|
id: 'support-volume', domain: 'service', label: 'Tickets Opened', unit: '#',
|
|
change: '+15%', changeTone: 'negative', defaultChartType: 'bar',
|
|
data12m: [
|
|
{ m: 'May', v: 22, display: '22' }, { m: 'Jun', v: 25, display: '25' },
|
|
{ m: 'Jul', v: 28, display: '28' }, { m: 'Aug', v: 24, display: '24' },
|
|
{ m: 'Sep', v: 30, display: '30' }, { m: 'Oct', v: 27, display: '27' },
|
|
{ m: 'Nov', v: 32, display: '32' }, { m: 'Dec', v: 20, display: '20' },
|
|
{ m: 'Jan', v: 26, display: '26' }, { m: 'Feb', v: 29, display: '29' },
|
|
{ m: 'Mar', v: 34, display: '34' }, { m: 'Apr', v: 36, display: '36' },
|
|
],
|
|
},
|
|
{
|
|
id: 'sla-compliance', domain: 'service', label: 'SLA Compliance', unit: '%',
|
|
change: '+4%', changeTone: 'positive', defaultChartType: 'line',
|
|
data12m: [
|
|
{ m: 'May', v: 78, display: '78%' }, { m: 'Jun', v: 80, display: '80%' },
|
|
{ m: 'Jul', v: 76, display: '76%' }, { m: 'Aug', v: 82, display: '82%' },
|
|
{ m: 'Sep', v: 84, display: '84%' }, { m: 'Oct', v: 83, display: '83%' },
|
|
{ m: 'Nov', v: 85, display: '85%' }, { m: 'Dec', v: 88, display: '88%' },
|
|
{ m: 'Jan', v: 86, display: '86%' }, { m: 'Feb', v: 89, display: '89%' },
|
|
{ m: 'Mar', v: 90, display: '90%' }, { m: 'Apr', v: 92, display: '92%' },
|
|
],
|
|
},
|
|
{
|
|
id: 'avg-response-time', domain: 'service', label: 'Avg Response Time', unit: 'hrs',
|
|
change: '-1.2h', changeTone: 'positive', defaultChartType: 'line',
|
|
data12m: [
|
|
{ m: 'May', v: 72, display: '5.8h' }, { m: 'Jun', v: 68, display: '5.4h' },
|
|
{ m: 'Jul', v: 75, display: '6.0h' }, { m: 'Aug', v: 65, display: '5.2h' },
|
|
{ m: 'Sep', v: 60, display: '4.8h' }, { m: 'Oct', v: 55, display: '4.4h' },
|
|
{ m: 'Nov', v: 52, display: '4.2h' }, { m: 'Dec', v: 48, display: '3.8h' },
|
|
{ m: 'Jan', v: 50, display: '4.0h' }, { m: 'Feb', v: 45, display: '3.6h' },
|
|
{ m: 'Mar', v: 42, display: '3.4h' }, { m: 'Apr', v: 40, display: '3.2h' },
|
|
],
|
|
},
|
|
{
|
|
id: 'retention-rate', domain: 'service', label: 'Retention Rate', unit: '%',
|
|
change: '+1.2%', changeTone: 'positive', defaultChartType: 'area',
|
|
data12m: [
|
|
{ m: 'May', v: 84, display: '84%' }, { m: 'Jun', v: 85, display: '85%' },
|
|
{ m: 'Jul', v: 86, display: '86%' }, { m: 'Aug', v: 87, display: '87%' },
|
|
{ m: 'Sep', v: 88, display: '88%' }, { m: 'Oct', v: 88, display: '88%' },
|
|
{ m: 'Nov', v: 87, display: '87%' }, { m: 'Dec', v: 89, display: '89%' },
|
|
{ m: 'Jan', v: 90, display: '90%' }, { m: 'Feb', v: 90, display: '90%' },
|
|
{ m: 'Mar', v: 91, display: '91%' }, { m: 'Apr', v: 91, display: '91%' },
|
|
],
|
|
},
|
|
{
|
|
id: 'nps-score', domain: 'service', label: 'NPS Score', unit: '#',
|
|
change: '+5', changeTone: 'positive', defaultChartType: 'line',
|
|
data12m: [
|
|
{ m: 'May', v: 42, display: '42' }, { m: 'Jun', v: 44, display: '44' },
|
|
{ m: 'Jul', v: 40, display: '40' }, { m: 'Aug', v: 46, display: '46' },
|
|
{ m: 'Sep', v: 48, display: '48' }, { m: 'Oct', v: 50, display: '50' },
|
|
{ m: 'Nov', v: 48, display: '48' }, { m: 'Dec', v: 52, display: '52' },
|
|
{ m: 'Jan', v: 54, display: '54' }, { m: 'Feb', v: 55, display: '55' },
|
|
{ m: 'Mar', v: 58, display: '58' }, { m: 'Apr', v: 60, display: '60' },
|
|
],
|
|
},
|
|
{
|
|
id: 'ticket-resolution-days', domain: 'service', label: 'Ticket Resolution', unit: 'days',
|
|
change: '-0.8d', changeTone: 'positive', defaultChartType: 'line',
|
|
data12m: [
|
|
{ m: 'May', v: 55, display: '4.4d' }, { m: 'Jun', v: 52, display: '4.2d' },
|
|
{ m: 'Jul', v: 58, display: '4.6d' }, { m: 'Aug', v: 50, display: '4.0d' },
|
|
{ m: 'Sep', v: 48, display: '3.8d' }, { m: 'Oct', v: 45, display: '3.6d' },
|
|
{ m: 'Nov', v: 42, display: '3.4d' }, { m: 'Dec', v: 40, display: '3.2d' },
|
|
{ m: 'Jan', v: 43, display: '3.4d' }, { m: 'Feb', v: 38, display: '3.0d' },
|
|
{ m: 'Mar', v: 36, display: '2.9d' }, { m: 'Apr', v: 34, display: '2.7d' },
|
|
],
|
|
},
|
|
]
|
|
|
|
// ─── Combined Export ─────────────────────────────────────────────────────────
|
|
|
|
export const ANALYTICS_METRICS: AnalyticsMetric[] = [
|
|
...productionMetrics,
|
|
...claimsMetrics,
|
|
...pipelineMetrics,
|
|
...serviceMetrics,
|
|
]
|