diff --git a/src/lib/propuesta/prompts.ts b/src/lib/propuesta/prompts.ts index e58b197..db4e258 100644 --- a/src/lib/propuesta/prompts.ts +++ b/src/lib/propuesta/prompts.ts @@ -158,6 +158,8 @@ Reglas de este paso: ser "por_validar". - En quienLoDijo usa el ROL ("el socio", "quien atiende el WhatsApp"), no el nombre propio, salvo que sea el interlocutor comercial. +- Si de alguna de estas listas no hay NADA que decir, devuelvela VACIA. Un array vacio + es la respuesta correcta; no metas "N/A", "ninguno" ni un guion para rellenar. - En redFlags anota lo que deberia preocuparle al asesor: que pidan descuento antes de entender el alcance, que no este presente quien decide, que no haya ninguna cifra del problema, o un "hagan todo y luego vemos".`; diff --git a/src/lib/propuesta/schemas.ts b/src/lib/propuesta/schemas.ts index bbe9321..9c7d383 100644 --- a/src/lib/propuesta/schemas.ts +++ b/src/lib/propuesta/schemas.ts @@ -47,14 +47,14 @@ export const hechosSchema = z ) .max(40), materialesPendientes: z - .array(z.object({ texto: z.string().min(5), bloqueaEntrega: z.boolean() })) + .array(z.object({ texto: z.string().min(3), bloqueaEntrega: z.boolean() })) .max(15), decisionesPendientes: z - .array(z.object({ texto: z.string().min(5), quienDecide: z.string() })) + .array(z.object({ texto: z.string().min(3), quienDecide: z.string() })) .max(15), - mencionesFueraDeAlcance: z.array(z.string().min(5)).max(15), + mencionesFueraDeAlcance: z.array(z.string().min(3)).max(15), redFlags: z - .array(z.object({ senal: z.string().min(5), severidad: z.enum(["baja", "media", "alta"]) })) + .array(z.object({ senal: z.string().min(3), severidad: z.enum(["baja", "media", "alta"]) })) .max(10), }) .strict(); @@ -172,7 +172,8 @@ export const redaccionSchema = z beneficios: z .array( z.object({ - etiqueta: z.string().min(3).max(40), + // 70 y no 40: se pasaba en 2 de 3 vueltas contra datos reales. + etiqueta: z.string().min(3).max(70), texto: z.string().min(20), hallazgoId: z .string()