EDlabsEDcheck

Escribir reglas

Usa semantic() para decirle a EDcheck qué significa “un dato bueno”.

Una regla es una frase que describe lo que quieres. No es código de validación. Es una instrucción para la IA.

La forma corta (sí o no)

Si pasas un string, EDcheck hace una pregunta de sí o no. A esto se le llama regla Noul.

fullName: semantic("Un nombre completo creíble de una persona real")

Eso alcanza para empezar. Escribe en el idioma de tus usuarios. Sé concreto.

La forma completa

Si quieres más control, pasa un objeto.

bio: semantic({  intent: "Una biografía profesional que diga algo de verdad",  valid: "Describe el trabajo o el fondo de la persona",  invalid: "Texto sin sentido o que no tiene nada que ver",  severity: "warning",  message: "La bio no se entiende o no habla de la persona",  id: "bio_quality",})
CampoPara qué sirve
intentLa pregunta. Obligatorio.
validEjemplo de “esto sí sirve”. Ayuda a la IA.
invalidEjemplo de “esto no sirve”.
severityerror (tumba success), warning o info. Por defecto es error.
messageEl texto que verá tu app en el issue. Si no lo pones, EDcheck pone uno genérico.
idUn nombre estable para esta regla. Si no lo pones, usa el path del campo (fullName).

Cuando no es solo sí o no

A veces quieres una escala: malo, regular, bueno. Ahí usas kind: "score" y una lista de levels.

description: semantic({  kind: "score",  intent: "Qué tan bien explica la descripción el proyecto de software",  levels: [    {      label: "meaningless",      description: "Texto al azar, spam o que no viene al caso",      outcome: "fail",    },    {      label: "vague",      description: "Habla del tema, pero es demasiado vago",      outcome: "warning",    },    {      label: "clear",      description: "Se entiende qué construir o qué problema resuelve",      outcome: "pass",    },  ],})

Gana el nivel con más probabilidad. Si hay empate, gana el que está más arriba en la lista.

Si la IA no está lo bastante segura (minConfidence, por defecto 0.6), el resultado se vuelve warning aunque el nivel ganador fuera un pase o un fail.

Usa Noul (sí/no) para “¿es un nombre?”. Usa Score cuando te importe el grado: vago vs claro.

Dónde se pegan las reglas

En define, la clave de rules es el nombre del campo del schema. Tiene que existir en el objeto de Zod.

const UserSemantic = edcheck.define(User, {  rules: {    fullName: semantic("Un nombre completo creíble de una persona real"),    bio: semantic("Una biografía profesional coherente"),  },});

No hace falta poner una regla en todos los campos. Zod ya cuida la forma. EDcheck solo entra donde el sentido importa.