Commit Graph

33 Commits

Author SHA1 Message Date
bb7e095f55 Fix: Corregir estructura del Modal según Nuxt UI 4
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m5s
- Mover trigger button al slot default de UModal
- Usar props title y description directamente en UModal
- Usar slots #body y #footer para el contenido del modal
- Mantener v-model:open para control de estado
- Eliminar wrapper div duplicado
- Seguir estructura correcta de Nuxt UI v4
2025-10-18 03:06:46 -06:00
b4cad99419 Feat: Implementar personalización de color principal del tema
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m7s
- Crear composable useColorCustomization para manejar colores personalizados
- Agregar botón de paleta en CataUserInfo para acceder al color picker
- Implementar modal con selector de color (input color + text)
- Guardar preferencias en localStorage por tema (light/dark)
- Generar paleta de gradientes automáticamente desde color base
- Aplicar colores dinámicamente a variables CSS
- Incluir vista previa del color en el modal
- Botón para restablecer al color por defecto
- Persistencia de colores entre sesiones
- Inicialización automática en app.vue
2025-10-18 03:02:30 -06:00
e69780c321 Fix: Agregar migración de datos para sesiones antiguas
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m3s
- Agregar función migrateSesion() que convierte el formato antiguo al nuevo
- Formato antiguo: { categoria: string, subcategoria: string }
- Formato nuevo: { categorias: string[], subcategorias: string[] }
- Migración automática al cargar sesiones desde IndexedDB
- Maneja casos donde categorias/subcategorias son null o undefined
2025-10-18 03:00:00 -06:00
48e0d2f7dc Feat: Reorganizar tabs y permitir selección múltiple de categorías en notas
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m1s
- **Nuevas tabs reorganizadas:**
  - Organoléptica: Selectores de familia de fragancia-aroma y sabor
  - Descriptiva/Afectiva: Todos los sliders de intensidad (incluye impresión global)
  - Defectos: Tazas no uniformes, defectuosas y tipo de defecto
  - Impresión Global: Vista completa con todos los componentes

- **Selector de categorías mejorado:**
  - Permitir selección múltiple de categorías padre
  - Las subcategorías son la unión de las subcategorías de los padres seleccionados
  - Permitir selección múltiple de subcategorías
  - Actualizar resumen visual de selección

- **Tipos actualizados:**
  - NotaSeleccionada ahora usa arrays para categorias y subcategorias
  - TabCatacion actualizado con las nuevas tabs
  - Funciones de actualización modificadas para trabajar con arrays

- **Correcciones TypeScript:**
  - Usar JSON.parse(JSON.stringify()) para crear copias mutables de arrays readonly
  - Resolver incompatibilidades de tipos entre readonly y mutable arrays
2025-10-18 02:57:14 -06:00
1c4f09d9bd Fix: Igualar tamaño del botón de descarga con los demás botones
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m1s
- Agregar clases flex items-center justify-center al botón de descarga
- Cambiar hidden sm:block por hidden sm:flex (coherente con flex)
- Ahora el botón tiene el mismo tamaño que los demás
- Archivo: app/pages/cata/sesion.vue:48
2025-10-18 02:48:00 -06:00
4fdd66f5ab Fix: Centrar icono de flecha en botón de regresar
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m2s
- Agregar clases flex items-center justify-center al botón de regresar
- El icono i-lucide-arrow-left ahora está perfectamente centrado
- Archivo: app/pages/cata/sesion.vue:32
2025-10-18 02:43:07 -06:00
0a4623acfb Fix: Remover clase cata-page del header sticky para evitar min-height no deseada
Some checks failed
build-and-deploy / build-and-deploy (push) Has been cancelled
2025-10-18 02:42:08 -06:00
9dc1c88c6a Fix: Corregir clave de configuración de toasts para Nuxt UI v4
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m2s
PROBLEMA ENCONTRADO: Los toasts seguían con estilo por defecto

CAUSA RAÍZ:
- En Nuxt UI v4 la clave de configuración es 'toast' no 'notification'
- Estaba usando 'notification:' en app.config.ts
- Por eso los estilos personalizados nunca se aplicaban

SOLUCIÓN:
- Cambiar 'notification:' por 'toast:' en app.config.ts
- Ahora las clases CSS personalizadas sí se aplicarán
- Los toasts usarán el estilo outline/terminal del sistema
2025-10-18 02:37:38 -06:00
60287f35dc Debug: Cambiar a slot #content y agregar debug de datos
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m2s
- Cambiar de slot #body a #content
- Agregar debug para ver qué contiene item cuando no tiene muestra
- Esto ayudará a entender qué datos recibe el slot
2025-10-18 02:36:11 -06:00
9e6f80e98f Debug: Agregar v-if para verificar datos en slot #body
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m1s
2025-10-18 02:33:50 -06:00
009c6a1821 Fix: Rediseñar toasts completamente para acoplarse al sistema de catación
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m1s
PROBLEMA: Toasts usaban estilos por defecto de Nuxt UI que no se acoplaban al diseño outline/terminal

