Commit Graph

6 Commits

Author SHA1 Message Date
58751467cf Feat: Implementar SCAA Score y conversión bidireccional
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m7s
CAMBIOS PRINCIPALES:

1. Nueva fórmula de SCAA Score:
   - S = 0.65625 × Σhᵢ + 52.75 - 2u - 4d
   - Donde hᵢ = puntaje afectivo (1-9)
   - u = tazas no uniformes, d = tazas defectuosas

2. Funciones de cálculo (catacion.ts):
   - calcularSumatoriaAfectiva(): suma de valores afectivos
   - calcularSCAA(): calcula SCAA Score con penalizaciones
   - scaaASumatoriaAfectiva(): conversión inversa (sin penalizaciones)
   - sumatoriaAfectivaASCAA(): conversión directa (sin penalizaciones)

3. FormularioMuestra.vue:
   - Mostrar ambos scores en el acordeón
   - "Sumatoria Afectiva" (entero, suma de afectivos)
   - "SCAA Score" (decimal, con 2 decimales)

4. ModalAsignacionRapida.vue:
   - Doble input: Sumatoria Afectiva + SCAA Score
   - Sincronización bidireccional automática
   - Al modificar Sumatoria → actualiza SCAA
   - Al modificar SCAA → calcula Sumatoria más cercana
   - Validación y redondeo para mantener enteros válidos
   - Rango: Sumatoria 9-90, SCAA 58.65-112.00

NOTAS:
- En asignación rápida no se toman en cuenta penalizaciones
- SCAA Score acepta decimales, Sumatoria solo enteros
- Múltiples SCAA Scores pueden apuntar al mismo entero
2025-10-19 02:26:37 -06:00
e5275d223e Fix: Corregir escalas de intensidad y cálculo de puntaje final
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m6s
CAMBIOS CRÍTICOS EN ESCALAS:
- Escala descriptiva: 1-10 → 1-15
- Escala afectiva: 1-15 → 1-9
- Puntaje final: suma de afectivos (no descriptivos)
- Rango puntaje final: 9-90 (8 categorías × 1-9 afectivo)

Iconos de selección en SelectorFamilia:
- Fragancia/Aroma: i-heroicons-check-circle-solid
- Sabor: i-heroicons-check-badge-solid
- Eliminar textos de títulos para interfaz más limpia

Actualizar calcularPuntajeFinal (catacion.ts):
- Cambiar suma de descriptivos a afectivos
- Actualizar comentarios JSDoc

Actualizar SelectorIntensidad:
- Máximo descriptiva: 10 → 15
- Máximo afectiva: 15 → 9
- Actualizar comentarios y tipos

Actualizar ModalAsignacionRapida:
- Rango de entrada: 8-80 → 9-90
- Modificar valores afectivos (no descriptivos)
- Valor por defecto: 40 → 45
- Actualizar validaciones de rango

Actualizar FormularioMuestra:
- aplicarAsignacionRapida usa tipo 'afectiva'
- Texto: "Suma de valores afectivos"

IMPORTANTE: Estos cambios afectan toda la lógica de puntuación
2025-10-19 01:52:08 -06:00
23e94fca2f Fix: Cambiar cálculo de puntaje final para usar valores descriptivos
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m6s
- Modificar calcularPuntajeFinal para sumar intensidades descriptivas
  en lugar de afectivas
- Actualizar comentarios JSDoc para reflejar el cambio
- El puntaje final ahora refleja correctamente la suma de todas las
  puntuaciones descriptivas (1-10) de cada categoría
2025-10-19 00:38:39 -06:00
816a3e860a Fix: Refactorizar sensaciones en boca y hacer checkboxes ultra compactos
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m7s
CAMBIOS EN SENSACIONES EN BOCA:
- Reducir opciones a solo 5: Áspero, Aceitoso, Metálico, Deja seca la boca, Suave
- Cambiar de selección múltiple a selección única
- Actualizar tipo de sensacionEnBoca: SensacionBoca[] → SensacionBoca | null

CAMBIOS EN CHECKBOXES (sensaciones y gustos):
- Hacer checkboxes tan compactos como subcategorías de SelectorFamilia
- Usar flex-wrap en todos los breakpoints (eliminar grid en desktop)
- Dimensiones ultra compactas:
  * Desktop: min-height 32px, padding 0.375rem 0.5rem, font-size 0.75rem
  * Mobile: min-height 28px, padding 0.25rem 0.375rem, font-size 0.6875rem
  * Touch: min-height 36px para dispositivos táctiles

ARCHIVOS MODIFICADOS:
- app/types/catacion.ts: Actualizar SensacionBoca y SENSACIONES_BOCA
- app/composables/useCatacion.ts: Cambiar actualizarSensacionBoca a selección única
- app/components/cata/FormularioMuestra.vue: UI compacta y selección única
- app/components/cata/ResumenMuestra.vue: Adaptar a sensacionEnBoca única
2025-10-18 16:55:37 -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
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