Commit Graph

187 Commits

Author SHA1 Message Date
20f87e37fc Feature: agregar filtros de clientes y ubicaciones en Informe de Ingresos
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 46s
- Crear endpoint /api/clientes para obtener clientes desde Supabase
- Crear endpoint /api/postgres/query para ejecutar queries SQL
- Crear componente ClienteMultiSelector con búsqueda y filtro por ubicación
- Agregar filtros de clientes, ubicaciones y calidades en informe-ingresos.vue
- Cargar opciones de filtros desde Metabase (query ID 53)
- Actualizar detección de cambios pendientes con nuevos filtros
- Enviar cliente_ids, ubicaciones y calidades al endpoint de Metabase
- Componente con formato de cédula y ordenamiento por nombre
- Búsqueda por nombre, cédula o ubicación
- Contador de selección y botón limpiar todo
- Botones rápidos para seleccionar por ubicación
2025-10-29 18:36:14 -06:00
2ba8ff9b7e Fix: aplicar fondo café #1c140c a tabs inactivas en Metabase Debug
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 44s
2025-10-29 18:34:58 -06:00
369085a38a Fix: corregir estructura de :ui para UTabs con colores de marca
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 47s
2025-10-29 18:30:56 -06:00
5aac61d37a Style: aplicar colores café del tema a tabs e input en Metabase Debug
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 46s
- Personalizar UTabs con prop :ui usando colores de marca
- Tab seleccionada: bg-[#c08040] con texto oscuro
- Tabs inactivas: text-[var(--brand-text-muted)] con hover
- Borde inferior: border-[var(--brand-border)]
- Input de búsqueda con bg, text y border del tema
- Focus ring en color café #c08040
2025-10-29 18:23:34 -06:00
180bb661be Revert "Fix: aplicar estilos de marca a tabs y input de búsqueda en Metabase Debug"
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 46s
This reverts commit f8ae9e44e7.
2025-10-29 18:21:33 -06:00
8caf8a5e10 Refactor: reactivar página Informe de Ingresos con arquitectura Metabase
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 47s
- Reescribir informe-ingresos.vue siguiendo patrón de panorama.vue
- Implementar filosofía "Metabase calcula TODO, Vue solo renderiza"
- Agregar filtros avanzados: tipos de café, estados
- Integrar con endpoint /api/metabase/informe existente
- Usar componentes reutilizables: TotalesIngresoCompra, TotalesMonetarios, TotalesVerde
- Implementar detección de cambios pendientes con alertas visuales
- Agregar confirmación para incluir registros anulados
- Eliminar documentación redundante de queries (ya está en Metabase Debug)
- Layout informe con control de visibilidad de secciones
- Placeholders para tablas y gráficas futuras
2025-10-29 18:20:29 -06:00
f8ae9e44e7 Fix: aplicar estilos de marca a tabs y input de búsqueda en Metabase Debug
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 47s
- Envolver tabs en UCard con clase brand-card
- Aplicar estilos de variables CSS al input de búsqueda
- Configurar focus ring con color de marca #c08040
- Usar colores de texto y fondo del tema en input
2025-10-29 18:11:43 -06:00
e85078f6c8 Refactor: unificar estilos de cards de Metabase Debug con Panorama e Informe
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 49s
- Aplicar clase brand-card a todas las cards principales
- Usar colores de variables CSS (--brand-text, --brand-text-muted, --brand-primary)
- Estilizar cards de estadísticas con border-[#3a2a16] y bg-[#1c140c]
- Actualizar estilos de tablas, modales y formularios
- Aplicar estilo consistente a botones principales con color de marca #c08040
2025-10-29 18:06:48 -06:00
e25a0c6b76 Fix: no enviar parámetros opcionales vacíos a Metabase
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 45s
Problema:
- Al enviar parámetros con valores vacíos (""), Metabase los expandía
- Filtros opcionales [[AND ...]] se convertían en filtros obligatorios
- Resultado: queries retornaban 0 registros en lugar de aplicar filtros opcionales

Solución:
- Solo enviar parámetros si son requeridos O tienen valor no vacío
- Verificar que el valor no sea null, "", undefined o array vacío
- Los parámetros opcionales sin valor no se incluyen en el request

Afecta: MetabaseCardDisplay.vue executeQuery() líneas 345-360
2025-10-29 17:46:36 -06:00
20d71ba47a Fix: enviar string vacío en lugar de null para parámetros text/date en Metabase
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 45s
Problema:
- Metabase rechazaba queries cuando se enviaba null para parámetros text/date
- Error: "faltan los parámetros necesarios: fecha_desde, fecha_hasta"
- Los parámetros usados fuera de [[...]] son considerados requeridos

Solución:
- Cambiar || null a || '' para parámetros de tipo text y date
- Ahora envía string vacío que es compatible con NULLIF() en la query SQL

Afecta: MetabaseCardDisplay.vue líneas 333 y 342
2025-10-29 17:42:34 -06:00
76eaa5fd6a Fix: corregir tipos de parámetros en queries de Metabase
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 47s
Problema:
- Las queries de Metabase fallaban con error 500 al ejecutarse desde metabase-debug
- Metabase rechazaba los parámetros porque usaban tipos simples en lugar de tipos con operadores

Solución:
- Actualizar mapeo de tipos de parámetros en MetabaseCardDisplay.vue
- boolean → boolean/=
- date → date/single
- number → number/=
- text → string/=

Esto corrige el error "Tipo de parámetro no válido :text para el parámetro 'cliente_ids'"
2025-10-29 17:30:12 -06:00
2e58a16f4d Refactor: mejorar diseño de página informe-ingresos
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 46s
Cambios realizados:
- Eliminar cards innecesarias que envolvían componentes de métricas
  (TotalesMonetarios, TotalesIngresoCompra, TotalesVerde ya son cards)
- Actualizar estilo del contenedor de filtros al estilo de panorama facturador:
  * Usar clase 'brand-card' y bordes transparentes
  * Header con título y subtítulo estilizados
  * Checkbox 'Incluir anulados' en header
  * Inputs con variables CSS de brand
  * Footer con botón 'Actualizar' estilizado
  * Layout consistente con gap-8

Resultado: diseño más limpio, sin duplicación de cards y
estilo consistente entre páginas.
2025-10-29 17:24:20 -06:00
db1a12d100 Refactor: simplificar indicadores de cambios pendientes
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 46s
Cambios realizados:
- Alerta más compacta con variant 'soft' en lugar de 'solid'
- Eliminado botón 'Actualizar ahora' redundante de la alerta
- Eliminado emoji de advertencia del botón 'Actualizar'
- Simplificado borde del card (solo borde amarillo sutil)
- Eliminadas sombras y rings del card
- Eliminada animación pulse del botón
- Mantenido punto amarillo pulsante en la alerta

El indicador ahora es más discreto pero sigue siendo evidente.
2025-10-29 17:18:47 -06:00
a4e4fd6a64 Feat: agregar indicador visual de cambios pendientes en filtros
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 45s
Implementación de sistema de tracking para detectar cuando los filtros
han cambiado pero no se han aplicado a los datos mostrados.

Indicadores visuales implementados:
- Alerta amarilla prominente con animación pulse y ping
- Borde y sombra amarilla en el card de filtros
- Botón 'Actualizar' cambia a amarillo con emoji de advertencia
- Botón rápido 'Actualizar ahora' dentro de la alerta
- Animaciones llamativas para captar la atención

El sistema compara los filtros actuales con los últimos aplicados
y muestra indicadores visuales evidentes cuando hay diferencias.
2025-10-29 17:16:08 -06:00
4cbc944682 Fix: eliminar carga automática de datos en panorama facturador
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 47s
Cambios implementados:
- Eliminada la llamada automática a loadData() en onMounted
- Añadido estado inicial con mensaje de bienvenida
- El usuario debe hacer clic explícito en 'Actualizar' para cargar datos
- Mejora la experiencia evitando queries automáticas pesadas a Metabase

Ahora la página muestra:
- Estado inicial: filtros + mensaje invitando a actualizar
- Estado con datos: filtros + todas las secciones de datos
2025-10-29 15:28:23 -06:00
baf8f2ae0a Fix: cerrar sidebar automáticamente en móvil al cargar la página
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 45s
La sidebar ahora detecta el tamaño de pantalla al inicializar:
- En móvil (< 1024px): cerrada por defecto
- En desktop (>= 1024px): abierta por defecto

Esto mejora la experiencia en dispositivos móviles evitando que
la sidebar tape el contenido al cargar la página.
2025-10-29 15:25:44 -06:00
f1f5b84af9 Refactor: controlar peticiones a Metabase en panorama facturador
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 47s
Cambios realizados:
- Mover botón "Actualizar" al footer del card de Filtros
- Implementar guard para prevenir peticiones simultáneas
- Eliminar watcher automático de fechas
- Deshabilitar recarga automática al cambiar "incluir anulados"
- Usuario debe hacer clic explícito en "Actualizar" para cargar datos

Esto garantiza que solo una petición a Metabase esté activa a la vez
y da control total al usuario sobre cuándo recargar los datos.
2025-10-29 15:22:35 -06:00
33e0319272 Refactor: mover toggle de unidades y aplicar en Precios Promedio Ponderados
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 48s
Cambios en TotalesIngresoCompra:
- Mover botón toggle del header principal al header de sección 'Uva'
- Mejor posicionamiento: solo afecta la sección donde se aplica

Cambios en TotalesMonetarios:
- Agregar toggle de unidades en 'Precios Promedio Ponderados' para Uva
- 3 estados: LB, QQ, Ambos (muestra ambos precios en un contenedor)
- Unificar visualización de 'Uva por LB' y 'Uva por QQ' en un solo contenedor
- Grid cambia de 5 a 4 columnas para mejor layout

Ambos toggles funcionan independientemente y mantienen el mismo patrón
de diseño con iconos dinámicos.
2025-10-29 13:25:43 -06:00
465d68ec17 Feat: agregar toggle de unidades en sección Uva de Totales de Ingreso y Compra
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 49s
- Agregar botón toggle de 3 estados: LB, QQ Seco, Ambos
- Por defecto muestra valores en LB
- Al cambiar a QQ Seco muestra: QQ Seco Ingresado, Pagado, en Depósito
- Al cambiar a Ambos muestra ambas unidades en el mismo contenedor
- Calcular QQ Seco en Depósito para Uva (ingresado - pagado)
- Iconos dinámicos según el modo seleccionado
2025-10-29 13:19:35 -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
1af1c61191 Agregar componente RechazosSubproductos para panorama facturador
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 5m28s
2025-10-29 10:05:31 -06:00
ae19af5c9e Fix: corregir renderizado de parámetros en MetabaseCardDisplay
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 48s
- Cambiar tipo de parámetros boolean de 'category' a 'boolean' para que funcione el UToggle
- Detectar campos de fecha por nombre aunque sean tipo text en Metabase
- Renderizar inputs de fecha con date picker para campos que contienen 'fecha'
- Mejorar inicialización de parámetros text que representan fechas

Resuelve el problema donde incluir_anulados no aparecía y fecha_desde/fecha_hasta
se mostraban como text inputs en lugar de date pickers
2025-10-29 09:38:17 -06:00
646057188e Actualizar README con cambios v1.1.0: Informe de Ingresos y config centralizada
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 8s
2025-10-27 17:24:04 -06:00
ab0e3479f5 Activar página de Informe de Ingresos con filtros y totales
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 46s
2025-10-27 17:19:51 -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
caefe317e0 Agregar README completo del proyecto
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 8s
2025-10-27 15:54:09 -06:00
f36861f1b2 Eliminar composables legacy useIngresosMetrics y useRechazosMetrics
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 52s
2025-10-27 15:36:51 -06:00
71d0f98338 Fix: exportar variables NUXT_METABASE_* en workflow para runtime config
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 11s
2025-10-27 15:34:19 -06:00
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