SOLUCIÓN:
- Cambiar app.config.ts para usar clases CSS personalizadas en lugar de sintaxis arbitraria de Tailwind
- Agregar estilos CSS completos en main.css usando variables del sistema (--cata-bg, --cata-fg, --cata-primary)
- Implementar todas las variantes (primary, success, error, warning, info, neutral)

ESTILOS APLICADOS:
- Fondo: var(--cata-bg) en claro, negro 95% opaco en oscuro
- Bordes: outline usando var(--cata-primary) con opacidades
- Texto: fuente monospace en modo oscuro con text-shadow
- Iconos: colores específicos por tipo con drop-shadow en oscuro
- Efectos glow: sombras sutiles en modo oscuro según tipo
- IMPORTANTE: Usar !important para sobrescribir estilos de Nuxt UI
2025-10-18 02:31:31 -06:00
0d8b3adfc8 Fix: Usar slot #body en lugar de slots personalizados por muestra
Some checks failed
build-and-deploy / build-and-deploy (push) Has been cancelled
- Simplificar uso de slots del accordion usando #body para el contenido
- Remover v-for innecesario en templates de slots
- Remover propiedad slot de accordionItems
- Esto permite que el contenido se renderice correctamente cuando se expande el accordion
2025-10-18 02:29:53 -06:00
7a15da0840 Fix: Corregir tipos de TypeScript en accordion
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m4s
- Importar tipo Muestra correctamente
- Remover tipo AccordionItem no usado
- Tipar muestra como Muestra en accordionItems
- Permitir inferencia de tipo del computed
2025-10-18 02:25:52 -06:00
f5c81cbe2f Feat: Agregar animación de hover sutil a tabs
Some checks failed
build-and-deploy / build-and-deploy (push) Has been cancelled
- Aumentar opacidad del texto de 60% a 80% en hover
- Mostrar borde inferior sutil (30% opacity) en hover
- Agregar text-shadow suave en modo oscuro
- Solo afecta tabs inactivas (no las activas)
- Transiciones específicas: color, border-color, text-shadow
- CERO cambios de tamaño o desplazamiento, solo colores
2025-10-18 02:25:25 -06:00
c87aa68d7d Fix: Corregir uso de slots en accordion para pasar correctamente los datos
- Usar parámetro { item } en slot personalizado del FormularioMuestra
- Pasar item.muestra en lugar de la muestra del v-for
- Esto asegura que se use la muestra clonada del accordionItems
2025-10-18 02:25:02 -06:00
8c7fa77901 Fix: Eliminar cambios de tamaño en hover de botones
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m1s
- Quitar border-width en hover que causaba crecimiento del botón
- Cambiar solo border-color en hover (de 50% a 70% opacity)
- Modificar transition para solo animar propiedades de color
- CERO cambios de tamaño o desplazamiento, solo colores
2025-10-18 02:22:32 -06:00
95d498694a Fix: Mejorar UX de botones y toasts del sistema de catación
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m2s
- Quitar efecto scale on hover/active de todos los botones cata-button
- Quitar efecto hover:scale del avatar en UserInfo
- Rediseñar toasts con estilo outline/terminal 100% acoplado al sistema
- Toasts usan variables CSS del sistema (--cata-bg, --cata-fg, --cata-primary)
- Texto con fuente mono y text-shadow en modo oscuro
- Efectos glow sutiles en modo oscuro según tipo de notificación
- Bordes outline coherentes con diseño del sistema de catación
2025-10-18 02:18:56 -06:00
02cdec58da Fix: Simplificar componente ResumenMuestra para funcionar correctamente como header del accordion
Some checks failed
build-and-deploy / build-and-deploy (push) Has been cancelled
- Rediseñar layout para ser más compacto y horizontal
- Usar badges de indicadores para mostrar valores afectivos de intensidades
- Mostrar progreso con barra visual en desktop
- Eliminar información redundante y simplificar estructura
- Mejorar responsive design para mobile
2025-10-18 02:18:12 -06:00
9cbc5f94c3 Fix: Eliminar componentes duplicados que causaban conflicto en el build
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m4s
- Eliminar CataResumenMuestra.vue y CataFormularioMuestra.vue duplicados
- Usar componentes existentes en components/cata/ que ya se auto-registran como CataResumenMuestra y CataFormularioMuestra
- Resolver conflicto de nombres en Nuxt que impedía el build
2025-10-18 02:12:22 -06:00
5e697dbc89 Fix: Corregir bug visual de accordions en sesión de catación
Some checks failed
build-and-deploy / build-and-deploy (push) Failing after 16s
- Crear componente CataResumenMuestra para mostrar resumen de cada muestra en el header del accordion
- Crear componente CataFormularioMuestra para mostrar formulario de edición de intensidades por tab
- Corregir uso de slots en UAccordion para mostrar correctamente el contenido
- Usar slot #default para customizar el header con CataResumenMuestra
- Usar slots personalizados por muestra para el body con CataFormularioMuestra
- Agregar estilos mejorados para los items del accordion
2025-10-18 02:10:15 -06:00
76dcff31d6 Feat: Reorganizar UI - Sistema de catación como página principal
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m2s
- Crear componente CataUserInfo con estilo mobile-first del sistema de catación
- Mover "/" para redirigir automáticamente a /cata
- Incluir información del usuario en página de catación
- Mantener estilo consistente con diseño outline/terminal del sistema
- Optimizar componente de usuario para mobile (compacto y funcional)
2025-10-18 02:05:54 -06:00
231c901e1c Fix: Corregir app.vue para usar NuxtPage y crear página de inicio
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m3s
- Simplificar app.vue para usar <NuxtPage /> correctamente
- Crear index.vue con contenido de autenticación de Authentik
- Agregar enlace a la aplicación de catación desde el inicio
- Esto permite que las rutas /cata y /cata/sesion se rendericen correctamente
2025-10-18 01:50:00 -06:00
87fb92d210 Feat: Implementar UI completa de RioCata - Sistema de catación de café
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m3s
Agregar sistema completo de catación de café con las siguientes características:

