Etapa completada (local) — widgets de Mirada Empresa
This commit is contained in:
@@ -4,18 +4,25 @@ import { queryToFilters, filtersToRpc } from '@/lib/dashboard-utils'
|
||||
|
||||
// Route Handler server-side: llama a las RPC con el cliente Supabase.
|
||||
// El service_role nunca llega al browser — vive solo en este servidor.
|
||||
// Las RPC son SECURITY DEFINER → aplican k-anonimato y excluyen 3.4/7.1 internamente.
|
||||
|
||||
// Las RPC son SECURITY DEFINER → aplican k-anonimato y excluyen datos
|
||||
// sensibles internamente.
|
||||
//
|
||||
// Las 9 RPCs v2 (rpc_dashboard_kpis, etc.) se retiraron de este mapa junto
|
||||
// con sus widgets — referencian códigos de pregunta que no existen en v3
|
||||
// (Etapa 4H, migración de códigos, queda pendiente aparte). Mirada Empresa
|
||||
// usa las rpc_me_* nuevas, ya verificadas contra datos reales.
|
||||
const RPC_MAP: Record<string, string> = {
|
||||
kpis: 'rpc_dashboard_kpis',
|
||||
prevalencia: 'rpc_prevalencia_por_depto',
|
||||
heatmap: 'rpc_heatmap_intensidad',
|
||||
distribucion: 'rpc_perfil_poblacion',
|
||||
apoyos: 'rpc_apoyos_demandados',
|
||||
score: 'rpc_score_organizacional',
|
||||
piramide: 'rpc_piramide_demografica',
|
||||
intensidad: 'rpc_intensidad_vs_bienestar',
|
||||
saturacion: 'rpc_saturacion_cuidador',
|
||||
'me-prevalencia': 'rpc_me_prevalencia_cuidadores',
|
||||
'me-riesgo-rotacion': 'rpc_me_riesgo_rotacion',
|
||||
'me-ausentismo': 'rpc_me_ausentismo',
|
||||
'me-presentismo': 'rpc_me_presentismo',
|
||||
'me-punto-ciego': 'rpc_me_punto_ciego',
|
||||
'me-apoyos': 'rpc_me_apoyos_demandados',
|
||||
'me-talento-riesgo': 'rpc_me_talento_en_riesgo',
|
||||
'me-carrera-congelada': 'rpc_me_carrera_congelada',
|
||||
'me-intensidad-carga': 'rpc_me_intensidad_carga',
|
||||
'me-segmentacion': 'rpc_me_segmentacion',
|
||||
'me-disposicion-red': 'rpc_me_disposicion_red',
|
||||
}
|
||||
|
||||
function getSupabaseServer() {
|
||||
@@ -45,10 +52,18 @@ export async function GET(
|
||||
const filters = queryToFilters(sp)
|
||||
const supabase = getSupabaseServer()
|
||||
|
||||
const { data, error } = await supabase.rpc(rpcName, {
|
||||
const rpcParams: Record<string, unknown> = {
|
||||
p_survey_id: surveyId,
|
||||
p_filters: filtersToRpc(filters),
|
||||
})
|
||||
p_filters: filtersToRpc(filters),
|
||||
}
|
||||
|
||||
// Único caso con parámetro extra: el umbral parametrizable de la estrella.
|
||||
if (widget === 'me-talento-riesgo') {
|
||||
const umbral = sp.get('umbral')
|
||||
if (umbral) rpcParams.p_umbral_senales = parseInt(umbral, 10)
|
||||
}
|
||||
|
||||
const { data, error } = await supabase.rpc(rpcName, rpcParams)
|
||||
|
||||
if (error) {
|
||||
console.error(`[dashboard/${widget}] RPC error:`, error.message)
|
||||
|
||||
Reference in New Issue
Block a user