From 0063d299c9a6cd8222fcd329f13723f04f80fbde Mon Sep 17 00:00:00 2001 From: sujucu70 Date: Fri, 23 Jan 2026 11:03:50 +0100 Subject: [PATCH] fix: Consistent KPI calculations across tabs - DimensionAnalysisTab now uses h.metrics.transfer_rate instead of h.variability?.transfer_rate for consistency with ExecutiveSummaryTab and Law10Tab - Both fields should have the same value, but using metrics.transfer_rate ensures consistency across all tabs Co-Authored-By: Claude Opus 4.5 --- frontend/components/tabs/DimensionAnalysisTab.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/components/tabs/DimensionAnalysisTab.tsx b/frontend/components/tabs/DimensionAnalysisTab.tsx index 58c76b3..6fa2c5a 100644 --- a/frontend/components/tabs/DimensionAnalysisTab.tsx +++ b/frontend/components/tabs/DimensionAnalysisTab.tsx @@ -78,7 +78,7 @@ function generateCausalAnalysis( ? heatmapData.reduce((sum, h) => sum + (h.variability?.cv_aht || 0) * h.volume, 0) / totalVolume : 0; const avgTransferRate = totalVolume > 0 - ? heatmapData.reduce((sum, h) => sum + (h.variability?.transfer_rate || 0) * h.volume, 0) / totalVolume + ? heatmapData.reduce((sum, h) => sum + h.metrics.transfer_rate * h.volume, 0) / totalVolume : 0; // Usar FCR Técnico (100 - transfer_rate) en lugar de FCR Real (con filtro recontacto 7d) // FCR Técnico es más comparable con benchmarks de industria @@ -99,7 +99,7 @@ function generateCausalAnalysis( const skillsHighCV = heatmapData.filter(h => (h.variability?.cv_aht || 0) > 100); // Usar FCR Técnico para identificar skills con bajo FCR const skillsLowFCR = heatmapData.filter(h => (h.metrics.fcr_tecnico ?? (100 - h.metrics.transfer_rate)) < 50); - const skillsHighTransfer = heatmapData.filter(h => (h.variability?.transfer_rate || 0) > 20); + const skillsHighTransfer = heatmapData.filter(h => h.metrics.transfer_rate > 20); // Parsear P50 AHT del KPI del header para consistencia visual // El KPI puede ser "345s (P50)" o similar