Actualizado el 18-oct-2026. Primera versión de la arquitectura de esta épica.
Qué responde. Cómo funciona por dentro FT-RAC-01: qué piezas participan, en qué orden hablan, qué APIs hay que construir con su request y su response, y qué le entrega a la épica siguiente.
Para quién. Los equipos que van a construir la épica, QA y arquitectura.
Estado. [Propuesta] del TL del Nuevo PIM, 18-oct-2026, construida sobre ADR-12. La spec de cada épica dice el qué; estas páginas, el cómo.
Fuente. docs/arquitectura/por-epica/epicas/FT-RAC-01.json, generada con generar.py; la ficha de la épica es trazabilidad/features/FT-RAC-01-motor-de-validacion-en-linea.md.
En 30 segundos
Hoy las validaciones se concentran al final y SAP es el último en decir que falta algo, así que el proveedor retrabaja todo. Esta épica valida cada dato en el momento en que se captura, con el error en el mismo campo, y pone candados que impiden enviar, pedir el SKU o mandar a SAP un producto incompleto. Al enviar, una Validación automática revisa la versión enviada y la deja lista para el visto bueno.
- Módulo dueño: MS-02 Producto. También participan: MS-01 Catálogo, MS-06 Evaluación, MS-08 Adaptadores de salida, MS-14 Avisos y ayuda.
- Etapa 3 · Captura. Recibe «PE-3 · Plantilla asignada» y entrega «PE-4 · Propuesta enviada».
- APIs: construye 3 y usa 10 que construyen otras épicas.
- Eventos: publica 4 y consume 3.
1. Dónde encaja
Recibe
| De | Qué |
|---|---|
| PE-3 · Plantilla asignada | La propuesta en Borrador con plantilla y negocio: la vista efectiva dice qué pedir y qué es obligatorio. |
| FT-PLT-06 · Configuración de atributos por plantilla y por negocio… | La obligatoriedad por negocio en tres niveles y la sección de cada atributo, dentro de la vista efectiva de Catálogo. |
| FT-PLT-07 · Reglas de atributos | Las reglas de calidad y de calculados, cada una con su mensaje, sus campos y su efecto por negocio (bloquea o avisa). |
| FT-PRD-07 · Captura guiada por pasos con los mínimos primero | La propuesta capturada por pasos y enviada por el proveedor o seller. |
| FT-PRD-03 · EAN | Las variantes con EAN válidos y reservados en su negocio. |
| FT-PLT-08 · Títulos, nombres y descripciones de producto | Título, título sin marca y descripción calculados, que los candados del envío y del SKU exigen. |
| FT-ACT-01 · Tipos de activo digital y reglas de imágenes por… | La revisión de imágenes por etapa (API-11-014) que usa el candado de imagen principal antes de enviar y antes de pedir el SKU. |
| FT-IA-01 · Prellenado con IA y validación obligatoria del usuario | La marca de «sugerencias de IA por confirmar» en la propuesta: mientras exista, el candado de envío no pasa. |
Entrega
| A | Qué |
|---|---|
| PE-4 · Propuesta enviada | La propuesta En revisión, con los obligatorios completos y la Validación automática aprobada. |
| FT-PRD-04 · Propuesta del proveedor de Mercaderías | En Mercaderías y Suburbia, la propuesta enviada con los obligatorios completos y la tarea Visto bueno de Compras abierta. |
| FT-RAC-02 · Score de calidad del producto | En Marketplace, la propuesta validada con la tarea Calificación de IA abierta y su categoría ya calculada. |
| FT-CAT-03 · Categorización de productos | La propuesta enviada: el momento en que el agente calcula su categoría web, antes del score y del SKU. |
| FT-PRD-02 · Creación de SKU con SAP | El candado del SKU y de SAP: número de proveedor, grupo de artículos, imagen principal, descripción y datos logísticos, revisados antes de pedir el artículo. |
| FT-FLU-04 · Carga masiva de productos por archivo | Las mismas validaciones de tipo, lista, longitud, obligatorios y reglas de calidad, para cada renglón de la carga masiva. |
| FT-PRD-07 · Captura guiada por pasos con los mínimos primero | La validación en el momento y los candados que dicen qué falta en cada paso de la captura. |
| FT-PLT-09 · Carga masiva de configuración de plantillas con… | El formato común de errores por renglón y campo (fila, columna, código y mensaje), para que la carga reporte igual que la validación en línea. |
| FT-PRD-09 · Contrato de propuestas con Entrada Única | La validación en el momento, por campo y por variante, que la pantalla muestra tal cual. |
Cambios de estado que hace
| Transición | De → a | Cuándo |
|---|---|---|
| T03 | Borrador → En revisión | Envía con los obligatorios completos. |
| T04 | En revisión → Borrador | Rechazo de Compras o de las reglas; se abre Corrección. |
Tareas que abre o cierra: Validación automática, Corrección, Gobierno de Datos.
2. Diagrama de contexto
Quién participa y cómo se conecta. Las pantallas llegan por el BFF del portal, que valida el token y compone; cada módulo vuelve a validar el token y decide sus permisos con los roles de MS-13.
🟩 Verde: nuevo, se construye · 🟦 Azul: ya existe y se queda, se reutiliza su código · 🟧 Naranja: temporal o se retira (se apaga en R3) · ⬜ Gris: sistema externo · ★ módulo dueño
3. Diagrama de flujo
El camino principal, paso por paso. Cuando una pantalla llama a un módulo se ven dos flechas: la pantalla al BFF y el BFF al módulo. Los eventos salen del outbox del módulo después de guardar; quien los consume ignora los repetidos.
Los pasos en texto
| Paso | De | A | Qué hace | API o evento |
|---|---|---|---|---|
| 1 | Proveedor | Entrada Única · Vendor Center | Captura un dato en un campo del paso | — |
| 2 | Entrada Única · Vendor Center | MS-02 Producto (por el BFF) | Revisa los valores sin guardar nada | API-02-012 |
| 3 | MS-02 Producto | MS-01 Catálogo | Lee la vista efectiva de su plantilla y negocio | API-01-028 |
| 4 | MS-02 Producto | MS-01 Catálogo | Lee las reglas de calidad vigentes y su efecto | API-01-016 |
| 5 | Proveedor | Entrada Única · Vendor Center | Corrige el campo marcado y termina la captura | — |
| 6 | Entrada Única · Vendor Center | MS-02 Producto (por el BFF) | Pregunta qué candado falta para enviar | API-02-101 |
| 7 | Entrada Única · Vendor Center | MS-02 Producto (por el BFF) | Pide el plan de envío | API-02-028 |
| 8 | Entrada Única · Vendor Center | MS-02 Producto (por el BFF) | Confirma el envío | API-02-057 |
| 9 | MS-02 Producto | Base pim | Pasa a En revisión y abre la Validación automática | — |
| 10 | MS-02 Producto | Base pim | Revalida la versión enviada y recalcula título y descripción | — |
| 11 | MS-02 Producto | MS-06 Evaluación | Reevalúa si cambió el EAN, la marca o el modelo | API-06-001 |
| 12 | MS-02 Producto | Base pim | Cierra la validación y abre visto bueno o calificación | — |
| 13 | MS-02 Producto | Eventos | Avisa que la propuesta quedó En revisión | catalog.product.changed/STATUS_CHANGED |
| 14 | MS-02 Producto | Eventos | Avisa las tareas que se cerraron y abrieron | catalog.product.changed/TASK_CHANGED |
3.1 Si las reglas rechazan la propuesta enviada
3.2 Candado antes del SKU y antes de SAP
3.3 Carga masiva con las mismas reglas
4. Si algo sale mal
- Catálogo (MS-01) no responde al validar. MS-02 valida con la vista efectiva y las reglas que tiene en caché, con su versión; si no tiene caché responde 503 DEPENDENCY_UNAVAILABLE y no guarda nada. El autoguardado conserva lo tecleado (FT-PRD-07).
- La plantilla o una regla cambió entre la vista previa y la confirmación. La confirmación responde 409 VERSION_CONFLICT porque las versiones de origen del plan ya no coinciden; el portal vuelve a revisar y el proveedor ve los campos nuevos.
- Una regla falla en la Validación automática después de enviar. La propuesta regresa a Borrador (T04) con una tarea de Corrección y el motivo por campo; el proveedor recibe un aviso y, al reenviar, la validación corre otra vez.
- Evaluación (MS-06) no responde durante la Validación automática. La tarea sigue abierta y MS-02 reintenta con espera creciente; el proveedor ve «Enviada, en validación». A las 4 horas sin respuesta, la tarea pasa a la cola de Gobierno de Datos para revisarla a mano.
- A una propuesta aceptada le falta un dato del candado del SKU. El plan de aceptar sale bloqueado con «te hacen falta estos datos»; no se pide el artículo a SAP. Si la descripción está vacía se recalcula; si aun así falta un dato maestro se abre Gobierno de Datos.
5. APIs
Las que construye esta épica (3)
POST /api/v2/products/{id}/values/plans · Revisar valores en el momento
| Campo | Valor |
|---|---|
| API | API-02-012 · MS-02 Producto |
| Para qué | Es la validación en el momento: revisa hasta 50 valores de un producto o de una variante contra la vista efectiva de su plantilla y negocio y contra las reglas de calidad, sin escribir nada, y responde por campo qué está mal, qué falta para cerrar el paso, qué avisos hay y cómo quedan los calculados (título, descripción, margen). Si nada bloquea, deja el plan listo para confirmar. |
| En esta épica | La validación en el momento: errores por campo, faltantes del paso, avisos y calculados |
| Quién la llama | BFF del portal, Gateway de terceros /partner/v1 |
| Permiso | VAL-E sobre los grupos de atributos que su rol edita; el proveedor o seller dueño mientras la propuesta esté en Borrador |
| Cabeceras | Authorization, X-Request-Id, Idempotency-Key, If-Match |
| Parámetros | id = PRD-0004812 |
| Publica | catalog.product.changed/PRODUCT_UPDATED, catalog.product.changed/EAN_CHANGED |
| También la usan | FT-ACT-06, FT-ARQ-01, FT-FLU-02, FT-IA-01, FT-IA-03, FT-IA-05, FT-PLT-06, FT-PLT-07, FT-PLT-08, FT-PRD-01, FT-PRD-03, FT-PRD-05, FT-PRD-07, FT-PRD-09, FT-PRD-10, FT-RAC-02, FT-RAC-03 |
Request
{
"step": "DATOS_BASICOS",
"values": [
{
"attributeId": "MARCA",
"code": "MARCA01"
},
{
"attributeId": "TIPO_PRODUCTO_SAP",
"code": "LICUADORA"
},
{
"attributeId": "MODELO_COMERCIAL",
"text": "LX-200"
},
{
"attributeId": "ANCHO_SIN_EMPAQUE",
"value": "21",
"unit": "cm"
},
{
"attributeId": "ANCHO_CON_EMPAQUE",
"value": "19",
"unit": "cm"
},
{
"attributeId": "POTENCIA_W",
"value": "6OO"
},
{
"attributeId": "PRECIO_VENTA",
"value": "899.00"
},
{
"attributeId": "PRECIO_COMPRA",
"value": "540.00"
},
{
"attributeId": "INDICADOR_IMPUESTO",
"code": "G5"
}
]
}
Response · 200
{
"success": true,
"data": {
"planId": null,
"canApply": false,
"sourceVersions": {
"templateView": "EU4-0412@14",
"rules": 31
},
"fieldErrors": [
{
"path": "/values/POTENCIA_W",
"code": "NOT_A_NUMBER",
"message": "Captura sólo números",
"effect": "BLOCK"
},
{
"path": "/values/ANCHO_CON_EMPAQUE",
"code": "RULE_FAILED",
"rule": "LOGISTICA-ANCHO",
"message": "El ancho con empaque debe ser mayor que el ancho sin empaque",
"fields": [
"ANCHO_SIN_EMPAQUE",
"ANCHO_CON_EMPAQUE"
],
"effect": "BLOCK"
}
],
"missingInStep": [
{
"attributeId": "NUM_PROVEEDOR",
"label": "Número de proveedor",
"layer": "DATO_MAESTRO"
}
],
"warnings": [
{
"path": "/values/MODELO_COMERCIAL",
"code": "TITLE_GENERIC",
"message": "Tu título queda genérico: agrega la capacidad",
"effect": "WARN"
}
],
"calculated": {
"productName": "Licuadora MARCA01 LX-200",
"titleWithoutBrand": "Licuadora LX-200",
"MARGEN": {
"value": "24.75",
"unit": "%",
"ruleId": "rul-000301"
}
},
"stepComplete": false
}
}
Errores
| HTTP | Código | Cuándo |
|---|---|---|
| 422 | VALIDATION_ERROR | Un atributo no está en la vista efectiva de la plantilla, o falta su unidad |
| 403 | AUTHORIZATION_ERROR | El campo es de un grupo que su rol no edita (por ejemplo, el EAN para quien no es Gobierno de Datos) |
| 409 | NOT_EDITABLE_IN_STATUS | La propuesta ya no está en Borrador y quien llama no es dueño del dato |
| 409 | VERSION_CONFLICT | Cambió el producto o la vista efectiva de su plantilla |
| 503 | DEPENDENCY_UNAVAILABLE | No hay vista efectiva en caché y Catálogo no responde; no se guarda nada |
GET /api/v2/products/{id}/gates · Candados: qué le falta al producto
| Campo | Valor |
|---|---|
| API | API-02-101 · MS-02 Producto |
| Para qué | Dice, para un candado (enviar, pedir el SKU, mandar a SAP o publicar), si el producto lo pasa y qué le falta, agrupado por sección de la plantilla y con el avance de cada sección. El motor usa la misma revisión antes de cada transición. |
| En esta épica | Saber qué falta para pasar un candado: enviar, SKU, SAP o publicar |
| Quién la llama | BFF del portal, Gateway de terceros /partner/v1 |
| Permiso | ENT-L; el proveedor o seller dueño |
| Cabeceras | Authorization, X-Request-Id |
| Parámetros | id = PRD-0004812, gate = SUBMIT |
| También la usan | FT-ACT-06, FT-FLU-02, FT-IA-01, FT-PRD-07 |
Request
null
Response · 200
{
"success": true,
"data": {
"productId": "PRD-0004812",
"gate": "SUBMIT",
"passes": false,
"version": 9,
"sections": [
{
"section": "DATOS_BASICOS",
"step": 1,
"ownerArea": "COMPRAS",
"mandatory": {
"present": 9,
"total": 10
},
"missing": [
{
"attributeId": "NUM_PROVEEDOR",
"label": "Número de proveedor",
"layer": "DATO_MAESTRO"
}
]
},
{
"section": "VARIANTES_LOGISTICA",
"step": 3,
"ownerArea": "LOGISTICA",
"mandatory": {
"present": 12,
"total": 12
},
"missing": []
}
],
"locks": [
{
"lock": "AL_MENOS_UNA_VARIANTE",
"passes": true
},
{
"lock": "IMAGEN_PRINCIPAL",
"passes": false,
"message": "Falta la imagen principal"
}
],
"message": "Te hacen falta estos datos: número de proveedor e imagen principal"
}
}
Errores
| HTTP | Código | Cuándo |
|---|---|---|
| 400 | VALIDATION_ERROR | El candado no existe (SUBMIT, SKU, SAP o PUBLISH) |
| 404 | NOT_FOUND | El producto no existe o no es visible para quien llama |
POST /api/v2/products/bulk-edit/plans · Edición masiva de un atributo
| Campo | Valor |
|---|---|
| API | API-02-013 · MS-02 Producto |
| Para qué | Prepara el mismo cambio de un atributo (poner, reemplazar o vaciar, o sólo donde está vacío) en hasta 100 productos y corre en cada uno las mismas reglas del motor de validación, sin escribir nada. |
| En esta épica | Edición masiva con las mismas reglas del motor |
| Quién la llama | BFF del portal |
| Permiso | VAL-E sobre el grupo del atributo |
| Cabeceras | Authorization, X-Request-Id, Idempotency-Key |
| Publica | catalog.product.changed/PRODUCT_UPDATED |
Request
{
"items": [
{
"productId": "PRD-0004812",
"version": 7
},
{
"productId": "PRD-0004813",
"version": 3
}
],
"attributeId": "GARANTIA_MESES",
"op": "SET",
"value": {
"value": "12"
},
"onlyEmpty": true
}
Response · 200
{
"success": true,
"data": {
"planId": "pln-0b3f55",
"expiresAt": "2026-10-18T16:55:00Z",
"summary": {
"ok": 1,
"skipped": 1,
"blocked": 0
},
"items": [
{
"productId": "PRD-0004812",
"result": "OK",
"before": null,
"after": "12"
},
{
"productId": "PRD-0004813",
"result": "SKIPPED",
"reason": "Ya tiene valor y se pidió sólo vacíos"
}
],
"applyUrl": "/api/v2/product-plans/pln-0b3f55/apply"
}
}
Errores
| HTTP | Código | Cuándo |
|---|---|---|
| 400 | VALIDATION_ERROR | Más de 100 productos |
| 422 | VALIDATION_ERROR | Se intenta vaciar un dato de candado (número de proveedor, grupo de artículos) en una propuesta ya enviada |
| 409 | VERSION_CONFLICT | Algún producto cambió después de seleccionarlo |
Las que usa y construye otra épica (10)
Su request y su response están en la página de la épica que la construye.
| API | Método y ruta | Para qué, aquí | La construye |
|---|---|---|---|
| API-01-028 | GET /api/v2/taxonomies/PRODUCT/nodes/{id}/effective | Leer la vista efectiva de la plantilla por negocio | FT-PLT-06 · Configuración de atributos por plantilla y por negocio… |
| API-01-016 | GET /api/v2/rules?type= | Leer las reglas de calidad con su efecto por negocio | FT-PLT-07 · Reglas de atributos |
| API-01-017 | POST /api/v2/rules/plans | Que Gobierno de Producto cree o cambie una regla con su mensaje, sus campos y su efecto | FT-PLT-07 · Reglas de atributos |
| API-02-028 | POST /api/v2/workflow/actions/plans | Pedir el plan de envío o de aceptación | FT-FLU-01 · Motor de estados configurable con dos carreteras y reglas… |
| API-02-057 | POST /api/v2/product-plans/{planId}/apply | Confirmar el envío | FT-FLU-01 · Motor de estados configurable con dos carreteras y reglas… |
| API-06-001 | POST /api/v2/evaluations | Reevaluar lista negra y coincidencias si cambió la identidad del producto | FT-REF-02 · Blacklist de Marketplace por marca, negocio y grupo de… |
| API-02-055 | GET /internal/product/products/{id}/sap-snapshot | Revisar el candado de SAP al armar los 4 archivos | FT-PRD-02 · Creación de SKU con SAP |
| API-02-046 | POST /api/v2/product-imports | Validar una carga masiva renglón por renglón con el mismo motor | FT-FLU-04 · Carga masiva de productos por archivo |
| API-02-047 | POST /api/v2/product-imports/{id}/apply | Confirmar una carga masiva | FT-FLU-04 · Carga masiva de productos por archivo |
| API-02-048 | GET /api/v2/product-imports/{id} | Ver el resultado por renglón de una carga masiva | FT-FLU-04 · Carga masiva de productos por archivo |
6. Eventos
Publica
| Evento | Cuándo | Quién lo consume |
|---|---|---|
catalog.product.changed/STATUS_CHANGED | La propuesta pasa a En revisión al enviar, o regresa a Borrador porque una regla falló | FT-ACT-05, FT-ARQ-02, FT-CAT-05, FT-FLU-01, FT-IA-04, FT-PRD-02, FT-PRD-04, FT-PRD-06, FT-PRD-10, FT-RAC-03, FT-RAC-05, FT-RAC-06 |
catalog.product.changed/TASK_CHANGED | Se abre y se cierra la Validación automática, y se abre Visto bueno de Compras, Calificación de IA, Corrección o Gobierno de Datos | FT-ACT-05, FT-ACT-06, FT-ARQ-02, FT-CAT-06, FT-FLU-01, FT-IA-06, FT-PRD-02, FT-PRD-05, FT-PRD-06, FT-PRD-07, FT-PRD-08, FT-RAC-02, FT-RAC-03, FT-RAC-04, FT-RAC-05, FT-RAC-06 |
catalog.product.changed/REJECTION_ADDED | La Validación automática rechaza con motivo por campo | FT-INT-07, FT-PRD-04, FT-PRD-05, FT-PRD-10, FT-RAC-03, FT-RAC-05, FT-RAC-06 |
catalog.product.changed/PRODUCT_UPDATED | Se guardan valores o la validación recalcula título y descripción | FT-ACT-05, FT-ARQ-02, FT-IA-01, FT-PLT-07, FT-PRD-05, FT-RAC-06 |
Consume
| Evento | Para qué | Quién lo publica |
|---|---|---|
catalog.governance.changed/RULE_CHANGED | MS-02 refresca las reglas de calidad que tiene en caché | FT-CAT-04, FT-PLT-07, FT-REF-02 |
catalog.governance.changed/TEMPLATE_VIEW_CHANGED | MS-02 refresca la vista efectiva y recalcula la completitud de las propuestas abiertas de esa plantilla | FT-IA-03, FT-MIG-02, FT-PLT-04, FT-PLT-05, FT-PLT-06, FT-PLT-09 |
catalog.product.changed/REJECTION_ADDED | MS-14 avisa al proveedor qué campos corregir | esta misma épica |
7. Datos
Cada colección tiene un solo dueño, el único que escribe en ella.
| Colección | Dueño | Qué guarda | Esta épica |
|---|---|---|---|
products | MS-02 | La familia del producto con sus variantes, valores, imágenes (URL), clasificaciones, estado, tareas abiertas y rechazos. | escribe |
tasks | MS-02 | Todo el trabajo asignado: visto bueno, corrección, Gobierno de Datos, foto, secciones, QA, revisión del cambio y repoblamiento. | escribe |
product_jobs | MS-02 | Trabajos asíncronos: cargas masivas de productos, edición masiva y publicación. | escribe |
product_receipts | MS-02 | El recibo de cada escritura confirmada en el producto (antes operation_receipts). | escribe |
product_outbox | MS-02 | Los cambios del producto que esperan salir como evento (antes outbox). | escribe |
template_views | MS-01 | La vista efectiva ya resuelta por plantilla y negocio: qué atributos pide y cuáles son obligatorios. | lee |
governance_rules | MS-01 | Reglas de captura y clasificación: marcas por plantilla, grupo de artículo a plantilla, alcance del proveedor y lista negra de Marketplace. | lee |
reference_tables | MS-01 | Las entradas de los diccionarios: tallas, colores, impuestos, excepciones y demás datos de referencia. | lee |
product_reference_tables | MS-02 | Configuración del motor de estados y del matching: transiciones, estados externos y pesos. | lee |
validation_results | MS-06 | El resultado de cada evaluación: lista negra, coincidencias con su confianza y score. | lee |
8. Historias que cubre
| Historia | Prioridad | Cómo la cubre |
|---|---|---|
| FT-RAC-01·H1 · Ver el error en el campo en el momento en que lo capturo | P1 | pasos 1, 2, 3, 5; flujo «Carga masiva con las mismas reglas»; API-02-012 |
| FT-RAC-01·H2 · Un candado que impida generar el SKU sin número de proveedor, grupo de… | P1 | flujo «Candado antes del SKU y antes de SAP»; API-02-101, API-02-055 |
FT-RAC-01·H3 · Que el nuevo PIM aplique las validaciones de CreateProposal contra la vista… | P1 | pasos 2, 3; API-02-012 |
| FT-RAC-01·H4 · Reglas de calidad que bloqueen guardar o avanzar, con mensaje y campos | P1 | pasos 4; API-01-016, API-01-017 |
| FT-RAC-01·H5 · Fijar cuánto se valida antes de publicar y cuánto se corrige después | P2 | pasos 4; API-01-016 |
9. Decisiones de esta épica
Las tomó el TL como arquitecto; quedan como [Propuesta] hasta que el equipo de la épica las revise.
- D-RAC-01-1. Un solo motor de validación. Las reglas y la obligatoriedad las define Catálogo; las corre un mismo evaluador dentro de los planes de MS-02 en todas las puertas (captura, edición masiva, carga masiva y API de terceros), y Catálogo usa ese evaluador en su vista previa de calculados (API-01-203) cuando todavía no hay propuesta. No hay un servicio de validación aparte. Por qué: Las mismas reglas para todas las puertas, con un dueño por regla; ADR-12 responde PD-05 y DEC-PRD-08 ya ponía estas validaciones en catalog-product. MS-02 lee las reglas con caché, así que no depende de Catálogo en cada tecla. Se apoya en DEC-PRD-08, PD-05, ADR-12.
- D-RAC-01-2. La validación en el momento es el plan de valores (API-02-012): revisa sin escribir y responde errores por campo, lo que falta para cerrar el paso, avisos y calculados. Un valor inválido no se guarda; un obligatorio vacío sí deja guardar, pero no cerrar el paso ni enviar. Por qué: El error se ve en el campo donde se captura y no se acumula al final; guardar con faltantes permite saltar opcionales y regresar. Se apoya en RN-GEN-04, RF-CAL-03, RN-CAL-08.
- D-RAC-01-3. La Validación automática es una tarea real que atiende MS-02 al enviar: revalida la versión congelada, recalcula los calculados, pide al agente la categoría web y reevalúa en MS-06 si cambió el EAN, la marca o el modelo desde la identificación. Si pasa, abre Visto bueno de Compras (Mercaderías y Suburbia) o Calificación de IA (Marketplace); si falla, T04 con Corrección. Por qué: Lo que se capturó después de la identificación puede cambiar la identidad del producto, y el visto bueno sólo debe recibir propuestas completas. Se apoya en PD-29, RN-CAL-07, RN-CAT-08.
- D-RAC-01-4. Cuatro candados con nombre sobre el mismo motor: SUBMIT (enviar), SKU (pedir el artículo), SAP (armar los archivos) y PUBLISH (aprobar). El del SKU exige número de proveedor en Mercaderías, grupo de artículos, imagen principal, descripción y datos logísticos. Un dato de candado no se puede vaciar después de enviar por ninguna vía: plan, carga masiva o migración. Por qué: Hoy se pierden obligatorios entre la aprobación y el envío (los ~200 SKU de Esfera); el candado como red de seguridad en cada salida evita que vuelva a pasar. Se apoya en RF-CAL-05, RN-ALT-04, DEC-71.
- D-RAC-01-5. Cada regla trae su efecto por negocio (bloquea o avisa) en Catálogo. Lo que avisa se guarda con una nota y baja el score, sin cola manual de QA. Arranque: Mercaderías y Suburbia bloquean lo de creación; Marketplace bloquea lo que SAP exige y avisa lo demás. Por qué: La política por negocio sigue abierta; este arranque no frena al seller más de lo que SAP exige y conserva el control de Mercaderías. Se apoya en PEN-03, RF-CAL-04, RN-CAL-07.
- D-RAC-01-6. Las validaciones de CreateProposal (coherencia logística, proveedor válido para catalogar, avance de P1 a P2, campos de PP33) se reimplementan en código de MS-02 con parámetros de los diccionarios de Catálogo, y se prueban contra una muestra de 1,000 productos antes del corte. Por qué: Paridad con lo que hoy valida P360 mientras el lenguaje de reglas configurable llega después. Se apoya en DEC-PLT-08, DEC-PRD-08.
- D-RAC-01-7. Lo migrado no se bloquea por obligatorios nuevos: los candados aplican a lo que se crea o se edita. Un migrado que se edita ve los obligatorios nuevos como aviso hasta que Gobierno de Producto los vuelva bloqueo. Por qué: Endurecer la salida de golpe bloquearía productos que hoy se venden; la salida no debe exigir más que P360. Se apoya en RF-MIG-02, RSG-01.
- D-RAC-01-8. Los motivos que ve el seller después (por qué un SKU no se creó o no se ve, API-02-303 de FT-RAC-05) salen del mismo veredicto del motor: hay una sola lista de reglas. Por qué: Si el motivo visible y el candado se calcularan por separado, dirían cosas distintas. Se apoya en RF-PUB-09, FT-RAC-05.
Qué falta decidir
Nada propio de esta épica: lo que sigue abierto está en las decisiones del programa.
También siguen abiertos: PEN-01, Firmar con negocio y sistemas las listas de obligatorios por negocio y por destino que alimentan la vista efectiva; PEN-03, Ratificar la política por negocio (prevenir antes o corregir después); aquí arranca como en D-RAC-01-5; PEN-70, Encontrar la causa de la pérdida de obligatorios entre aprobación y envío, para probar que el candado la cubre; PEN-63, Depurar la matriz de validaciones de MM41 que se replica como candado de SAP.
Fuentes
- [D]
trazabilidad/features/FT-RAC-01-motor-de-validacion-en-linea.md: la ficha de la épica, con sus historias, reglas y bloqueos. - [D] ADR-12 · Un solo sistema: backend compartido y una sola base (sección 3.4).
- [D]
docs/arquitectura/por-epica/base/: piezas, colecciones, eventos y el hilo de punta a punta. - [D]
docs/arquitectura/omega-a-pim-headless/contratos-api.md: convenciones y endpoints de partida. - [D]
docs/arquitectura/maquina-de-estados-to-be/propuesta-maquina-de-estados.md§7: estados, tareas y canales. - [I] Las decisiones de la sección 9 son del TL sobre esas fuentes.