← Arquitectura por épica

FT-PRD-08 · Plazos de enriquecimiento de Mercaderías hasta la…

Arquitectura del Nuevo PIM por épica · corte del 18-oct-2026

Propuesta del TL: no sustituye la spec de cada épica

Actualizado el 18-oct-2026. Primera versión de la arquitectura de esta épica.

Qué responde. Cómo funciona por dentro FT-PRD-08: 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-PRD-08.json, generada con generar.py; la ficha de la épica es trazabilidad/features/FT-PRD-08-plazos-enriquecimiento-recepcion-pedido.md.

En 30 segundos

En Mercaderías el proveedor tiene hasta que llega su pedido para terminar fotos y atributos, y si lo deja al final la carga cae de golpe en Foro. Esta épica le pone a cada SKU una fecha límite visible, calculada con la recepción esperada del pedido, le avisa antes de que venza y, si vence, pasa el trabajo a Foro con la lista de lo que llegará sin enriquecer para que el estudio lo planee.

  • Módulo dueño: MS-02 Producto. También participan: MS-07 Ingesta de archivos, MS-11 Activos digitales, MS-12 Estudio fotográfico, MS-14 Avisos y ayuda.
  • Etapa 6 · Imágenes. Recibe «PE-6 · SKU asignado» y entrega «PE-7 · Imágenes listas».
  • APIs: construye 2 y usa 4 que construyen otras épicas.
  • Eventos: publica 2 y consume 3.

1. Dónde encaja

Recibe

DeQué
PE-6 · SKU asignadoEl SKU asignado y las tareas de enriquecimiento abiertas en paralelo (foto o carga de imagen y secciones con dueño).
FT-PRD-04 · Propuesta del proveedor de MercaderíasLa fecha del visto bueno de Compras, desde la que corre el plazo mientras no se conozca la recepción del pedido.
FT-FLU-01 · Motor de estados configurable con dos carreteras y reglas…El reloj único de plazos y la tabla DEADLINES del motor.

Entrega

AQué
PE-7 · Imágenes listasLas imágenes del proveedor cargadas antes de su fecha límite: Carga de imagen cerrada a tiempo.
FT-ACT-05 · Servicios para Foro FotográficoLos SKU cuyo plazo venció, con la tarea Foro abierta por rescate y su fecha de recepción esperada, para planear el estudio.

Tareas que abre o cierra: Carga de imagen, Sección con dueño, Foro: muestra, foto y enriquecimiento.

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

Sistemas externos

Nuevo PIM · un solo sistema

Pantallas y sistemas

Personas

Deja el archivo de pedidos con la rec…

OBJECT_FINALIZE

Fechas de pedido por SKU

Plazos de enriquecimiento

Mandar un aviso explícito

Manda el recordatorio con lo que falta
Manda los dos avisos

Avisar que terminó la carga

ASSET_VALIDATED

TASK_CHANGED

TASK_CHANGED

Proveedor

Estudio fotográfico

Entrada Única · Vendor Center

Foro · portal del estudio

BFF del portal

★ MS-02 Producto

MS-07 Ingesta de archivos

MS-11 Activos digitales

MS-12 Estudio fotográfico

MS-14 Avisos y ayuda

Base pim

Eventos

Archivos e imágenes

SAP

Servicio de correo

Contexto de FT-PRD-08

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.