- Tipos TypeScript completos para sesiones, muestras, intensidades y notas
- Composable useIndexedDB para gestión de sesión activa en cliente
- Composable useCatacion con lógica de negocio para actualización de muestras
- Componentes reutilizables:
  * SliderIntensidad: Slider dual para valores descriptivos (1-10) y afectivos (1-15)
  * SelectorFamilia: Selector jerárquico de familias de notas (3 niveles)
  * SelectorTazas: Selector de tazas (1-5) para uniformidad y defectos
  * ResumenMuestra: Header de accordion con progreso y estadísticas
  * FormularioMuestra: Formulario completo con 3 tabs (Fragancia/Aroma, Sabor, Impresión Global)
- Páginas:
  * /cata: Gestión de sesiones (crear nueva o continuar existente)
  * /cata/sesion: Interfaz principal de catación con accordions y tabs
- Tema dual:
  * Modo claro: Fondo blanco, texto negro, outlines azules
  * Modo oscuro: Fondo negro, texto verde terminal, estilo monospace
- Diseño mobile-first responsive con CSS vanilla (sin @apply de Tailwind)
- Configuración PWA con almacenamiento en IndexedDB
2025-10-18 01:39:27 -06:00
801b650891 Fix: Eliminar iconos legacy SVG y regenerar apple-touch-icon, favicon e icon-maskable correctos
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 2m23s
2025-10-17 19:55:43 -06:00
852d948075 Update: Mejorar configuración PWA con estándares consistentes del ecosistema Nucleo
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m0s
- Agregar manifest.id, lang, dir y categories
- Implementar launch_handler para ventana única
- Agregar capture_links y url_handlers
- Configurar workbox con clientsClaim y skipWaiting
- Ajustar orientation a 'any' y mejorar display_override
- Corregir purpose de iconos para separar any de maskable
2025-10-17 19:43:07 -06:00
1e4d254c0a Fix: Usar actions/checkout@v4 en workflow para resolver error de conectividad con Gitea
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m17s
2025-10-17 19:32:38 -06:00
64fdf7ce63 Feat: Actualizar homepage con branding RioCata y ajustar configuración
Some checks failed
build-and-deploy / build-and-deploy (push) Failing after 2m16s
2025-10-17 18:28:49 -06:00
e5ec8e15b6 Docs: Actualizar README con arquitectura completa y guías de uso
Some checks failed
build-and-deploy / build (push) Failing after 6s
build-and-deploy / deploy (push) Has been cancelled
- Actualizar descripción del proyecto
- Agregar arquitectura del sistema (PostgreSQL + Nuxt4 PWA)
- Documentar estructura de base de datos
- Agregar guías de inicio rápido
- Documentar comandos de testing
- Actualizar información de deployment
- Agregar badges de estado del proyecto
- Mejorar formato y organización general
2025-10-17 17:57:30 -06:00
d1aeb88409 Feat: Agregar estructura PWA Nuxt4 y configuración de desarrollo
Configuración PWA:
- Agregar estructura completa de Nuxt4 para PWA
- Configurar .env.example con variables de entorno
- Preparar aplicación para instalación offline

