Propuesta IA: aplanar el nivel calculo y subir el tope del subtitulo
Segunda tanda de rechazos observados contra datos reales (3 vueltas mas):
- Cada dimension del valor del problema tenia sus factores dentro de un objeto
`calculo`. Ese nivel no aportaba nada semantico y era justo donde el modelo se
perdia: devolvia {item: {...}, notaMetodologia} y quemaba reintentos. Ahora
`factores` y `montoAnualMXN` cuelgan de la dimension. Un nivel menos de
anidamiento en el punto exacto donde fallaba.
- subtitulo.max(300) se quedaba corto. Sube a 400.
La primera tanda de arreglos ya habia bajado los rechazos de 7 a 3 en tres
vueltas, y de 3 vueltas con reintento en la redaccion a solo 1.
Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
This commit is contained in:
co-authored by
Claude Opus 5
parent
bdd9319fd0
commit
434a427f70
@@ -46,7 +46,7 @@ const diagBase = {
|
||||
valorProblema: {
|
||||
dimensiones: [{
|
||||
tipo: "tiempo", descripcion: "x".repeat(12),
|
||||
calculo: { factores: [{ nombre: "a", valor: 8, confianza: "confirmado" }, { nombre: "b", valor: 52, confianza: "estimado" }], montoAnualMXN: 416 },
|
||||
factores: [{ nombre: "a", valor: 8, confianza: "confirmado" }, { nombre: "b", valor: 52, confianza: "estimado" }], montoAnualMXN: 416,
|
||||
confianza: "estimado", hechos: [],
|
||||
}],
|
||||
notaMetodologia: "n",
|
||||
@@ -56,15 +56,21 @@ const diagBase = {
|
||||
check("un diagnostico bien formado valida", diagnosticoSchema.safeParse(diagBase).success,
|
||||
JSON.stringify(diagnosticoSchema.safeParse(diagBase).error?.issues?.[0] ?? ""));
|
||||
check("con monto, exige al menos 2 factores",
|
||||
!diagnosticoSchema.safeParse({ ...diagBase, valorProblema: { ...diagBase.valorProblema, dimensiones: [{ ...diagBase.valorProblema.dimensiones[0], calculo: { factores: [{ nombre: "a", valor: 1, confianza: "estimado" }], montoAnualMXN: 1 } }] } }).success);
|
||||
!diagnosticoSchema.safeParse({ ...diagBase, valorProblema: { ...diagBase.valorProblema, dimensiones: [{ ...diagBase.valorProblema.dimensiones[0], factores: [{ nombre: "a", valor: 1, confianza: "estimado" }], montoAnualMXN: 1 }] } }).success);
|
||||
check("sin monto, factores vacio es lo correcto",
|
||||
diagnosticoSchema.safeParse({ ...diagBase, valorProblema: { ...diagBase.valorProblema, dimensiones: [{ ...diagBase.valorProblema.dimensiones[0], calculo: { factores: [], montoAnualMXN: null } }] } }).success);
|
||||
check("omitir montoAnualMXN se tolera y queda en null",
|
||||
diagnosticoSchema.safeParse({ ...diagBase, valorProblema: { ...diagBase.valorProblema, dimensiones: [{ ...diagBase.valorProblema.dimensiones[0], calculo: { factores: [] } }] } }).success);
|
||||
diagnosticoSchema.safeParse({ ...diagBase, valorProblema: { ...diagBase.valorProblema, dimensiones: [{ ...diagBase.valorProblema.dimensiones[0], factores: [], montoAnualMXN: null }] } }).success);
|
||||
// Una dimension SIN la clave montoAnualMXN: es lo que manda el modelo cuando no tiene
|
||||
// cifras, y por eso el campo lleva .default(null) en vez de solo .nullable().
|
||||
const dimSinMonto = { tipo: "tiempo", descripcion: "x".repeat(12), factores: [], confianza: "por_validar", hechos: [] };
|
||||
const sinMonto = { ...diagBase, valorProblema: { ...diagBase.valorProblema, dimensiones: [dimSinMonto] } };
|
||||
check("omitir montoAnualMXN se tolera", diagnosticoSchema.safeParse(sinMonto).success,
|
||||
JSON.stringify(diagnosticoSchema.safeParse(sinMonto).error?.issues?.[0] ?? ""));
|
||||
check("al omitirlo, Zod lo rellena con null",
|
||||
diagnosticoSchema.parse({ ...diagBase, valorProblema: { ...diagBase.valorProblema, dimensiones: [{ ...diagBase.valorProblema.dimensiones[0], calculo: { factores: [] } }] } }).valorProblema.dimensiones[0].calculo.montoAnualMXN === null);
|
||||
diagnosticoSchema.parse(sinMonto).valorProblema.dimensiones[0].montoAnualMXN === null);
|
||||
check("la dimension quedo plana: sin nivel `calculo`",
|
||||
!JSON.stringify(aJsonSchema(diagnosticoSchema)).includes('"calculo"'));
|
||||
check("un factor sin confianza se rechaza",
|
||||
!diagnosticoSchema.safeParse({ ...diagBase, valorProblema: { ...diagBase.valorProblema, dimensiones: [{ ...diagBase.valorProblema.dimensiones[0], calculo: { factores: [{ nombre: "a", valor: 1 }, { nombre: "b", valor: 2 }], montoAnualMXN: 2 } }] } }).success);
|
||||
!diagnosticoSchema.safeParse({ ...diagBase, valorProblema: { ...diagBase.valorProblema, dimensiones: [{ ...diagBase.valorProblema.dimensiones[0], factores: [{ nombre: "a", valor: 1 }, { nombre: "b", valor: 2 }], montoAnualMXN: 2 }] } }).success);
|
||||
|
||||
check("exige al menos un hallazgo",
|
||||
!diagnosticoSchema.safeParse({ ...diagBase, hallazgos: [] }).success);
|
||||
|
||||
Reference in New Issue
Block a user