Fix: Redondear SCAA Score a múltiplos de 0.25
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m5s

PROBLEMA:
El SCAA Score debe moverse en steps de 0.25 (no aceptar
cualquier valor decimal racional).

SOLUCIÓN:

1. Nueva función en catacion.ts:
   - redondearA025(): Redondea al múltiplo de 0.25 más cercano
   - Math.round(valor / 0.25) * 0.25

2. Aplicado en todas las funciones de SCAA:
   - calcularSCAA(): redondea el resultado final
   - sumatoriaAfectivaASCAA(): redondea la conversión

3. ModalAsignacionRapida.vue:
   - Input step cambiado de 0.01 a 0.25
   - onScaaChange(): redondea el valor ingresado
   - Placeholder actualizado: 58.75-112.00

VALORES VÁLIDOS:
Ahora el SCAA Score solo puede tener valores como:
- 85.00, 85.25, 85.50, 85.75, 86.00, etc.
- Nunca valores como 85.17 o 85.33

La visualización con .toFixed(2) sigue mostrando 2 decimales
correctamente.
This commit is contained in:
2025-10-19 02:37:35 -06:00
parent b1f008ab26
commit e36d7dac6b
2 changed files with 20 additions and 6 deletions

View File

@@ -213,17 +213,26 @@ export function calcularPuntajeFinal(muestra: Muestra): number {
return calcularSumatoriaAfectiva(muestra)
}
/**
* Redondea un número al múltiplo de 0.25 más cercano
*/
export function redondearA025(valor: number): number {
return Math.round(valor / 0.25) * 0.25
}
/**
* Calcula el SCAA Score a partir de la muestra
* Fórmula: S = 0.65625 × Σhᵢ + 52.75 - 2u - 4d
* donde hᵢ = puntaje afectivo (1-9), u = tazas no uniformes, d = tazas defectuosas
* El resultado se redondea al múltiplo de 0.25 más cercano
*/
export function calcularSCAA(muestra: Muestra): number {
const sumatoriaAfectiva = calcularSumatoriaAfectiva(muestra)
const u = muestra.tazasNoUniformes.length
const d = muestra.tazasDefectuosas.length
return 0.65625 * sumatoriaAfectiva + 52.75 - 2 * u - 4 * d
const scaaRaw = 0.65625 * sumatoriaAfectiva + 52.75 - 2 * u - 4 * d
return redondearA025(scaaRaw)
}
/**
@@ -237,9 +246,11 @@ export function scaaASumatoriaAfectiva(scaaScore: number): number {
/**
* Convierte Sumatoria Afectiva a SCAA Score (sin penalizaciones)
* Fórmula: S = 0.65625 × Σhᵢ + 52.75
* El resultado se redondea al múltiplo de 0.25 más cercano
*/
export function sumatoriaAfectivaASCAA(sumatoriaAfectiva: number): number {
return 0.65625 * sumatoriaAfectiva + 52.75
const scaaRaw = 0.65625 * sumatoriaAfectiva + 52.75
return redondearA025(scaaRaw)
}
/**