EventosMS-11 Activos digitalesServicio de correoMS-14 Avisos y ayudaEntrada Única · Vendor CenterMS-07 Ingesta de archivosArchivosSAPBase·pimMS-02 ProductoEventosMS-11 Activos digitalesServicio de correoMS-14 Avisos y ayudaEntrada Única · Vendor CenterMS-07 Ingesta de archivosArchivosSAPBase·pimMS-02 ProductoProveedorBFF1. Fija la fecha límite al abrir el enriquecimiento2. Deja el archivo de pedidos con la recepción esperada3. Avisa que llegó un archivo nuevoOBJECT_FINALIZE4. Entrega la recepción esperada de cada SKUPOST /internal/product/sap/purchase-orders5. Recalcula la fecha límite antes de la recepción6. Abre sus SKU por enriquecer7. Pide sus plazos ordenados por vencimientoGET /api/v2/enrichment-deadlines8. Avisa quince días antes que el plazo vencePOST /internal/notifications/messages9. Manda el recordatorio con lo que falta10. Sube las imágenes que le faltaban11. Termina la carga y la validación de cada imagenPOST /api/v2/assets/{assetId}/complete12. Entrega las imágenes validadasASSET_VALIDATED13. Cierra Carga de imagen antes de la fecha límiteProveedorBFF
Flujo principal de FT-PRD-08
Los pasos en texto
PasoDeAQué haceAPI o evento
1MS-02 ProductoBase pimFija la fecha límite al abrir el enriquecimiento—
2SAPArchivos e imágenes (almacén y CDN)Deja el archivo de pedidos con la recepción esperada—
3Archivos e imágenes (almacén y CDN)MS-07 Ingesta de archivosAvisa que llegó un archivo nuevocatalog.egress.files/OBJECT_FINALIZE
4MS-07 Ingesta de archivosMS-02 ProductoEntrega la recepción esperada de cada SKUAPI-02-307
5MS-02 ProductoBase pimRecalcula la fecha límite antes de la recepción—
6ProveedorEntrada Única · Vendor CenterAbre sus SKU por enriquecer—
7Entrada Única · Vendor CenterMS-02 Producto (por el BFF)Pide sus plazos ordenados por vencimientoAPI-02-308
8MS-02 ProductoMS-14 Avisos y ayudaAvisa quince días antes que el plazo venceAPI-14-005
9MS-14 Avisos y ayudaServicio de correoManda el recordatorio con lo que falta—
10ProveedorEntrada Única · Vendor CenterSube las imágenes que le faltaban—
11Entrada Única · Vendor CenterMS-11 Activos digitales (por el BFF)Termina la carga y la validación de cada imagenAPI-11-005
12EventosMS-02 ProductoEntrega las imágenes validadascatalog.asset.changed/ASSET_VALIDATED
13MS-02 ProductoBase pimCierra Carga de imagen antes de la fecha límite—

3.1 Si vence el plazo, Liverpool toma el enriquecimiento

Foro · portal del estudioServicio de correoMS-14 Avisos y ayudaMS-12 Estudio fotográficoEventosBase·pimMS-02 ProductoForo · portal del estudioServicio de correoMS-14 Avisos y ayudaMS-12 Estudio fotográficoEventosBase·pimMS-02 ProductoEstudio fotográficoBFF1. El reloj encuentra un plazo vencido con faltantes2. Cierra Carga de imagen vencida y abre Foro por rescate3. Avisa las tareas que cambiaronTASK_CHANGED4. Entrega la tarea Foro con la recepción esperadaTASK_CHANGED5. Avisa del vencimiento al proveedor y a catalogaciónPOST /internal/notifications/messages6. Manda los dos avisos7. Planea la carga de las próximas semanas8. Pide los SKU vencidos con su recepción esperadaGET /api/v2/enrichment-deadlinesEstudio fotográficoBFF
Si vence el plazo, Liverpool toma el enriquecimiento

4. Si algo sale mal

  • SAP no manda la fecha de recepción del pedido. Vale el plazo de omisión: 30 días desde el visto bueno. La lista marca el SKU como «sin fecha de recepción» para que Compras lo vea; cuando llega la fecha, el plazo se recalcula solo.
  • El pedido cambia de fecha o se cancela. MS-07 entrega el cambio y el plazo se recalcula con la fecha nueva; si se cancela el pedido, regresa al plazo de omisión. El vencimiento de las tareas abiertas se mueve con él y el proveedor recibe aviso si su fecha se adelanta.
  • Vence el plazo con imágenes o secciones pendientes. Carga de imagen se cierra como vencida y se abre Foro por rescate: la responsabilidad pasa a Liverpool, como hoy. El proveedor y catalogación reciben aviso; el producto no se cancela ni se bloquea.
  • El mismo archivo de pedidos llega dos veces. Se aplica una sola vez por su identificador; si llega con otro contenido, responde 409 IDEMPOTENCY_MISMATCH y MS-07 lo deja en revisión.

