Commit Graph

22 Commits

Author SHA1 Message Date
b235593f80 Fix: Solo enviar par\u00e1metros con valores a Metabase para evitar filtros vac\u00edos
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 48s
Problema: Las queries de Metabase en el endpoint /api/metabase/informe
retornaban 0 filas porque se enviaban par\u00e1metros con arrays vac\u00edos,
lo cual activaba filtros condicionales sin valores.

Soluci\u00f3n: Modificar buildParameters() para solo incluir par\u00e1metros
opcionales (cliente_ids, tipos, estados, ubicaciones, calidades) cuando
tengan valores (arrays no vac\u00edos). Los filtros condicionales [[...]]
de Metabase ahora se omiten correctamente cuando no hay valores.
2025-10-30 15:56:55 -06:00
a496029895 Fix: corregir nombres de columnas en opciones-filtros (disponibles/cafe)
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 45s
2025-10-29 19:21:58 -06:00
dfe822319d Fix: corregir parsing de opciones-filtros (soportar strings y arrays)
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 46s
2025-10-29 19:19:47 -06:00
be538eaf29 Debug: agregar logging para opciones-filtros
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 46s
2025-10-29 19:17:07 -06:00
52e6f5cdce Fix: corregir arquitectura - TODO debe pasar por Metabase
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 49s
BREAKING: Violación de arquitectura corregida
- Eliminar endpoint /api/postgres/query (acceso directo a DB prohibido)
- Cambiar /api/clientes para usar query de Metabase en lugar de SQL directo
- Crear endpoint /api/metabase/opciones-filtros para obtener opciones
- Cambiar loadOpcionesFiltros para usar API en lugar de MCP directo
- Usar "Informe Ingresos - Lista de Clientes con Totales" para clientes
- Usar "Informe Ingresos - Opciones de Filtros" para opciones
- Respetar filosofía: Metabase calcula TODO, Vue solo renderiza
- La app NUNCA habla directamente con bases de datos
2025-10-29 18:43:04 -06:00
ce7bec7d4c Fix: corregir tipos de parámetros para queries nativas SQL de Metabase
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 47s
Cambios principales:
- Cambiar tipo de parámetros de fecha de 'date/single' a 'text'
- Cambiar tipo de parámetro booleano de 'category' a 'boolean'
- Cambiar tipo de parámetros de categoría de 'category' a 'text'

Las queries SQL nativas en Metabase usan template-tags con tipos específicos
que deben coincidir exactamente con el tipo definido en el template-tag,
no con los tipos de UI de Metabase.

Archivos modificados:
- server/api/metabase/panorama.post.ts
- server/api/metabase/informe.post.ts

Resuelve el problema donde todas las queries retornaban error 500 y
respuestas vacías debido a tipos de parámetros incompatibles.
2025-10-29 10:32:10 -06:00
b4ec8d5444 Debug: agregar logging extensivo al endpoint de panorama
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 44s
- Agregar logs para verificar que las cards se encuentren correctamente
- Agregar logs detallados de los parámetros enviados a cada query
- Agregar logs de la estructura de respuesta de Metabase
- Agregar logs de la transformación de datos (single row y multiple rows)
- Esto ayudará a diagnosticar por qué las respuestas están vacías
2025-10-29 10:22:51 -06:00
ad1050b256 Fix: convertir parámetros null a string vacío para queries de Metabase
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 55s
- Modificar panorama.post.ts e informe.post.ts para convertir fecha_desde y fecha_hasta null a strings vacíos
- Las queries de Metabase usan NULLIF(?, '') para detectar parámetros vacíos
- Esto permite que las queries usen sus defaults (fecha actual) correctamente
2025-10-29 10:16:04 -06:00
a243710fe8 Actualizar Metabase Debug: usar config centralizado y agregar tab de Informe Ingresos
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 46s
2025-10-27 17:14:37 -06:00
9cadbb0a66 Fix: usar rutas relativas para imports en server/
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 46s
2025-10-27 17:09:56 -06:00
e918b9d4ec Agregar endpoint de Informe de Ingresos y centralizar config de queries de Metabase
Some checks failed
build-and-deploy / build-and-deploy (push) Failing after 35s
2025-10-27 17:08:01 -06:00
694ee4e3bb Refactorizar Panorama Facturador: implementar filosofía "Metabase calcula TODO, Vue solo renderiza"
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 5m41s
Cambios principales:

- Refactorizar todos los componentes de panorama para recibir datos directos de Metabase
  * TotalesMonetarios.vue: cambiar de props.metrics a props.data
  * TotalesIngresoCompra.vue: cambiar de props.metrics a props.data
  * TotalesVerde.vue: cambiar de props.metrics a props.data
  * SecosVendidos.vue: cambiar de props.metrics a props.data

- Eliminar fechas hardcodeadas en panorama.post.ts
  * Pasar valores null directamente a Metabase para usar sus defaults

- Marcar composables obsoletos para Panorama Facturador
  * useIngresosMetrics.ts: agregar advertencia de no uso en Panorama
  * useRechazosMetrics.ts: agregar advertencia de no uso en Panorama

