Fix: Redondear SCAA Score a múltiplos de 0.25
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m5s
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:
@@ -50,8 +50,8 @@
|
||||
type="number"
|
||||
:min="scaaMin"
|
||||
:max="scaaMax"
|
||||
step="0.01"
|
||||
placeholder="58.65-112.00"
|
||||
step="0.25"
|
||||
placeholder="58.75-112.00"
|
||||
class="cata-input w-full px-3 py-2 rounded-md text-center text-lg"
|
||||
@input="onScaaChange"
|
||||
/>
|
||||
@@ -146,7 +146,7 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import type { Muestra } from '~/types/catacion'
|
||||
import { scaaASumatoriaAfectiva, sumatoriaAfectivaASCAA } from '~/types/catacion'
|
||||
import { scaaASumatoriaAfectiva, sumatoriaAfectivaASCAA, redondearA025 } from '~/types/catacion'
|
||||
|
||||
interface Props {
|
||||
modelValue: boolean
|
||||
@@ -226,6 +226,9 @@ const onScaaChange = () => {
|
||||
|
||||
actualizandoInput.value = true
|
||||
|
||||
// Redondear al múltiplo de 0.25 más cercano
|
||||
scaaDeseado.value = redondearA025(scaaDeseado.value)
|
||||
|
||||
// Validar rango
|
||||
if (scaaDeseado.value < scaaMin) scaaDeseado.value = scaaMin
|
||||
if (scaaDeseado.value > scaaMax) scaaDeseado.value = scaaMax
|
||||
@@ -239,7 +242,7 @@ const onScaaChange = () => {
|
||||
// Asegurar rango válido
|
||||
puntajeDeseado.value = Math.max(9, Math.min(90, sumatoriaRedondeada))
|
||||
|
||||
// Recalcular SCAA Score con el valor redondeado
|
||||
// Recalcular SCAA Score con el valor redondeado (ya aplicará redondeo a 0.25)
|
||||
scaaDeseado.value = sumatoriaAfectivaASCAA(puntajeDeseado.value)
|
||||
|
||||
actualizandoInput.value = false
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user