Files
analiticaNucleo/nuxt4-app/server/config/metabase-queries.ts
josedario87 98c2f2edac
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m0s
Feat: Implementar página de Informe de Empleados completa
- Crear 5 queries SQL en Metabase para datos de empleados:
  * Contadores generales (horas, días, tareas)
  * Lista de empleados con totales agregados
  * Detalle de tareas realizadas
  * Detalle de asistencias con cálculo de horas
  * Opciones de filtros disponibles

- Implementar backend API endpoint /api/metabase/informe-empleados
  * Soporte para filtros por fecha, empleados, títulos de tareas y planillas
  * Ejecución paralela de queries con manejo de errores
  * Transformación de datos de Metabase a formato consumible

- Crear componente TotalesEmpleados.vue
  * Visualización de métricas principales (horas, días, tareas)
  * Cálculo de promedios por empleado
  * Funcionalidad de copiar texto/JSON

- Implementar página informe-empleados.vue
  * Layout tipo informe con selector de fechas
  * Filtros avanzados por empleado, títulos de tareas y planillas
  * Tabla integrada de empleados con métricas clave
  * Estados de carga, error y bienvenida
  * Detección de cambios pendientes

- Actualizar configuración de queries en metabase-queries.ts

Estructura trabajada:
- clientes (empleado = true)
- asistencias (con cálculo de horas trabajadas)
- tareas_realizadas (con títulos y planillas)
- planillas (con totales y rangos de fechas)
2025-11-13 14:10:05 -06:00

83 lines
3.2 KiB
TypeScript

/**
* Metabase Query Names Configuration
*
* Centraliza los nombres de las queries de Metabase para facilitar mantenimiento.
* Los nombres deben coincidir EXACTAMENTE con los nombres en Metabase.
*/
export const METABASE_QUERIES = {
/**
* Queries para Panorama Facturador
*/
panorama: {
totales_financieros_principales: 'panorama_totales_financieros_principales',
totales_ingreso_compra: 'panorama_totales_ingreso_compra',
totales_monetarios: 'panorama_totales_monetarios',
totales_verde: 'panorama_totales_verde',
secos_vendidos: 'panorama_secos_vendidos',
rechazos_subproductos: 'panorama_rechazos_subproductos',
serie_temporal_diaria: 'panorama_serie_temporal_diaria',
top_clientes: 'panorama_top_clientes',
conteo_registros: 'panorama_conteo_registros'
},
/**
* Queries para Informe de Ingresos
*/
informe: {
totales_ingreso_compra: 'Informe Ingresos - Totales Ingreso y Compra',
totales_monetarios: 'Informe Ingresos - Totales Monetarios',
totales_verde: 'Informe Ingresos - Totales Verde',
lista_ingresos: 'Informe Ingresos - Lista de Ingresos',
lista_clientes: 'Informe Ingresos - Lista de Clientes con Totales',
serie_temporal: 'Informe Ingresos - Serie Temporal Acumulada',
opciones_filtros: 'Informe Ingresos - Opciones de Filtros',
contadores: 'Informe Ingresos - Contadores de Filtros'
},
/**
* Queries para Comparativa de Cosechas
*/
comparativa: {
datos_diarios_completos: 'comparativa_datos_diarios_completos',
totales_por_cosecha: 'comparativa_totales_por_cosecha',
datos_acumulados_por_dia: 'comparativa_datos_acumulados_por_dia',
metadata_cosechas: 'comparativa_metadata_cosechas'
},
/**
* Queries para Informe de Comercios
*/
informe_comercios: {
lista_comercios: 'Informe Comercios - Lista de Comercios',
totales_monetarios: 'Informe Comercios - Totales Monetarios',
totales_peso: 'Informe Comercios - Totales de Peso',
top_comercios: 'Informe Comercios - Top 10 Comercios',
serie_temporal: 'Informe Comercios - Serie Temporal Acumulada',
opciones_filtros: 'Informe Comercios - Opciones de Filtros',
contadores: 'Informe Comercios - Contadores de Filtros',
detalle_ingresos: 'Informe Comercios - Detalle de Ingresos por Comercio'
},
/**
* Queries para Informe de Empleados
*/
informe_empleados: {
contadores: 'Informe Empleados - Contadores',
lista_empleados: 'Informe Empleados - Lista con Totales',
detalle_tareas: 'Informe Empleados - Detalle Tareas',
detalle_asistencias: 'Informe Empleados - Detalle Asistencias',
opciones_filtros: 'Informe Empleados - Opciones Filtros'
}
} as const
/**
* Type helper para acceder a las queries de forma type-safe
*/
export type MetabaseQueryCategory = keyof typeof METABASE_QUERIES
export type PanoramaQueryKey = keyof typeof METABASE_QUERIES.panorama
export type InformeQueryKey = keyof typeof METABASE_QUERIES.informe
export type ComparativaQueryKey = keyof typeof METABASE_QUERIES.comparativa
export type InformeComerciosQueryKey = keyof typeof METABASE_QUERIES.informe_comercios
export type InformeEmpleadosQueryKey = keyof typeof METABASE_QUERIES.informe_empleados