← Arquitectura por épica

FT-INT-04 · Catálogos maestros, precios y costos desde SAP/S4H

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-INT-04: 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-INT-04.json, generada con generar.py; la ficha de la épica es trazabilidad/features/FT-INT-04-catalogos-precios-costos-sap.md.

En 30 segundos

SAP es el dueño de los proveedores, la jerarquía comercial, las listas de valores de sus características y los precios y costos. Esta épica hace que esos archivos entren solos al PIM: la ingesta (MS-07) los lee al llegar, guarda una copia, salta lo que no cambió y entrega cada registro a su dueño, Catálogo o Producto, dejando visible cada valor que se rechazó.

  • Módulo dueño: MS-07 Ingesta de archivos. También participan: MS-01 Catálogo, MS-02 Producto, MS-14 Avisos y ayuda.
  • Etapa 5 · SKU en SAP. Recibe «PE-C · Catálogo vigente» y entrega «PE-C · Catálogo vigente».
  • APIs: construye 0 y usa 8 que construyen otras épicas.
  • Eventos: publica 5 y consume 2.

1. Dónde encaja

Recibe

DeQué
PE-C · Catálogo vigenteEl catálogo vigente: las listas por código con su equivalencia por sistema y los diccionarios de proveedores, grupos e impuestos donde aterriza lo que manda SAP.
FT-REF-01 · Datos de referencia administrablesLas tablas de referencia de proveedores, grupos de artículo e impuestos, con SAP como dueño y la copia de consulta en MS-01.
FT-PLT-03 · Listas de valores y modelo canónico con equivalencias por…Las listas de valores por código, separadas por ECC y S4H, que reciben los valores de SAP por API-01-050.

Entrega

AQué
PE-C · Catálogo vigenteListas, proveedores con sus grupos autorizados y jerarquía comercial de ECC y S4H al día en el catálogo vigente.
FT-PLT-03 · Listas de valores y modelo canónico con equivalencias por…Los valores de las listas de SAP ya leídos del archivo, por grupo de artículos y separados por ECC y S4H.
FT-REF-01 · Datos de referencia administrablesLos proveedores de SAP con sus grupos de artículos autorizados y los catálogos de marcas, grupos e impuestos, ya leídos del archivo.
FT-CAT-04 · Clasificación SAP derivadaLa jerarquía comercial de ECC y S4H: dirección corporativa, dirección, sección, grupo de artículos y grupo con producto.
FT-PLT-05 · Taxonomía de plantillas por familia, metadatos de…La jerarquía de SAP leída del archivo, que entra como árbol de grupos de artículo por API-01-051.
FT-PRD-02 · Creación de SKU con SAPProveedor, grupo de artículos, impuesto, precio y costo vigentes para armar los 4 TXT de alta en SAP.
FT-INT-06 · Avisos de cambios a Entrada Única y consumidoresLos precios, costos y EAN de SAP ya aplicados en el artículo o el producto, de donde sale el aviso datosVenta mientras Entrada Única viva.
FT-INT-03 · Entrada de SKUs creados en SAPLa jerarquía y los proveedores de SAP ya cargados, con los que se clasifica cada SKU que llega en el 122.
FT-MIG-04 · Convivencia P360 ↔ nuevo PIMLa lectura de cada interfaz de datos maestros lista para encenderse en el corte, cuando P360 deje de leer esas carpetas.

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 por transferencia de archivos el archivo de listas de…
Deja el archivo de EAN por grupo o su…

OBJECT_FINALIZE

Listas que manda SAP
Proveedores que manda SAP
y 1 más

LOV_VALUE_CHANGED

Recibir precios y costos de SAP
Recibir altas y bajas de EAN de SAP

PRODUCT_UPDATED
EAN_CHANGED

SAP_MASTER_DATA_CHANGED

SAP_MASTER_DATA_CHANGED

Registros de SAP y su resultado
Reprocesar lo fallido de un archivo

Administración del catálogo

Entrada Única · Vendor Center

Archivos e imágenes

Eventos

Base pim

★ MS-07 Ingesta de archivos

MS-01 Catálogo

MS-02 Producto

MS-14 Avisos y ayuda

BFF del portal

SAP

Contexto de FT-INT-04

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.

