Reglas de validación
Reglas de calidad que aplicamos a cada propiedad antes de publicarla. Si una regla falla, la propiedad se bloquea, se publica como borrador, o se publica normalmente con la falta de amenidades registrada.
Severidades
| Severidad | Efecto |
|---|---|
| BLOCK | La propiedad no se publica. Debe corregir los datos en su CRM para que se procese en un ciclo posterior. |
| DRAFT | La propiedad puede publicarse en estado borrador o con visibilidad interna reducida. |
| WARN | La propiedad se publica normalmente. Solo aplica a amenidades faltantes. |
Cuando una propiedad falla varias reglas, la severidad más alta determina el resultado:
Alguna regla BLOCK falla -> resultado BLOCK
Sin BLOCK, alguna regla DRAFT falla -> resultado DRAFT
Sin BLOCK ni DRAFT -> resultado PUBLISH
Todas las reglas se evalúan para tener diagnóstico completo. El webhook estándar con status REJECTED solo incluye mensajes de problemas bloqueantes.
Reglas BLOCK
Estas reglas impiden la publicación.
| Regla | Campo(s) | Condición que debe cumplirse |
|---|---|---|
| Tipo de propiedad | property_type | Debe ser comercial y resolverse a office, retail, industrial o terrain. Propiedades residenciales se rechazan. |
| Elegibilidad por descripción | description | La descripción no debe indicar contenido residencial no permitido. Si el análisis no puede descartar riesgo residencial, la propiedad se bloquea de forma conservadora. |
| Modalidad | modality | Debe resolverse a renta, venta o ambas. Envíe rent, sale o rent_and_sale. |
| Precio presente | price.rent_price, price.sale_price | Al menos un precio debe ser mayor a 0. |
| Ubicación básica | location.city, location.state | Ciudad y estado deben estar presentes. |
| Código postal resoluble | location.postal_code | Debe existir y poder resolverse durante enriquecimiento. |
| Coordenadas obligatorias | location.latitude, location.longitude | Ambas deben estar presentes y ser distintas de 0. |
| Calle obligatoria | location.street | Debe estar presente junto con las coordenadas. |
| Contacto obligatorio | contact.name, contact.email, contact.phone | Los tres campos deben estar presentes. |
| Número exterior | location.ext_number | Si se envía, debe tener máximo 6 caracteres. |
| Número interior | location.int_number | Si se envía, debe tener máximo 6 caracteres. |
| Contacto bloqueado | contact.email, contact.phone | El agente o contacto no debe estar bloqueado por políticas de calidad o seguridad. |
| Máximo de recámaras | bedrooms | Si se envía, debe ser menor o igual a 20. |
| Área divisible industrial | industrial.min_area_divisible_m2, industrial.max_area_divisible_m2 | Si ambos existen, el máximo debe ser mayor o igual que el mínimo. |
| Altura industrial | industrial.min_height_m, industrial.max_height_m | Si se envía altura máxima, la altura mínima no debe superarla. |
| Luminarias industriales | industrial.luminaries, industrial.luminary_specs | Si luminaries > 0, luminary_specs debe estar presente. |
| Piso de oficina | office.floor_level, office.floor_level_number | Si floor_level = 6, floor_level_number debe estar presente. |
| Rango de precio por m² retail | retail.price_per_sqm_min, retail.price_per_sqm_max | Si ambos existen, el máximo debe ser mayor o igual que el mínimo. |
| Uso de suelo de terreno | terrain.land_use | Para terrenos, recomendamos enviarlo siempre. Si el campo llega vacío en el payload mapeado, bloquea. |
Reglas DRAFT
Estas reglas no bloquean el procesamiento, pero degradan la visibilidad o dejan la propiedad en borrador.
| Regla | Campo(s) | Condición que debe cumplirse |
|---|---|---|
| Fotos mínimas | photos | Debe haber al menos 1 foto para evitar borrador. |
| Calidad de fotos | photos | Recomendamos al menos 3 fotos. Con 1 o 2 fotos, la propiedad puede quedar en borrador o con visibilidad reducida. |
| Coordenadas dentro de México | location.latitude, location.longitude | Las coordenadas deben estar confiablemente dentro de México. Casos inválidos o fuera del país degradan a borrador. |
| Precio mínimo | price.rent_price, price.sale_price | El precio debe estar por encima del mínimo canónico de validación. |
| Precio por m² | price, surface_m2 / land_m2 | El precio por m² debe estar dentro del rango canónico por tipo de propiedad y modalidad. |
| Superficie mínima | surface_m2 / land_m2 | La superficie debe estar por encima del mínimo canónico para el tipo de propiedad. |
| Superficie estadística | surface_m2 / land_m2 | La superficie debe estar dentro del rango canónico por tipo de propiedad. |
Reglas WARN
Estas reglas no afectan la publicación pública, pero quedan registradas para control de calidad.
| Regla | Campo(s) | Condición recomendada |
|---|---|---|
| Amenidades | amenities | Enviar al menos una amenidad reconocible. |
Umbrales
Los rangos de precio por m² y superficie provienen de las reglas canónicas de validación de Spot2. Se evalúan por tipo de propiedad, modalidad y alcance de la superficie disponible.
Los umbrales públicos más relevantes son:
| Umbral | Valor |
|---|---|
| Fotos mínimas para evitar borrador | 1 |
| Fotos recomendadas para evitar borrador | 3 |
| Longitud mínima recomendada de descripción | 20 caracteres |
| Recámaras máximas | 20 |
| Longitud máxima de descripción | 1000 caracteres |
| Número exterior máximo | 6 caracteres |
| Número interior máximo | 6 caracteres |
Rechazo permanente
Si una propiedad falla reglas BLOCK durante 5 ciclos consecutivos sin cambios en los datos, se marca como falla permanente para evitar reintentos completos innecesarios.
La propiedad se sigue revalidando en ciclos posteriores. Si corrige los datos en su CRM y vuelve a pasar QA con resultado PUBLISH o DRAFT, sale de falla permanente y reentra al flujo normal.
Mensajes en el webhook
El webhook estándar solo envía REJECTED cuando hay un rechazo bloqueante. En ese caso, messages contiene mensajes legibles para el integrador y solo incluye reglas BLOCK.
Las reglas DRAFT y la regla WARN de amenidades pueden registrarse internamente o reportarse a sistemas de calidad de Spot2, pero no aparecen como mensajes de rechazo en el webhook estándar.