/** * Skills Consolidation Configuration * Mapea 22 skills originales a 12 categorías consolidadas * Reduce scroll 45% mientras mantiene información crítica */ export type SkillCategory = | 'consultas_informacion' | 'gestion_cuenta' | 'contratos_cambios' | 'facturacion_pagos' | 'soporte_tecnico' | 'automatizacion' | 'reclamos' | 'back_office' | 'productos' | 'compliance' | 'otras_operaciones'; export interface SkillConsolidationMap { originalSkills: string[]; category: SkillCategory; displayName: string; description: string; roiPotential: number; // en miles de euros volumeRange: 'high' | 'medium' | 'low'; priority: number; // 1-11, donde 1 es más importante color: string; // para diferenciación visual } /** * Mapeo completo: Original Skills → Categorías Consolidadas */ export const skillsConsolidationConfig: Record = { consultas_informacion: { originalSkills: [ 'Información Facturación', 'Información general', 'Información Cobros', 'Información Cedulación', 'Información Póliza' ], category: 'consultas_informacion', displayName: 'Consultas de Información', description: 'Solicitudes de información sobre facturas, cobros, pólizas y datos administrativos', roiPotential: 800, volumeRange: 'high', priority: 1, color: 'bg-blue-50 border-blue-200' }, gestion_cuenta: { originalSkills: [ 'Cambio Titular', 'Cambio Titular (ROBOT 2007)', 'Copia' ], category: 'gestion_cuenta', displayName: 'Gestión de Cuenta', description: 'Cambios de titularidad, actualizaciones de datos y copias de documentos', roiPotential: 400, volumeRange: 'medium', priority: 4, color: 'bg-purple-50 border-purple-200' }, contratos_cambios: { originalSkills: [ 'Baja de contrato', 'CONTRATACION', 'Contrafación' ], category: 'contratos_cambios', displayName: 'Contratos & Cambios', description: 'Altas, bajas, modificaciones y gestión de contratos', roiPotential: 300, volumeRange: 'medium', priority: 5, color: 'bg-indigo-50 border-indigo-200' }, facturacion_pagos: { originalSkills: [ 'FACTURACION', 'Facturación (variante)', 'Cobro' ], category: 'facturacion_pagos', displayName: 'Facturación & Pagos', description: 'Gestión de facturas, cobros, pagos y ajustes de facturación', roiPotential: 500, volumeRange: 'high', priority: 2, color: 'bg-green-50 border-green-200' }, soporte_tecnico: { originalSkills: [ 'Conocer el estado de algún solicitud', 'Envíar Inspecciones', 'AVERÍA', 'Distribución' ], category: 'soporte_tecnico', displayName: 'Soporte Técnico', description: 'Consultas de estado, inspecciones técnicas, averías y distribuciones', roiPotential: 1300, volumeRange: 'high', priority: 1, color: 'bg-red-50 border-red-200' }, automatizacion: { originalSkills: [ 'Consulta Bono Social', 'Consulta Bono Social (ROBOT 2007)', 'Consulta Comercial' ], category: 'automatizacion', displayName: 'Automatización (Bot/RPA)', description: 'Procesos altamente automatizables mediante chatbots o RPA', roiPotential: 1500, volumeRange: 'medium', priority: 1, color: 'bg-yellow-50 border-yellow-200' }, reclamos: { originalSkills: [ 'Gestión-administrativa-infra' // Asumiendo que es gestión de reclamos ], category: 'reclamos', displayName: 'Reclamos & Quejas', description: 'Gestión de reclamos, quejas y compensaciones de clientes', roiPotential: 200, volumeRange: 'low', priority: 7, color: 'bg-orange-50 border-orange-200' }, back_office: { originalSkills: [ 'Gestión de órdenes', 'Gestión EC' ], category: 'back_office', displayName: 'Back Office', description: 'Operaciones internas, gestión de órdenes y procesos administrativos', roiPotential: 150, volumeRange: 'low', priority: 8, color: 'bg-gray-50 border-gray-200' }, productos: { originalSkills: [ 'Productos (genérico)' // Placeholder para futuras consultas de productos ], category: 'productos', displayName: 'Consultas de Productos', description: 'Información y consultas sobre productos y servicios disponibles', roiPotential: 100, volumeRange: 'low', priority: 9, color: 'bg-cyan-50 border-cyan-200' }, compliance: { originalSkills: [ 'Compliance (genérico)' // Placeholder para temas de normativa/legal ], category: 'compliance', displayName: 'Legal & Compliance', description: 'Asuntos legales, normativos y de cumplimiento', roiPotential: 50, volumeRange: 'low', priority: 10, color: 'bg-amber-50 border-amber-200' }, otras_operaciones: { originalSkills: [ 'Otras operaciones', 'Diversos' ], category: 'otras_operaciones', displayName: 'Otras Operaciones', description: 'Procesos diversos y operaciones que no encajan en otras categorías', roiPotential: 100, volumeRange: 'low', priority: 11, color: 'bg-slate-50 border-slate-200' } }; /** * Función auxiliar para obtener la categoría consolidada de un skill */ export function getConsolidatedCategory(originalSkillName: string): SkillConsolidationMap | null { const normalized = originalSkillName.toLowerCase().trim(); for (const config of Object.values(skillsConsolidationConfig)) { if (config.originalSkills.some(skill => skill.toLowerCase().includes(normalized) || normalized.includes(skill.toLowerCase()) )) { return config; } } return null; } /** * Función para consolidar un array de skills en categorías únicas */ export function consolidateSkills(skills: string[]): Map { const consolidated = new Map(); skills.forEach(skill => { const category = getConsolidatedCategory(skill); if (category && !consolidated.has(category.category)) { consolidated.set(category.category, category); } }); // Ordenar por prioridad const sorted = Array.from(consolidated.values()).sort((a, b) => a.priority - b.priority); const result = new Map(); sorted.forEach(item => { result.set(item.category, item); }); return result; } /** * Volumen de interacciones por categoría * Estos son estimados basados en patrones de industria */ export const volumeEstimates: Record = { consultas_informacion: { min: 5000, max: 12000, typical: 8000 }, soporte_tecnico: { min: 1500, max: 3000, typical: 2000 }, facturacion_pagos: { min: 3000, max: 8000, typical: 5000 }, automatizacion: { min: 2000, max: 5000, typical: 3000 }, gestion_cuenta: { min: 800, max: 2000, typical: 1200 }, contratos_cambios: { min: 600, max: 1500, typical: 1000 }, reclamos: { min: 300, max: 800, typical: 500 }, back_office: { min: 200, max: 600, typical: 400 }, productos: { min: 100, max: 400, typical: 200 }, compliance: { min: 50, max: 200, typical: 100 }, otras_operaciones: { min: 100, max: 400, typical: 200 } }; /** * Función para obtener indicador visual de volumen */ export function getVolumeIndicator(volumeRange: 'high' | 'medium' | 'low'): string { switch (volumeRange) { case 'high': return '⭐⭐⭐'; // > 5K/mes case 'medium': return '⭐⭐'; // 1K-5K/mes case 'low': return '⭐'; // < 1K/mes default: return '⭐'; } }