MS-02 ProductoEventosMS-01 CatálogoBase·pimMS-07 Ingesta de archivosArchivosSAPMS-02 ProductoEventosMS-01 CatálogoBase·pimMS-07 Ingesta de archivosArchivosSAP1. Deja por transferencia de archivos el archivo de listas de cada noche2. Avisa que llegó un archivo de SAPOBJECT_FINALIZE3. Registra el archivo con su copia y su huella4. Salta el archivo si es igual al anterior5. Entrega los valores por lista, separados por ECC y S4HPOST /internal/governance/sap/lov6. Avisa sólo los valores que cambiaronLOV_VALUE_CHANGED7. Entrega proveedores con sus grupos autorizadosPOST /internal/governance/sap/suppliers8. Entrega la jerarquía comercial de ECC y S4HPOST /internal/governance/sap/hierarchy9. Entrega el costo y el precio de cada SKUPOST /internal/product/sap/prices10. Avisa el cambio de costo y precioPRODUCT_UPDATED11. Guarda el resultado de cada registro12. Cierra el archivo y avisa su resumenSAP_MASTER_DATA_CHANGED
Flujo principal de FT-INT-04
Los pasos en texto
PasoDeAQué haceAPI o evento
1SAPArchivos e imágenes (almacén y CDN)Deja por transferencia de archivos el archivo de listas de cada noche—
2Archivos e imágenes (almacén y CDN)MS-07 Ingesta de archivosAvisa que llegó un archivo de SAPcatalog.egress.files/OBJECT_FINALIZE
3MS-07 Ingesta de archivosBase pimRegistra el archivo con su copia y su huella—
4MS-07 Ingesta de archivosBase pimSalta el archivo si es igual al anterior—
5MS-07 Ingesta de archivosMS-01 CatálogoEntrega los valores por lista, separados por ECC y S4HAPI-01-050
6MS-01 CatálogoEventosAvisa sólo los valores que cambiaroncatalog.governance.changed/LOV_VALUE_CHANGED
7MS-07 Ingesta de archivosMS-01 CatálogoEntrega proveedores con sus grupos autorizadosAPI-01-052
8MS-07 Ingesta de archivosMS-01 CatálogoEntrega la jerarquía comercial de ECC y S4HAPI-01-051
9MS-07 Ingesta de archivosMS-02 ProductoEntrega el costo y el precio de cada SKUAPI-02-052
10MS-02 ProductoEventosAvisa el cambio de costo y preciocatalog.product.changed/PRODUCT_UPDATED
11MS-07 Ingesta de archivosBase pimGuarda el resultado de cada registro—
12MS-07 Ingesta de archivosEventosCierra el archivo y avisa su resumencatalog.sap.inbound/SAP_MASTER_DATA_CHANGED

3.1 Si SAP manda un valor que no cabe

Entrada Única · Vendor CenterMS-14 Avisos y ayudaEventosBase·pimMS-01 CatálogoMS-07 Ingesta de archivosEntrada Única · Vendor CenterMS-14 Avisos y ayudaEventosBase·pimMS-01 CatálogoMS-07 Ingesta de archivosAdministración del catálogoBFF1. Entrega una lista con un valor inválidoPOST /internal/governance/sap/lov2. Guarda el rechazo IllegalLOVValue en su registro3. Avisa el resumen con sus rechazosSAP_MASTER_DATA_CHANGED4. Entrega el resumen para avisarSAP_MASTER_DATA_CHANGED5. Abre el aviso de valores rechazados6. Ve cada valor rechazado con su motivoGET /api/v2/sap-ingest/records?interface=&result=&key=&notAlive=7. Reprocesa lo fallido cuando SAP corrigePOST /api/v2/sap-ingest/files/{id}/reprocessAdministración del catálogoBFF
Si SAP manda un valor que no cabe

3.2 EAN por grupo de artículo

Base·pimEventosMS-02 ProductoMS-07 Ingesta de archivosArchivosSAPBase·pimEventosMS-02 ProductoMS-07 Ingesta de archivosArchivosSAP1. Deja el archivo de EAN por grupo o su delta2. Avisa que llegó el archivo de EANOBJECT_FINALIZE3. Entrega cada relación SKU y EAN en ordenPOST /internal/product/sap/ean4. Avisa el EAN que cambióEAN_CHANGED5. Guarda el resultado, gana la última acción
EAN por grupo de artículo

4. Si algo sale mal

  • SAP manda un valor que no cabe en la lista (IllegalLOVValue). Ese valor no entra y los demás del archivo sí. El rechazo queda con su registro en el monitor de MS-07 y Gobierno de Producto recibe el aviso con el resumen; cuando SAP corrige, se reprocesa sólo lo fallido.
  • SAP vuelve a mandar el mismo catálogo completo. MS-07 compara la huella con la del último archivo de esa interfaz y no lo reprocesa. Si cambió, el dueño sólo escribe y avisa lo que de verdad cambió.
  • El 142 trae un SKU que el PIM no conoce. Ese registro queda rechazado con SKU_NOT_FOUND y aparece en el monitor; si el SKU llega después por el 122, Gobierno de Datos reprocesa el registro sin pedir otro archivo.
  • No llega a su hora el archivo esperado. MS-07 compara contra el calendario de cada interfaz (listas a las 23:00, costos a la 1:30 y precios a las 2:00) y lo marca faltante en su monitor para que Gobierno de Datos lo pida a SAP. Nada se rellena con el día anterior.
  • MS-01 o MS-02 no responden. El lote se reintenta hasta 10 veces con espera creciente sin perder el orden del archivo; después el registro queda fallido y se reprocesa desde el monitor.