5. APIs

Las que construye esta épica (2)

POST /internal/product/sap/purchase-orders · Fechas de pedido por SKU
CampoValor
APIAPI-02-307 · MS-02 Producto
Para quéMS-07 entrega, ya leído, el archivo de SAP con el pedido y la recepción esperada de cada SKU; Producto recalcula la fecha límite de enriquecimiento de cada uno y el vencimiento de sus tareas.
En esta épicaRecibir de MS-07 el pedido y la recepción esperada de cada SKU
Quién la llamaMS-07 Ingesta de archivos
PermisoSólo MS-07 (cuenta de servicio)
CabecerasAuthorization, X-Request-Id, Idempotency-Key
Escribe enproducts, tasks, product_receipts, product_outbox
Publicacatalog.product.changed/TASK_CHANGED, catalog.product.changed/PRODUCT_UPDATED

Request

{
  "fileId": "sap-po-20261018-03",
  "records": [
    {
      "sku": "1000004812",
      "purchaseOrder": "4500012345",
      "expectedReceiptAt": "2027-01-20T06:00:00Z",
      "status": "OPEN"
    },
    {
      "sku": "1000004813",
      "purchaseOrder": "4500012346",
      "status": "CANCELLED"
    }
  ]
}

Response · 200

{
  "success": true,
  "data": {
    "fileId": "sap-po-20261018-03",
    "applied": 2,
    "rejected": 0,
    "items": [
      {
        "sku": "1000004812",
        "result": "APPLIED",
        "enrichmentDueAt": "2027-01-16T06:00:00Z",
        "anchor": "RECEPTION"
      },
      {
        "sku": "1000004813",
        "result": "APPLIED",
        "enrichmentDueAt": "2026-11-17T16:20:00Z",
        "anchor": "APPROVAL"
      }
    ]
  }
}

Errores

HTTPCódigoCuándo
409IDEMPOTENCY_MISMATCHEl mismo archivo llega otra vez con contenido distinto
GET /api/v2/enrichment-deadlines · Plazos de enriquecimiento
CampoValor
APIAPI-02-308 · MS-02 Producto
Para quéLista los SKU con su fecha límite de enriquecimiento, de dónde sale (recepción del pedido o visto bueno), qué les falta y si ya vencieron. El proveedor ve los suyos ordenados por vencimiento; catalogación y Foro planean con los vencidos.
En esta épicaPlazos por SKU: fecha límite, de dónde sale, qué falta y si venció
Quién la llamaBFF del portal
PermisoEl proveedor dueño ve los suyos; catalogación, Foro y Compras ven los de su negocio
CabecerasAuthorization, X-Request-Id
Parámetrosbusiness = MER, state = EXPIRED, dueBefore = 2026-11-30T00:00:00Z, sort = dueAt, page = 1, size = 50

Request

null

Response · 200

{
  "success": true,
  "data": {
    "items": [
      {
        "sku": "1000004812",
        "productId": "PRD-0004812",
        "supplierId": "PROV-0001",
        "business": "MER",
        "dueAt": "2026-11-16T06:00:00Z",
        "anchor": "RECEPTION",
        "expectedReceiptAt": "2026-11-20T06:00:00Z",
        "state": "EXPIRED",
        "rescuedBy": "FORO",
        "missing": [
          {
            "task": "CARGA_DE_IMAGEN",
            "detail": "Falta la imagen principal"
          },
          {
            "task": "SECCION_CON_DUENO",
            "detail": "Falta la sección de Sostenibilidad"
          }
        ]
      }
    ],
    "page": 1,
    "size": 50,
    "total": 1
  }
}