Configuración Claude Code:
- Agregar .claude/ con settings y hooks
- Configurar entorno de desarrollo con Claude

CI/CD:
- Agregar .gitea/workflows para Gitea Actions
- Preparar pipeline de despliegue automático

Docker:
- Actualizar docker-compose.yml con servicios PWA
- Configurar networking entre servicios

Git:
- Actualizar .gitignore para excluir archivos de build
- Ignorar node_modules y archivos temporales
2025-10-17 17:57:18 -06:00
b341cca989 Fix: Corregir tests para 100% de éxito - Suite completa sin errores
Test Triggers:
- Reducir pg_sleep de 1 a 0.1 segundos (suficiente con clock_timestamp)
- Mejorar robustez del test de updated_at

Test Queries:
- Agregar filtrado por sesión de prueba en QUERY 3 (operador @>)
- Agregar filtrado por sesión de prueba en QUERY 5 (acidez >= 8)
- Eliminar dependencia de datos residuales
- Garantizar aislamiento completo entre tests

Test Indexes:
- Reescribir completamente para eliminar errores de sintaxis
- Cambiar de captura de EXPLAIN a verificación de existencia
- Agregar benchmarks de performance con 100 registros reales
- Verificar existencia de índices vía pg_indexes
- Medir tiempos de ejecución en milisegundos
- Tests más robustos y compatibles con PL/pgSQL

Resultado: 38/38 tests pasando (100%)
2025-10-17 17:57:06 -06:00
8ec394a74e Fix: Usar clock_timestamp() en trigger updated_at para garantizar timestamps únicos
- Cambiar now() por clock_timestamp() en función set_updated_at()
- now() retorna el timestamp del inicio de la transacción
- clock_timestamp() retorna el timestamp actual del sistema
- Garantiza que cada UPDATE tenga un timestamp diferente
- Mejora la precisión para auditoría de cambios
2025-10-17 17:56:51 -06:00
cc3cf0da81 Refactorizar y mejorar suite de tests con validaciones robustas
Problemas resueltos:
- Eliminada dependencia de UUIDs hardcodeados en tests
- Agregadas validaciones específicas de valores esperados
- Implementado cleanup automático de datos de test

Cambios principales:

Tests organizados por categoría (7 archivos nuevos):
- test_structure.sql: 8 tests de estructura de BD
- test_constraints.sql: 6 tests de validaciones
- test_triggers.sql: 3 tests de triggers automáticos
- test_queries.sql: 5 tests de queries típicas
- test_functions.sql: 3 tests de funciones auxiliares
- test_edge_cases.sql: 7 tests de casos límite
- test_indexes.sql: 6 tests de uso de índices

Mejoras implementadas:
- Cada test genera sus propios datos dinámicamente
- Tests usan bloques DO $$ con UUIDs generados
- Validaciones específicas con valores esperados
- Cleanup automático al finalizar cada test
- Tests de casos edge (arrays vacíos, NULL, límites)
- Verificación de uso de índices con EXPLAIN

test_all.sql actualizado:
- Ahora ejecuta todos los archivos organizados
- Total: ~38 tests independientes y robustos
- Progreso visual por categoría
- ASCII art y mejor presentación

Todos los tests verificados y funcionando correctamente
2025-10-17 17:35:34 -06:00
f682c3db51 Inicializar rioCata - Sistema de Catación de Café
- Base de datos PostgreSQL 16 con extensiones JSONB y arrays
- Docker Compose para containerización
- Scripts SQL de inicialización (schema, funciones, índices, datos de prueba)
- Suite de tests de validación (18 tests)
- Queries de ejemplo (17 queries)
- Script helper para gestión (scripts/riocata.sh)
- Documentación completa en README.md

Estructura:
- 4 tablas principales: sesion, auth.users, sesion_participante, muestra, evaluacion
- Tipo ENUM para defectos
- 2 triggers automáticos (updated_at, puntaje_final)
- 19 índices de optimización (GIN, B-tree, funcionales)
- Constraints de validación para arrays y JSONB
- 2 funciones auxiliares para análisis
2025-10-17 17:00:48 -06:00