5. APIs

Las que construye esta épica (0)

Ninguna: todo lo que usa ya lo construye otra épica.

Las que usa y construye otra épica (8)

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-01-050POST /internal/governance/sap/lovEntregar los valores de las listas de SAP, por lista y por sistemaFT-PLT-03 · Listas de valores y modelo canónico con equivalencias por…
API-01-052POST /internal/governance/sap/suppliersEntregar los proveedores con sus grupos de artículos autorizadosFT-REF-01 · Datos de referencia administrables
API-01-051POST /internal/governance/sap/hierarchyEntregar la jerarquía comercial de ECC y S4HFT-PLT-05 · Taxonomía de plantillas por familia, metadatos de…
API-02-052POST /internal/product/sap/pricesEntregar el costo (STCTS) y el precio (STPRS) por SKUFT-INT-06 · Avisos de cambios a Entrada Única y consumidores
API-02-053POST /internal/product/sap/eanEntregar los EAN por grupo de artículo y su deltaFT-INT-06 · Avisos de cambios a Entrada Única y consumidores
API-07-001GET /api/v2/sap-ingest/files?interface=&state=Ver los archivos de datos maestros y sus conteos en el monitorFT-INT-03 · Entrada de SKUs creados en SAP
API-07-002POST /api/v2/sap-ingest/files/{id}/reprocessReprocesar los registros fallidos de un archivoFT-INT-03 · Entrada de SKUs creados en SAP
API-07-003GET /api/v2/sap-ingest/records?interface=&result=&key=&notAlive=Ver cada valor rechazado con su motivoFT-INT-03 · Entrada de SKUs creados en SAP

6. Eventos

Publica

EventoCuándoQuién lo consume
catalog.sap.inbound/SAP_MASTER_DATA_CHANGEDMS-07 termina un archivo de datos maestros: cuántos registros se aplicaron, no cambiaron o se rechazaronFT-ARQ-02
catalog.governance.changed/LOV_VALUE_CHANGEDMS-01 aplica un valor de SAP que de verdad cambióFT-ARQ-02, FT-PLT-03, FT-PLT-06, FT-RAC-07
catalog.governance.changed/TAXONOMY_NODE_CHANGEDMS-01 aplica un nodo nuevo o cambiado de la jerarquía comercialFT-CAT-04, FT-IA-02, FT-PLT-05, FT-PLT-06
catalog.product.changed/PRODUCT_UPDATEDMS-02 aplica un costo o un precio de SAPFT-ACT-05, FT-ARQ-02, FT-IA-01, FT-PLT-07, FT-PRD-05, FT-RAC-06
catalog.product.changed/EAN_CHANGEDMS-02 aplica un EAN que manda SAPFT-ARQ-02, FT-PRD-03

Consume

EventoPara quéQuién lo publica
catalog.egress.files/OBJECT_FINALIZEMS-07 lee cada archivo que SAP deja en el almacénD-ARCHIVOS
catalog.sap.inbound/SAP_MASTER_DATA_CHANGEDMS-14 avisa a Gobierno de Producto cuando un archivo trae rechazosesta misma épica

7. Datos

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

ColecciónDueñoQué guardaEsta épica
sap_inbound_filesMS-07Cada archivo que llega de SAP y el avance de sus registros.escribe
lovsMS-01Cabecera de cada lista de valores.escribe
lov_valuesMS-01Cada valor de lista: código, etiqueta, orden y equivalencias por sistema.escribe
taxonomy_nodesMS-01Plantillas y nodos de grupo de artículo, con la configuración de atributos de cada plantilla.escribe
productsMS-02La familia del producto con sus variantes, valores, imágenes (URL), clasificaciones, estado, tareas abiertas y rechazos.escribe
identifier_registryMS-02Unicidad de SKU y de EAN por negocio.escribe
reference_tablesMS-01Las entradas de los diccionarios: tallas, colores, impuestos, excepciones y demás datos de referencia.lee

8. Historias que cubre