Resultado: Todos los cálculos (agregaciones, promedios ponderados) se hacen en Metabase mediante SQL. Los componentes Vue solo renderizan valores ya calculados.
2025-10-27 15:09:03 -06:00
93668d9b6f feat: panorama facturador completamente funcional
All checks were successful
build-and-deploy / build (push) Successful in 43s
build-and-deploy / deploy (push) Successful in 3s
- Remover badge de mantenimiento del sidebar
- Eliminar endpoints de debug temporales
- Panorama funcionando con todas las secciones:
  * Totales Financieros
  * Café Seco - Inventario y Proyecciones
  * Totales de Ingreso y Compra
  * Totales Monetarios
  * Café Verde
  * Rechazos y Subproductos
- Todas las 9 queries de Metabase ejecutándose correctamente
- Datos reales mostrados en tiempo real
2025-10-14 10:57:26 -06:00
7ba274a291 fix: usar valores por defecto para parametros de fecha cuando son null
All checks were successful
build-and-deploy / build (push) Successful in 46s
build-and-deploy / deploy (push) Successful in 3s
Las queries de Metabase tienen fecha_desde y fecha_hasta como parametros
requeridos con valores por defecto. Cuando se envia null, Metabase rechaza
la query. Ahora usamos los defaults cuando no se especifican fechas.
2025-10-14 10:50:05 -06:00
7c9d129138 debug: agregar endpoint para testear queries individuales
All checks were successful
build-and-deploy / build (push) Successful in 47s
build-and-deploy / deploy (push) Successful in 4s
2025-10-14 10:48:03 -06:00
93fb9002b2 debug: agregar manejo de errores individual para cada query del panorama
All checks were successful
build-and-deploy / build (push) Successful in 43s
build-and-deploy / deploy (push) Successful in 3s
2025-10-14 10:44:46 -06:00
5477f14f31 debug: agregar endpoint temporal para listar queries de metabase
All checks were successful
build-and-deploy / build (push) Successful in 42s
build-and-deploy / deploy (push) Successful in 3s
2025-10-14 10:41:58 -06:00
092c0c88bd debug: agregar logging para panorama endpoint
All checks were successful
build-and-deploy / build (push) Successful in 45s
build-and-deploy / deploy (push) Successful in 3s
2025-10-14 10:39:16 -06:00
f8c53da6fc feat: restaurar panorama facturador con nueva arquitectura basada en Metabase
All checks were successful
build-and-deploy / build (push) Successful in 43s
build-and-deploy / deploy (push) Successful in 4s
- Crear endpoint /api/metabase/panorama.post.ts que ejecuta las 9 queries en paralelo
- Restaurar y adaptar panorama.vue para usar el nuevo endpoint
- Crear componentes auxiliares: SecosVendidos, TotalesIngresoCompra, TotalesMonetarios, TotalesVerde, MetricBox, RechazosRechazoCard
- Adaptar RechazosSubproductos para recibir data directamente de Metabase
- Toda la transformación de datos ocurre en las queries SQL de Metabase
- Sin uso de stores ni composables de métricas
- Agregar documentación de queries en archivos MD
2025-10-14 10:34:27 -06:00
90aebbde3d feat: agregar página de debug para Metabase
All checks were successful
build-and-deploy / build (push) Successful in 41s
build-and-deploy / deploy (push) Successful in 3s
- Crear componente MetabaseCardDisplay para mostrar detalles de queries
- Crear componente MetabaseCardsTable para listar todas las queries
- Crear página /metabase-debug con vistas de tabla, cards y queries Panorama
- Agregar API routes para cards de Metabase (GET, POST, export)
- Actualizar metabase.ts para soportar API Key authentication
- Agregar configuración de Metabase API Key en nuxt.config.ts
- Documentar todos los endpoints disponibles en METABASE_API_ENDPOINTS.md
2025-10-14 01:34:56 -06:00
b10e0990aa fix: extract data array from Metabase response
All checks were successful
build-and-deploy / build (push) Successful in 43s
build-and-deploy / deploy (push) Successful in 3s
Metabase API returns {data: [...], total: number} instead of
a direct array. Update databases endpoint to extract and return
only the data array for easier frontend consumption.

Verified working with:
- facturador supabase (PostgreSQL, ID: 2)
- Sample Database (H2, ID: 1)
2025-10-13 17:55:40 -06:00
4b25a70b8b feat: add Metabase API integration
All checks were successful
build-and-deploy / build (push) Successful in 45s
build-and-deploy / deploy (push) Successful in 3s
Add complete integration with Metabase API to fetch data from
'facturador supabase' database.

Features:
- Server-side Metabase authentication using session tokens
- Utility functions for Metabase API requests with auto-retry
- API endpoints to proxy Metabase requests
  - GET /api/metabase/databases - List all databases
  - GET /api/metabase/tables/:databaseId - Get tables and metadata
  - POST /api/metabase/query - Execute queries against tables
- useMetabase() composable for frontend consumption
  - getDatabases() - Fetch available databases
  - getDatabaseMetadata() - Get tables and fields info
  - queryTable() - Execute queries with filters and limits
  - resultToObjects() - Helper to convert results to objects

Session tokens are cached and auto-refreshed when expired.
This enables the application to display real data from the
facturador database without using embeds or iframes.
2025-10-13 17:46:48 -06:00