Errores

HTTPCódigoCuándo
400VALIDATION_ERRORUn filtro trae un valor que no existe

Las que usa y construye otra épica (4)

Su request y su response están en la página de la épica que la construye.

APIMétodo y rutaPara qué, aquíLa construye
API-14-005POST /internal/notifications/messagesAvisos antes y al vencer el plazoFT-RAC-05 · Estatus del producto y motivos visibles para seller y…
API-11-005POST /api/v2/assets/{assetId}/completeTerminar la carga y validar cada imagen (lo construye el grupo de activos)FT-ACT-02 · Registro, congelado y publicación de URLs de activos
API-02-030GET /api/v2/workflow/config/{type}Leer el plazo de enriquecimiento por negocio (DEADLINES, tarea ENRICHMENT)FT-FLU-01 · Motor de estados configurable con dos carreteras y reglas…
API-02-031POST /api/v2/workflow/config/{type}/plansCambiar ese plazo sin desplegar códigoFT-FLU-01 · Motor de estados configurable con dos carreteras y reglas…

6. Eventos

Publica

EventoCuándoQuién lo consume
catalog.product.changed/TASK_CHANGEDCambia el vencimiento de una tarea, se cierra Carga de imagen o se abre Foro por rescateFT-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-RAC-02, FT-RAC-03, FT-RAC-04, FT-RAC-05, FT-RAC-06
catalog.product.changed/PRODUCT_UPDATEDCambia la fecha límite de enriquecimiento de un SKUFT-ACT-05, FT-ARQ-02, FT-IA-01, FT-PLT-07, FT-PRD-05, FT-RAC-06

Consume

EventoPara quéQuién lo publica
catalog.egress.files/OBJECT_FINALIZEMS-07 lee el archivo de pedidos de SAPD-ARCHIVOS
catalog.asset.changed/ASSET_VALIDATEDMS-02 cierra Carga de imagen cuando están las imágenes que pide la plantillaFT-ACT-01, FT-ACT-02, FT-ACT-03
catalog.product.changed/TASK_CHANGEDMS-12 recibe la tarea Foro abierta por rescate con su recepción esperadaesta misma épica

7. Datos

Cada colección tiene un solo dueño, el único que escribe en ella.

ColecciónDueñoQué guardaEsta épica
productsMS-02La familia del producto con sus variantes, valores, imágenes (URL), clasificaciones, estado, tareas abiertas y rechazos.escribe
tasksMS-02Todo el trabajo asignado: visto bueno, corrección, Gobierno de Datos, foto, secciones, QA, revisión del cambio y repoblamiento.escribe
product_receiptsMS-02El recibo de cada escritura confirmada en el producto (antes operation_receipts).escribe
product_outboxMS-02Los cambios del producto que esperan salir como evento (antes outbox).escribe
productsMS-02La familia del producto con sus variantes, valores, imágenes (URL), clasificaciones, estado, tareas abiertas y rechazos.lee
tasksMS-02Todo el trabajo asignado: visto bueno, corrección, Gobierno de Datos, foto, secciones, QA, revisión del cambio y repoblamiento.lee
product_reference_tablesMS-02Configuración del motor de estados y del matching: transiciones, estados externos y pesos.lee

8. Historias que cubre

HistoriaPrioridadCómo la cubre
FT-PRD-08·H1 · Plazo visibleP1pasos 1, 5, 6, 7; API-02-308, API-02-307
FT-PRD-08·H2 · AlertasP1pasos 8, 9; flujo «Si vence el plazo, Liverpool toma el enriquecimiento»; API-14-005
FT-PRD-08·H3 · Planear la carga de ForoP2flujo «Si vence el plazo, Liverpool toma el enriquecimiento»; API-02-308
FT-PRD-08·H4 · Logística (etapa posterior)P3API-02-308. Fuera: Se difiere a una etapa posterior (DEC-05): la recepción la hace un sistema de logística que no es parte del Nuevo PIM; cuando se decida, consultará la fecha límite y lo que falta por SKU con API-02-308.

