La capa de economia existe para que el dinero viva en un solo sitio y nunca cruce hacia el prompt. El pipeline recibe de ahi solo refPartida y nombre. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
27 lines
1.3 KiB
TypeScript
27 lines
1.3 KiB
TypeScript
import { calcularRatio } from "@/lib/propuesta/economia";
|
|
|
|
let fallas = 0;
|
|
function check(n: string, ok: boolean, d = "") {
|
|
console.log(`${ok ? " OK " : " FALLA"} | ${n}${d ? " -> " + d : ""}`);
|
|
if (!ok) fallas++;
|
|
}
|
|
|
|
check("sin valor anual no hay ratio", calcularRatio(100000, null) === null);
|
|
check("valor anual cero no divide entre cero", calcularRatio(100000, 0) === null);
|
|
check("valor anual negativo no produce ratio", calcularRatio(100000, -5) === null);
|
|
|
|
check("ratio 5% = subcotizado", calcularRatio(50000, 1000000)?.lectura === "subcotizado");
|
|
check("ratio 20% = en rango", calcularRatio(200000, 1000000)?.lectura === "en_rango");
|
|
check("ratio 35% = alto", calcularRatio(350000, 1000000)?.lectura === "alto");
|
|
check("ratio 60% = objecion probable", calcularRatio(600000, 1000000)?.lectura === "objecion_probable");
|
|
|
|
// Los cortes exactos: 0.10 entra en rango, 0.25 sigue en rango, 0.40 sigue alto.
|
|
check("corte 10% cae en rango", calcularRatio(100000, 1000000)?.lectura === "en_rango");
|
|
check("corte 25% cae en rango", calcularRatio(250000, 1000000)?.lectura === "en_rango");
|
|
check("corte 40% cae en alto", calcularRatio(400000, 1000000)?.lectura === "alto");
|
|
|
|
check("ratio redondeado a 3 decimales", calcularRatio(123456, 1000000)?.ratio === 0.123);
|
|
|
|
console.log(fallas === 0 ? "\ntodo paso\n" : `\n${fallas} fallas\n`);
|
|
process.exit(fallas === 0 ? 0 : 1);
|