Commit Graph

205 Commits

Author SHA1 Message Date
f83a19c4c0 Fix: usar variables NUXT_ para runtime config de Metabase
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 10s
2025-10-27 15:33:01 -06:00
79189d25d0 Fix: agregar METABASE_API_KEY faltante a .env.example
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 10s
2025-10-27 15:30:41 -06:00
1a0533f398 Trigger redeploy con nueva METABASE_URL configurada en Gitea Variables
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 10s
2025-10-27 15:26:41 -06:00
ed2c2ec1eb Fix: usar URL interna de Docker para Metabase (http://metabase:3000)
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 11s
El contenedor estaba intentando conectarse a la URL pública de Metabase
(https://metabase.nucleoriofrio.com) en lugar de usar la red interna
de Docker (http://metabase:3000), causando errores 401 Unauthorized.

Esto permite que el contenedor de Nuxt se comunique directamente con
el contenedor de Metabase a través de la red Docker sin pasar por
Traefik/Authentik.
2025-10-27 15:23:18 -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
9234c5832c Mejorar botón Inicio con icono de perfil y estilo mejorado
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 48s
- Agregar icono de la app perfil al botón Inicio
- Implementar sistema de fallback para iconos (local → remoto → favicon)
- Aplicar gradientes y estilos inspirados en la app perfil
- Agregar transiciones suaves y efectos hover mejorados
2025-10-18 02:06:06 -06:00
f4d4f643a8 Agregar apple-touch-icon.png estándar para iOS/Safari
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 48s
2025-10-17 05:35:36 -06:00
0930aaa699 Actualizar botón sidebar: Mi Perfil → Inicio
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 48s
Cambios en AppSidebar.vue:
- Cambiar link de /profile a https://inicio.nucleoriofrio.com
- Actualizar texto de 'Mi Perfil' a 'Inicio'
- Cambiar icono de user a home
- Actualizar colores de azul a verde

El botón ahora navega a la PWA de inicio usando scope extensions.
2025-10-17 04:08:21 -06:00
62ecab25f5 Agregar mejoras PWA y unificar workflow a 1 job
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 4m32s
- Agregar id único (/?app=analitica), launch_handler, handle_links y url_handlers
- Unificar workflow de 2 jobs (build + deploy) a 1 solo job
- Workaround para bug de Gitea que solo ejecuta el primer job
2025-10-17 03:32:13 -06:00
f00fa92616 Implementar link handling y asociación con PWA hub
Some checks failed
build-and-deploy / build (push) Failing after 3s
build-and-deploy / deploy (push) Has been cancelled
- Agregar capture_links en manifest para mejorar experiencia PWA
- Crear archivo .well-known para asociación con inicio.nucleoriofrio.com
- Actualizar Traefik para servir recursos PWA y .well-known sin autenticación
2025-10-17 02:15:20 -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
49352de748 fix: resolver conflicto aria-hidden con foco en botón móvil del sidebar
All checks were successful
build-and-deploy / build (push) Successful in 42s
build-and-deploy / deploy (push) Successful in 3s
- Mover foco al sidebar cuando se abre en móvil
- Mover foco al panel principal cuando sidebar se cierra
- Evita warning de accesibilidad: aria-hidden con elemento enfocado
2025-10-14 04:17:24 -06:00
2f6331e809 fix: corregir formato de columnas UTable para compatibilidad con Nuxt UI v4
Some checks failed
build-and-deploy / deploy (push) Has been cancelled
build-and-deploy / build (push) Has been cancelled
- Cambiar estructura de columnas de {key, label} a {accessorKey, header, id}
- Cambiar prop :rows a :data en componente UTable
- Actualizar referencias en selector de columnas
2025-10-14 04:16:55 -06:00
3c795404cf fix: usar rows en lugar de data y key en lugar de accessorKey para UTable
All checks were successful
build-and-deploy / build (push) Successful in 42s
build-and-deploy / deploy (push) Successful in 3s
2025-10-14 04:11:51 -06:00
9af3f51760 fix: corregir estructura de columnas para UTable usando accessorKey en lugar de key
All checks were successful
build-and-deploy / build (push) Successful in 42s
build-and-deploy / deploy (push) Successful in 3s
2025-10-14 04:10:11 -06:00
4303365020 debug: agregar logs para diagnosticar problema de renderizado de tabla en explorer
All checks were successful
build-and-deploy / build (push) Successful in 46s
build-and-deploy / deploy (push) Successful in 3s
2025-10-14 04:08:25 -06:00
602bdc4558 fix: configurar rutas públicas en Traefik para assets de Nuxt
All checks were successful
build-and-deploy / build (push) Successful in 9s
build-and-deploy / deploy (push) Successful in 4s
- Exponer solo /_nuxt/* sin autenticación (necesario para funcionamiento)
- Mantener autenticación Authentik en todas las demás rutas
- Priorizar seguridad: /api/*, manifest y favicon protegidos
2025-10-14 04:04:30 -06:00
a6764ec7a9 fix: agregar paginación y límite configurable en explorer
All checks were successful
build-and-deploy / build (push) Successful in 44s
build-and-deploy / deploy (push) Successful in 3s
- Agregar selector de límite de registros (10 a 10,000)
- Implementar paginación client-side con UPagination
- Mostrar información detallada de registros cargados y filtrados
- Usar límite seleccionado en lugar de hardcoded 1000
- Resetear página al cambiar búsqueda o cargar datos
- Indicar cuando hay más datos disponibles (limitado)
- Mejorar UX con paginación de 50 filas por página por defecto
2025-10-14 04:01:15 -06:00
f1506918fd fix: agregar layout 'informe' a página metabase-debug
All checks were successful
build-and-deploy / build (push) Successful in 43s
build-and-deploy / deploy (push) Successful in 3s
- Agregar definePageMeta con layout 'informe'
- Mostrar sidebar y navegación correctamente
- Mejorar consistencia con otras páginas del dashboard
2025-10-14 03:56:08 -06:00
45ff3777a7 feat: agregar formulario configurable de parámetros en queries
All checks were successful
build-and-deploy / build (push) Successful in 42s
build-and-deploy / deploy (push) Successful in 3s
- Agregar sección expandible para configurar parámetros antes de ejecutar
- Inputs dinámicos según tipo: toggle para boolean, date picker para fechas, text para otros
- Inicialización automática con valores por defecto de template-tags
- Botón para restablecer parámetros a valores originales
- Usar valores del formulario al ejecutar queries
- Mejorar UX con labels legibles y estilos consistentes
2025-10-14 03:51:00 -06:00
9d5e2dbfe2 fix: usar valores por defecto de template-tags al ejecutar queries
All checks were successful
build-and-deploy / build (push) Successful in 43s
build-and-deploy / deploy (push) Successful in 3s
- Extraer valores por defecto de template-tags de la card
- Construir parámetros dinámicamente basados en la configuración
- Soportar tipos: date, boolean, text
- Resolver error de parámetros faltantes en queries con fechas
2025-10-14 03:47:37 -06:00
c69c3bdafc feat: mejorar visualización de resultados de queries en Metabase Debug
All checks were successful
build-and-deploy / build (push) Successful in 43s
build-and-deploy / deploy (push) Successful in 3s
- Agregar tabla estructurada para mostrar resultados de queries
- Agregar botón de copiar JSON profesional con feedback visual
- Agregar formato automático de números y fechas según tipo de columna
- Mantener vista JSON colapsable para ver datos completos
- Mejorar UX con tabla responsive y estilos consistentes
2025-10-14 03:42:52 -06:00
02d17b816b fix: agregar parámetros por defecto y estado vacío amigable
All checks were successful
build-and-deploy / build (push) Successful in 43s
build-and-deploy / deploy (push) Successful in 3s
Soluciona dos problemas en la ejecución de queries de Metabase:

1. Error de parámetros faltantes:
   - Las queries requieren parámetros (incluir_anulados, fecha_desde, fecha_hasta)
   - Agregado valores por defecto a todas las llamadas POST:
     * incluir_anulados: false
     * fecha_desde: null (sin filtro)
     * fecha_hasta: null (sin filtro)

2. Estado vacío poco amigable:
   - Cuando rows y cols están vacíos mostraba solo JSON
   - Agregado EmptyState visual con:
     * Icono de tabla vacía
     * Mensaje "No hay datos"
     * Descripción explicativa

Cambios en:
- MetabaseCardDisplay.vue: executeQuery() con parámetros y EmptyState
- MetabaseCardsTable.vue: executeCard() con parámetros y EmptyState en modal
2025-10-14 03:10:53 -06:00
bc10cd8e50 fix: agregar propiedad slot a tabs para renderizar contenido
All checks were successful
build-and-deploy / build (push) Successful in 45s
build-and-deploy / deploy (push) Successful in 4s
El contenido de los tabs no se mostraba porque faltaba la propiedad
'slot' en cada item del array tabs. Nuxt UI UTabs requiere esta
propiedad para vincular los slots nombrados con sus respectivos tabs.

Cambios:
- Agregar propiedad 'slot' a cada item en el array tabs
- Ahora los slots nombrados (#table, #cards, #panorama, #detail) se
  vinculan correctamente con sus tabs correspondientes
2025-10-14 02:47:54 -06:00
c035c8a78f fix: corregir renderizado de tabs en metabase-debug
All checks were successful
build-and-deploy / build (push) Successful in 43s
build-and-deploy / deploy (push) Successful in 3s
Corrección del bug visual donde todos los tabs se mostraban simultáneamente.
El problema era el uso incorrecto del slot #default en UTabs que causaba
que todos los contenidos se renderizaran a la vez, creando elementos duplicados.

Cambios:
- Cambiar de #default a slots nombrados específicos (#table, #cards, #panorama, #detail)
- Ahora solo se muestra el contenido del tab activo
- Elimina la duplicación de elementos
- Mejora la legibilidad y organización visual
2025-10-14 02:35:48 -06:00
585d31a374 fix: mejorar visualización responsive en móvil para metabase-debug
All checks were successful
build-and-deploy / build (push) Successful in 42s
build-and-deploy / deploy (push) Successful in 3s
Ajustes realizados:

Components:
- MetabaseCardDisplay: grid responsive, queries con wrap, botones apilables
- MetabaseCardsTable: filtros verticales en móvil, acciones con wrap

Page:
- Header responsive con elementos apilados
- Stats en grid 2x2 para móvil, 4 columnas en desktop
- Tamaños de fuente adaptados con breakpoints

Todas las queries SQL y JSON ahora usan whitespace-pre-wrap y break-words
para aprovechar el espacio vertical en lugar de scroll horizontal.
2025-10-14 02:21:51 -06:00
214d9a17d5 feat: agregar link a Metabase Debug en sidebar
All checks were successful
build-and-deploy / build (push) Successful in 41s
build-and-deploy / deploy (push) Successful in 3s
Agrega nuevo item de navegación en la sidebar para acceder
a la página de debugging de Metabase.
2025-10-14 02:14:41 -06:00
56835d9b5d fix: corregir colores de UAlert y UBadge en metabase-debug
All checks were successful
build-and-deploy / build (push) Successful in 43s
build-and-deploy / deploy (push) Successful in 3s
- Cambiar 'red' a 'error'
- Cambiar 'blue' a 'info'
- Cambiar 'yellow' a 'warning'
- Cambiar 'text-blue-600' a 'text-primary'
2025-10-14 02:09:20 -06:00
a774d21cae feat: agregar configuración de Metabase
All checks were successful
build-and-deploy / build (push) Successful in 8s
build-and-deploy / deploy (push) Successful in 3s
- Agregar variables de entorno de Metabase en docker-compose.yml
- Agregar variables de Metabase en workflow de Gitea Actions
- Configurar METABASE_URL, METABASE_API_KEY, METABASE_EMAIL y METABASE_PASSWORD
2025-10-14 01:59:46 -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
d0b0dc3c56 feat: add URL query params support to explorer page
All checks were successful
build-and-deploy / build (push) Successful in 43s
build-and-deploy / deploy (push) Successful in 3s
- Add support for 'db' and 'table' query parameters
- Automatically preselect database and table from URL
- Auto-load data when both params are provided
- Update URL when user changes selection manually
- Example: /explorer?db=facturador+supabase&table=Ingresos
2025-10-13 19:52:00 -06:00
775ad6d32d fix: use items prop instead of options for USelectMenu
All checks were successful
build-and-deploy / build (push) Successful in 44s
build-and-deploy / deploy (push) Successful in 4s
- Change :options to :items according to Nuxt UI documentation
- USelectMenu requires items prop for data binding
- Fixes dropdown rendering issue
2025-10-13 19:21:55 -06:00
c997780187 fix: simplify SelectMenu to use string values instead of objects
All checks were successful
build-and-deploy / build (push) Successful in 43s
build-and-deploy / deploy (push) Successful in 3s
- Change from object binding to string-based selection
- Add computed properties to transform data to string arrays
- Add reverse lookup to get IDs from selected strings
- Improves compatibility with USelectMenu component
- Fixes dropdown not showing options correctly
2025-10-13 19:00:27 -06:00
3dd24e33c9 refactor: improve SelectMenu implementation with object binding
All checks were successful
build-and-deploy / build (push) Successful in 44s
build-and-deploy / deploy (push) Successful in 4s
- Change from ID-based selection to full object binding
- Add custom label templates to display proper text
- Simplify computed properties and watchers
- Improve user experience with proper label display
2025-10-13 18:46:52 -06:00
ce69a62336 fix: replace USelect with USelectMenu for better compatibility
All checks were successful
build-and-deploy / build (push) Successful in 44s
build-and-deploy / deploy (push) Successful in 3s
- Change from USelect to USelectMenu for database and table selection
- Add value-attribute and option-attribute props for proper rendering
- Improves dropdown functionality and user experience
2025-10-13 18:41:16 -06:00
87dec62ee1 feat: remove maintenance badge from data explorer in sidebar
All checks were successful
build-and-deploy / build (push) Successful in 42s
build-and-deploy / deploy (push) Successful in 3s
2025-10-13 18:35:07 -06:00
3bf7760a67 feat: implement data explorer with Metabase integration
All checks were successful
build-and-deploy / build (push) Successful in 42s
build-and-deploy / deploy (push) Successful in 3s
- Replace maintenance mode with functional data explorer
- Connect to Metabase API for database and table listing
- Implement raw data viewer with search and column filtering
- Add support for querying tables directly from Metabase
- Limit queries to 1000 records by default for performance
2025-10-13 18:33:40 -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
42c1e20ee3 fix: use Docker container name for Metabase internal communication
All checks were successful
build-and-deploy / build (push) Successful in 44s
build-and-deploy / deploy (push) Successful in 4s
Change Metabase URL from public domain to Docker container name
for proper internal network communication between containers.

Changes:
- Update default METABASE_URL to http://metabase:3000
- Docker DNS resolution works correctly with container names
- Maintains public domain fallback via environment variables

This fixes authentication issues when containers communicate
within the same Docker network.
2025-10-13 17:52:52 -06:00
244b1ae7fb fix: move Metabase credentials to runtime config
All checks were successful
build-and-deploy / build (push) Successful in 43s
build-and-deploy / deploy (push) Successful in 4s
Move hardcoded Metabase credentials to Nuxt runtime config to
allow configuration via environment variables and follow security
best practices.

Changes:
- Update server/utils/metabase.ts to use useRuntimeConfig()
- Add metabase config to nuxt.config.ts runtimeConfig
- Update .env.example with Metabase configuration template

Environment variables:
- METABASE_URL (default: https://metabase.nucleoriofrio.com)
- METABASE_EMAIL (required for authentication)
- METABASE_PASSWORD (required for authentication)
2025-10-13 17:50:21 -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
f4047e1505 fix: remove tableStores plugin that depended on deleted stores
All checks were successful
build-and-deploy / build (push) Successful in 45s
build-and-deploy / deploy (push) Successful in 3s
The tableStores.client.ts plugin was importing from the deleted
stores directory, causing build failures. This plugin initialized
Pinia stores for table data caching which is no longer needed.
2025-10-13 16:03:18 -06:00
b7a76911f9 refactor: remove Pinia state management and IndexedDB storage
Some checks failed
build-and-deploy / build (push) Failing after 3m3s
build-and-deploy / deploy (push) Has been skipped
Remove all client-side state management and data caching as the
application no longer needs to manage data analysis features.

Changes:
- Remove Pinia store system (app/stores/ directory)
  - metadata.ts: Store for table metadata
  - tableDataFactory.ts: Factory for creating table data stores
  - README.md: Comprehensive store documentation
- Remove IndexedDB storage utility (app/utils/storage.ts)
- Remove Pinia dependencies from package.json
  - @pinia/nuxt
  - pinia
- Remove Pinia module from nuxt.config.ts
- Remove vendor-pinia chunk configuration
- Remove server services (server/services/ directory)
  - table-service.ts: Supabase-dependent table operations
  - query-parser.ts: Query parsing utilities
  - query-runner.ts: Query execution utilities

The application now operates as a stateless authentication portal
without client-side data caching or state management.
2025-10-13 15:34:46 -06:00
226d807d76 docs: add restoration guide for data analysis features
All checks were successful
build-and-deploy / build (push) Successful in 7s
build-and-deploy / deploy (push) Successful in 2s
Add comprehensive documentation for restoring data analysis pages
that were put in maintenance mode during database migration.

Includes:
- Commit reference (608b4db) with original logic
- Commands to restore each file from git history
- Step-by-step restoration process
- Notes about Supabase to new data source migration
- File-by-file breakdown of removed functionality
2025-10-13 14:24:01 -06:00