9. Decisiones de esta épica

Las tomó el TL como arquitecto; quedan como [Propuesta] hasta que el equipo de la épica las revise.

  • D-PRD-08-1. La fecha límite de enriquecimiento es la recepción esperada del pedido menos 4 días, cuando SAP la manda; mientras no llegue, 30 días desde el visto bueno de Compras. Las dos cifras son por negocio en la tabla DEADLINES (tarea ENRICHMENT), con avisos a 15 y a 3 días. Por qué: Conserva el plazo de hoy, hasta la recepción, y le agrega aviso previo; los 30 días son los mismos del rescate de Carga de imagen en la máquina de estados. Los 4 días salen de la única cifra que dio el taller y se ajustan sin desplegar código. Se apoya en RF-ENR-13, RN-ENR-01, PEN-08, PEN-138.
  • D-PRD-08-2. La fecha del pedido llega de SAP en un archivo que lee MS-07 y entrega a MS-02 por API-02-307; MS-02 no habla con SAP. La interfaz todavía no existe y se acuerda con los dueños de SAP. Por qué: Los externos sólo hablan con los adaptadores; hoy ninguna interfaz del catálogo da al PIM la fecha del pedido ni de la recepción. Se apoya en DUD-23, ADR-12.
  • D-PRD-08-3. Al vencer, Liverpool toma el enriquecimiento: Carga de imagen se cierra como vencida y se abre Foro por rescate. El producto no se cancela ni se bloquea, porque el SKU ya existe y el enriquecimiento va por la segunda carretera. Por qué: Es la regla de hoy (si el proveedor no completa, los SKU pasan al portal de Foro) y respeta que el enriquecimiento no frena el SKU. Se apoya en RN-ENR-01, RN-GEN-03.
  • D-PRD-08-4. El plazo aplica igual sin importar por dónde nació el SKU (Entrada Única, MM41, PLM o B2B) y vive en el producto y en el vencimiento de sus tareas; lo vigila el reloj único de MS-02, sin procesos aparte. Por qué: En Mercaderías y Suburbia el SKU nace por varios caminos; un solo reloj evita trabajos sueltos por sistema. Se apoya en RN-ALT-01, PD-29.
  • D-PRD-08-5. Avisar o impedir la recepción en el CEDIS de un SKU sin enriquecer queda para una etapa posterior. Cuando se decida, el sistema de recepción consultará la fecha límite y lo que falta por SKU con API-02-308; no se construye nada más ahora. Por qué: El taller lo consideró valioso pero lo difirió, y el sistema de recepción no forma parte del Nuevo PIM. Se apoya en DEC-05, RF-ENR-14.

Qué falta decidir

IDQué falta
DUD-23Acordar con los dueños de SAP la interfaz que manda el pedido y la recepción esperada por SKU.
PD-01Es mejora sobre P360, que no gestiona plazos; necesita la excepción firmada de paridad.

También siguen abiertos: PEN-08, Mercaderías confirma los plazos de enriquecimiento (aquí arrancan en recepción menos 4 días o 30 días desde el visto bueno); PEN-138, Aclarar la regla de «4 días antes» que quedó ininteligible en el taller.

Fuentes

  1. [D] trazabilidad/features/FT-PRD-08-plazos-enriquecimiento-recepcion-pedido.md: la ficha de la épica, con sus historias, reglas y bloqueos.
  2. [D] ADR-12 · Un solo sistema: backend compartido y una sola base (sección 3.4).
  3. [D] docs/arquitectura/por-epica/base/: piezas, colecciones, eventos y el hilo de punta a punta.
  4. [D] docs/arquitectura/omega-a-pim-headless/contratos-api.md: convenciones y endpoints de partida.
  5. [D] docs/arquitectura/maquina-de-estados-to-be/propuesta-maquina-de-estados.md §7: estados, tareas y canales.
  6. [I] Las decisiones de la sección 9 son del TL sobre esas fuentes.