fix: Corregir cálculo de transfer_rate en métricas
- transfer_rate ahora muestra el % real de transferencias - FCR = 100 - transfer_rate (resolución en primer contacto) - Antes ambos mostraban el mismo valor (FCR) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -617,7 +617,7 @@ const generateHeatmapData = (
|
|||||||
aht: isNaN(aht_mean) ? 0 : Math.max(0, Math.min(100, Math.round(100 - ((aht_mean - 240) / 310) * 100))),
|
aht: isNaN(aht_mean) ? 0 : Math.max(0, Math.min(100, Math.round(100 - ((aht_mean - 240) / 310) * 100))),
|
||||||
csat: isNaN(avgCsat) ? 0 : Math.max(0, Math.min(100, Math.round(avgCsat))),
|
csat: isNaN(avgCsat) ? 0 : Math.max(0, Math.min(100, Math.round(avgCsat))),
|
||||||
hold_time: isNaN(avg_hold_time) ? 0 : Math.max(0, Math.min(100, Math.round(100 - (avg_hold_time / 120) * 100))),
|
hold_time: isNaN(avg_hold_time) ? 0 : Math.max(0, Math.min(100, Math.round(100 - (avg_hold_time / 120) * 100))),
|
||||||
transfer_rate: isNaN(transfer_rate) ? 0 : Math.max(0, Math.min(100, Math.round(100 - (transfer_rate * 100))))
|
transfer_rate: isNaN(transfer_rate) ? 0 : Math.max(0, Math.min(100, Math.round(transfer_rate * 100)))
|
||||||
},
|
},
|
||||||
annual_cost,
|
annual_cost,
|
||||||
variability: {
|
variability: {
|
||||||
|
|||||||
@@ -1008,11 +1008,12 @@ export function buildHeatmapFromBackend(
|
|||||||
)
|
)
|
||||||
: 0;
|
: 0;
|
||||||
|
|
||||||
|
// Transfer rate es el % real de transferencias (NO el complemento)
|
||||||
const transferMetric = Math.max(
|
const transferMetric = Math.max(
|
||||||
0,
|
0,
|
||||||
Math.min(
|
Math.min(
|
||||||
100,
|
100,
|
||||||
Math.round(100 - transfer_rate)
|
Math.round(transfer_rate)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -224,11 +224,13 @@ function generateHeatmapFromMetrics(
|
|||||||
: 'medium' as CustomerSegment;
|
: 'medium' as CustomerSegment;
|
||||||
|
|
||||||
// Scores de performance (normalizados 0-100)
|
// Scores de performance (normalizados 0-100)
|
||||||
|
// FCR = 100 - transfer_rate (si no hay transferencia, hay resolución en primer contacto)
|
||||||
const fcr_score = Math.round(100 - m.transfer_rate);
|
const fcr_score = Math.round(100 - m.transfer_rate);
|
||||||
const aht_score = Math.round(Math.max(0, Math.min(100, 100 - ((m.aht_mean - 240) / 310) * 100)));
|
const aht_score = Math.round(Math.max(0, Math.min(100, 100 - ((m.aht_mean - 240) / 310) * 100)));
|
||||||
const csat_score = avgCsat;
|
const csat_score = avgCsat;
|
||||||
const hold_time_score = Math.round(Math.max(0, Math.min(100, 100 - (m.hold_time_mean / 60) * 10)));
|
const hold_time_score = Math.round(Math.max(0, Math.min(100, 100 - (m.hold_time_mean / 60) * 10)));
|
||||||
const transfer_rate_score = Math.round(100 - m.transfer_rate);
|
// Transfer rate es el % real de transferencias (NO el complemento)
|
||||||
|
const actual_transfer_rate = Math.round(m.transfer_rate);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
skill: m.skill,
|
skill: m.skill,
|
||||||
@@ -239,7 +241,7 @@ function generateHeatmapFromMetrics(
|
|||||||
aht: aht_score,
|
aht: aht_score,
|
||||||
csat: csat_score,
|
csat: csat_score,
|
||||||
hold_time: hold_time_score,
|
hold_time: hold_time_score,
|
||||||
transfer_rate: transfer_rate_score
|
transfer_rate: actual_transfer_rate
|
||||||
},
|
},
|
||||||
automation_readiness: Math.round(agentic_readiness * 10),
|
automation_readiness: Math.round(agentic_readiness * 10),
|
||||||
variability: {
|
variability: {
|
||||||
|
|||||||
Reference in New Issue
Block a user