HistoriaPrioridadCómo la cubre
FT-INT-04·H1 · Que las características y listas de valores de SAP entren solas, por grupo de…P1pasos 1, 2, 3, 5, 6; flujo «Si SAP manda un valor que no cabe»; API-01-050, API-07-003
FT-INT-04·H2 · Los proveedores de SAP con sus grupos de artículos autorizadosP1pasos 7; API-01-052
FT-INT-04·H3 · La jerarquía comercial de ECC y S4HP1pasos 8; API-01-051
FT-INT-04·H4 · El precio y el costo de SAP en el artículo o producto correctoP1pasos 9, 10; API-02-052
FT-INT-04·H5 · Intercambiar sólo cambiosP2pasos 4, 6

9. Decisiones de esta épica

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

  • D-INT-04-1. SAP deja sus archivos con el mismo nombre y formato de hoy, por transferencia de archivos, en el almacén del PIM, y el almacén avisa a MS-07. MS-07 es el único lector: entrega listas, proveedores y jerarquía a MS-01, y costo, precio y EAN a MS-02. No guarda datos de negocio, sólo el archivo, su copia y el resultado de cada registro. Por qué: Un solo lector por carpeta y un dueño por dato. La revisión del SFTP cada 10 s que hoy hace P360 se vuelve un aviso del almacén, sin cambiar lo que manda SAP. Se apoya en ADR-12, DUD-23, DEC-ARQ-03.
  • D-INT-04-2. Sólo cambios: si un archivo llega con la misma huella SHA-256 que el último de su interfaz, no se reprocesa. Si cambió, se entrega completo y MS-01 y MS-02 sólo escriben y avisan lo que de verdad cambió. Si SAP llega a mandar deltas, MS-07 los entrega igual. Por qué: Hoy SAP repite el mismo XML hasta tener uno nuevo; comparar la huella evita reprocesar catálogos completos sin esperar a que SAP cambie su envío. Se apoya en DUD-23.
  • D-INT-04-3. Los catálogos van separados por sistema: lo de ECC sirve a Liverpool y Marketplace y lo de S4H a Suburbia, en listas distintas como hoy. MS-07 no mezcla ni traduce valores. Por qué: Así lo usan hoy las plantillas y las marcas permitidas; mezclar rompería la integración con SAP. Se apoya en FT-REF-01, DUD-21.
  • D-INT-04-4. Precio y costo con la regla de hoy: el valor de STCTS va a CostobrutoSinIVA y el de STPRS a PrecioSugeridocIVA, en el artículo si el SKU es variante y en el producto si no. Suburbia (E29 y E30) usa el mismo camino en cuanto SAP entregue una muestra y su llave. Por qué: Sin lector de S4H, Suburbia se quedaría sin precio; reutilizar la regla evita un segundo camino. Se apoya en DUD-23, FT-INT-06.
  • D-INT-04-5. Los errores de SAP se ven en el PIM: cada valor rechazado queda con su registro y su motivo en el monitor de MS-07 (API-07-003), y MS-14 avisa a Gobierno de Producto con el resumen del archivo. Por qué: Responde dónde se ve un error de catálogo sin pantalla nueva en Entrada Única, y deja vigilar los errores que se repiten. Se apoya en DUD-23, P-32.
  • D-INT-04-6. La épica va en la ola 1 aunque el BRD la ponga en la fase 2. Por qué: El alta de SKU (FT-PRD-02) necesita proveedor, grupo, impuesto, precio y costo vigentes desde el primer día. Se apoya en DUD-01, DEC-ARQ-05.
  • D-INT-04-7. Las reglas proveedor → grupo → marca del Libro de Producto no se piden a SAP: siguen siendo tablas de referencia de MS-01. Por qué: No vienen de SAP; se cargaron a mano y son reglas escondidas en datos que necesitan dueño propio. Se apoya en RSG-12, FT-REF-01.
  • D-INT-04-8. Mientras P360 sea la fuente (hasta el corte de R3) su middleware sigue leyendo estas carpetas. MS-07 se enciende por interfaz en el corte: P360 termina el archivo en curso y MS-07 empieza con el siguiente, sin heredar puntos de control. Por qué: Dos lectores de la misma carpeta duplicarían o perderían registros. Se apoya en PD-11, FT-MIG-04.

Qué falta decidir

IDQué falta
DUD-23Que el equipo de SAP confirme el formato sin broker de E18, E27 y E28, si puede mandar sólo cambios, y la muestra y la llave de los precios y costos de Suburbia (E29 y E30).
DUD-09Falta la ERF de Interfaces que formalice estos contratos con SAP.
DUD-01Que Dirección confirme que la épica va en la ola 1.

También siguen abiertos: PEN-87, Qué características vienen de SAP (el mapeo prometido en S08).

Fuentes

  1. [D] trazabilidad/features/FT-INT-04-catalogos-precios-costos-sap.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.