Actualizado el 18-oct-2026. Primera versión de la arquitectura de esta épica.
Qué responde. Cómo funciona por dentro FT-INT-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-INT-01.json, generada con generar.py; la ficha de la épica es trazabilidad/features/FT-INT-01-publicacion-ecommerce-sin-broker.md.
En 30 segundos
Cuando un producto queda aprobado tiene que llegar a la tienda en línea (Product Data Service y commercetools) en uno o dos minutos y sin pasar por el broker. Los adaptadores de salida (MS-08) arman, con la foto del producto, el mismo mensaje que hoy produce la cadena del broker, lo dejan en los tópicos que ya lee la tienda, guardan lo enviado con su huella y devuelven el acuse para que el canal pase a Publicado o a Error.
- Módulo dueño: MS-08 Adaptadores de salida. También participan: MS-02 Producto, MS-03 Migración y convivencia.
- Etapa 8 · Publicación. Recibe «PE-8 · Aprobado», «PE-M · Producto migrado» y entrega «PE-9 · Publicado por canal».
- APIs: construye 5 y usa 4 que construyen otras épicas.
- Eventos: publica 2 y consume 2.
1. Dónde encaja
Recibe
| De | Qué |
|---|---|
| PE-8 · Aprobado | El producto Aprobado con el canal TIENDA en Pendiente: Producto ya revisó el mínimo del canal, decidió sitios y pidió publicar. |
| PE-M · Producto migrado | Los productos migrados con su estado por canal sembrado «en sincronía con legado»: en el corte no se republican y salen sólo cuando cambian. |
| FT-CAT-05 · Sitios, enrutamiento y visibilidad por negocio | La petición de publicar con sitios y canales decididos y la foto del producto lista para armar el mensaje de la tienda (API-02-054). |
| FT-FLU-01 · Motor de estados configurable con dos carreteras y reglas… | El paso a Aprobado (T08), con el que empieza la publicación por canal. |
| FT-RAC-03 · Publicación por rangos de score y revisión de calidad… | La petición de publicar a la tienda lo que alcanzó el umbral de calidad, sin cola de QA. |
| FT-CAT-02 · Publicación de categorías a la tienda | La categoría ya publicada en la tienda antes de que llegue un producto que la usa. |
| FT-CAT-03 · Categorización de productos | Las categorías web del producto; sin categoría no sale a la tienda. |
| FT-CAT-06 · Agrupadores y corrección masiva de categorías con… | La petición de republicar sólo la categoría de cada producto corregido. |
| FT-ACT-02 · Registro, congelado y publicación de URLs de activos | Las URL congeladas de las imágenes que viajan en el mensaje. |
| FT-PLT-04 · Grupos de atributos y mínimos de información por sistema… | Qué atributos van a la tienda y su mínimo, que el adaptador lee en la foto en lugar de una lista propia. |
| FT-PLT-08 · Títulos, nombres y descripciones de producto | El nombre y la descripción que se publican. |
| FT-PRD-01 · Modelo canónico de producto | La familia con relaciones, banderas con vigencia y variantes publicables. |
| FT-FLU-07 · Excepciones de catalogación y preventas con publicación… | La preventa con su bandera y sus fechas, aunque tenga imagen genérica. |
Entrega
| A | Qué |
|---|---|
| PE-9 · Publicado por canal | El canal TIENDA en Publicado con el acuse de la tienda, o en Error con su motivo para republicar. |
| FT-INT-02 · Publicación a OMS, DWH y Señalización | La foto del producto ya leída y el XML canónico del lote guardado con su huella, que reutilizan OMS, Señalización y el DWH. |
| FT-INT-07 · Repoblamiento masivo de productos hacia la tienda | El adaptador de la tienda para el repoblamiento: sin categorías, sin OMS y sin Marketplace. |
| FT-CAT-06 · Agrupadores y corrección masiva de categorías con… | La publicación a la tienda y su acuse por producto. |
| FT-RAC-08 · Monitoreo de visibilidad y alertas de caída de SKUs… | La evidencia de lo enviado y el acuse por producto, para vigilar la caída de visibles. |
| FT-RAC-04 · Consistencia entre sistemas y gobierno de datos proactivo | Lo que se mandó a la tienda y su acuse, por producto y variante, para la consistencia entre sistemas. |
| FT-RAC-06 · Métricas de tiempos por paso y clasificación de errores | El acuse o el rechazo de cada canal (DELIVERY_RESULT) con su motivo, para medir de Aprobado a Publicado. |
| FT-MIG-03 · Migración inicial de productos desde P360 | El ensayo sin envío (API-08-005) para comparar lo publicable contra lo que hoy tiene la tienda. |
| FT-MIG-04 · Convivencia P360 ↔ nuevo PIM | La salida a la tienda sin broker, lista para encenderse en el corte: condición para apagar P360. |
Cambios de estado que hace
| Transición | De → a | Cuándo |
|---|---|---|
| C02 | Pendiente → Enviado (por canal) | Cumple el mínimo del canal y el bus confirma que tomó el mensaje. |
| C03 | Enviado → Publicado (por canal) | Llega el acuse del destino. |
| C04 | Enviado → Error (por canal) | No llega el acuse o el destino rechaza. |
| C05 | Error → Enviado (por canal) | Se republica. |
| C07 | Publicado → Retirado (por canal) | Baja en ese canal. |
| C08 | Retirado → Enviado (por canal) | Se republica. |
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 | MS-02 Producto | Eventos | Pide publicar y deja el canal en Enviado | catalog.product.publication/PUBLICATION_REQUESTED |
| 2 | Eventos | MS-08 Adaptadores de salida | Entrega la petición al carril de la tienda | catalog.product.publication/PUBLICATION_REQUESTED |
| 3 | MS-08 Adaptadores de salida | Base pim | Descarta lo ya enviado en esa versión | — |
| 4 | MS-08 Adaptadores de salida | MS-02 Producto | Pide la foto del producto en esa versión | API-02-054 |
| 5 | MS-08 Adaptadores de salida | Base pim | Junta el lote: 30 s o 1,000 productos | — |
| 6 | MS-08 Adaptadores de salida | Archivos e imágenes (almacén y CDN) | Guarda el XML canónico y el mensaje con su huella | — |
| 7 | MS-08 Adaptadores de salida | Tienda en línea | Publica producto y SKU en los tópicos de la tienda | — |
| 8 | Tienda en línea | MS-08 Adaptadores de salida | Avisa que guardó y mandó a commercetools | — |
| 9 | MS-08 Adaptadores de salida | Base pim | Cierra el lote con el acuse por producto | — |
| 10 | MS-08 Adaptadores de salida | Eventos | Devuelve el acuse de cada producto | catalog.delivery.result/DELIVERY_RESULT |
| 11 | Eventos | MS-02 Producto | Entrega el acuse de la tienda | catalog.delivery.result/DELIVERY_RESULT |
| 12 | MS-02 Producto | Base pim | Pasa el canal de Enviado a Publicado | — |
3.1 Si la tienda no acusa o rechaza
3.2 Comparar contra el broker antes del corte
3.3 Retirar un producto de la tienda
4. Si algo sale mal
- La tienda no acusa en 30 minutos. El lote queda incierto y el canal pasa a Error con «sin acuse». Nada se reenvía solo: el lote aparece en la revisión de Repoblamiento y Operaciones, que deciden reenviar igual o descartar, siempre con motivo.
- La tienda rechaza un producto en su tópico de errores. Ese producto pasa a Error con la respuesta de la tienda y los demás del lote siguen. Se republica desde el portal (API-02-039) cuando se corrige.
- Una variante no tiene imagen principal congelada. La foto de Producto la trae como «no procede»: esa variante no viaja y sus hermanas sí. Si ninguna tiene principal, Producto no pide publicar y el producto queda «Sin imágenes congeladas».
- El producto no tiene categoría válida. Producto no pide el canal tienda, así que la tienda nunca recibe un producto sin categoría; OMS y Marketplace no esperan la categoría.
- Llega dos veces la misma petición. MS-08 la reconoce por producto, versión y destino y no vuelve a mandar; una versión vieja que llega tarde se ignora.
5. APIs
Las que construye esta épica (5)
GET /api/v2/egress/review · Lotes inciertos por destino
| Campo | Valor |
|---|---|
| API | API-08-001 · MS-08 Adaptadores de salida |
| Para qué | Lista los lotes que salieron a un destino (tienda, OMS, Marketplace, Señalización o SAP) y no tienen un acuse claro: sin respuesta a tiempo, respuesta que no se reconoce o envío interrumpido. Ninguno se reenvía solo: esperan a que una persona decida. |
| En esta épica | Lotes inciertos por destino |
| Quién la llama | BFF del portal |
| Permiso | Publicación, Repoblamiento y Operaciones |
| Cabeceras | Authorization, X-Request-Id |
| Parámetros | destination = OMS, status = UNCERTAIN, from = 2026-10-17T00:00:00Z, page = 1, size = 50 |
| También la usan | FT-CAT-05, FT-INT-02, FT-RAC-08 |
Request
null
Response · 200
{
"success": true,
"data": {
"items": [
{
"batchId": "egb-20261018-oms-0142",
"destination": "OMS",
"operation": "APPROVE",
"status": "UNCERTAIN",
"reason": {
"code": "TIMEOUT",
"detail": "El broker no respondió en 120 s"
},
"sentAt": "2026-10-18T15:20:03Z",
"attempts": 3,
"products": 120,
"sampleProductIds": [
"PRD-0004812",
"PRD-0004813"
],
"evidenceId": "evd-7a51c0",
"version": 3
}
],
"page": 1,
"size": 50,
"total": 1
}
}
Errores
| HTTP | Código | Cuándo |
|---|---|---|
| 400 | VALIDATION_ERROR | El destino o el estado no existen |
| 403 | AUTHORIZATION_ERROR | Quien llama no opera publicaciones |
POST /api/v2/egress/review/{batchId}/resolve · Resolver un lote incierto
| Campo | Valor |
|---|---|
| API | API-08-002 · MS-08 Adaptadores de salida |
| Para qué | Una persona decide qué pasa con un lote incierto: RESEND lo vuelve a mandar igual (mismo contenido y misma llave, para que el destino lo reconozca si ya lo tenía) o DISCARD lo cierra como fallido. Las dos llevan motivo y dejan la decisión en el lote; nunca es automático. |
| En esta épica | Reenviar igual o descartar un lote incierto, con motivo |
| Quién la llama | BFF del portal |
| Permiso | Publicación, Repoblamiento y Operaciones |
| Cabeceras | Authorization, X-Request-Id, Idempotency-Key, If-Match |
| Parámetros | batchId = egb-20261018-oms-0142 |
| Publica | catalog.delivery.result/DELIVERY_RESULT |
| También la usan | FT-CAT-05, FT-INT-02, FT-RAC-08 |
Request
{
"decision": "RESEND",
"reason": "El equipo de OMS confirmó que el lote no llegó",
"version": 3
}
Response · 202
{
"success": true,
"data": {
"requestId": "req-eg-8812",
"status": "ACCEPTED",
"receiptUrl": "/api/v2/egress/batches/egb-20261018-oms-0142"
}
}
Errores
| HTTP | Código | Cuándo |
|---|---|---|
| 409 | VERSION_CONFLICT | Otra persona ya resolvió el lote o cambió su estado |
| 409 | NOT_EDITABLE_IN_STATUS | El lote ya no está incierto |
| 422 | VALIDATION_ERROR | Falta el motivo o la decisión no es RESEND ni DISCARD |
GET /api/v2/egress/batches/{batchId} · Detalle de un lote de salida
| Campo | Valor |
|---|---|
| API | API-08-003 · MS-08 Adaptadores de salida |
| Para qué | Dice qué llevó un lote (productos, versiones y variantes que no procedieron), a qué destino, cuántos intentos hubo, qué respondió el destino y con qué huella quedó guardado lo enviado. |
| En esta épica | Detalle de un lote y su respuesta |
| Quién la llama | BFF del portal |
| Permiso | Lectura de productos (ENT-L) con Publicación u Operaciones |
| Cabeceras | Authorization, X-Request-Id |
| Parámetros | batchId = egb-20261018-ecom-0311 |
Request
null
Response · 200
{
"success": true,
"data": {
"batchId": "egb-20261018-ecom-0311",
"destination": "TIENDA",
"operation": "APPROVE",
"status": "ACCEPTED",
"items": [
{
"productId": "PRD-0004812",
"version": 9,
"business": "MER",
"variants": 3,
"excludedVariants": [
{
"variantId": "VAR-0004812-04",
"reason": "NO_MAIN_IMAGE"
}
],
"result": "ACCEPTED",
"ackAt": "2026-10-18T15:21:10Z",
"traceId": "4bf92f3577b34da6a3ce929d0e0e4736"
}
],
"attempts": [
{
"n": 1,
"at": "2026-10-18T15:20:05Z",
"outcome": "ACK",
"detail": "La tienda guardó el producto y lo mandó a commercetools"
}
],
"evidence": [
{
"evidenceId": "evd-7a51c0",
"format": "STEP_XML",
"sha256": "4c1e0d9b8a7f6e5d4c3b2a1f0e9d8c7b6a5f4e3d2c1b0a9f8e7d6c5b4a3f2e1d",
"bytes": 482113
},
{
"evidenceId": "evd-7a51c1",
"format": "PDS_JSON",
"sha256": "0a1b2c3d4e5f60718293a4b5c6d7e8f90a1b2c3d4e5f60718293a4b5c6d7e8f9",
"bytes": 96210
}
],
"version": 2
}
}
Errores
| HTTP | Código | Cuándo |
|---|---|---|
| 404 | NOT_FOUND | El lote no existe |
GET /api/v2/egress/evidence/{evidenceId} · Descargar lo enviado
| Campo | Valor |
|---|---|
| API | API-08-004 · MS-08 Adaptadores de salida |
| Para qué | Da una liga de descarga, que vence en 15 minutos, del documento exacto que se mandó a un destino (el XML o el mensaje de la tienda) con su huella SHA-256, para revisar un reenvío puntual o el orden de las variantes. |
| En esta épica | Descargar lo que se mandó, con su huella |
| Quién la llama | BFF del portal |
| Permiso | Lectura de productos (ENT-L) con Publicación u Operaciones |
| Cabeceras | Authorization, X-Request-Id |
| Parámetros | evidenceId = evd-7a51c0 |
Request
null
Response · 200
{
"success": true,
"data": {
"evidenceId": "evd-7a51c0",
"batchId": "egb-20261018-ecom-0311",
"destination": "TIENDA",
"format": "STEP_XML",
"sha256": "4c1e0d9b8a7f6e5d4c3b2a1f0e9d8c7b6a5f4e3d2c1b0a9f8e7d6c5b4a3f2e1d",
"bytes": 482113,
"download": "/api/v2/egress/evidence/evd-7a51c0/content?t=dl-58c1",
"expiresAt": "2026-10-18T15:45:00Z",
"keptUntil": "2027-10-18T00:00:00Z"
}
}
Errores
| HTTP | Código | Cuándo |
|---|---|---|
| 404 | NOT_FOUND | La evidencia no existe o ya venció su resguardo |
| 403 | AUTHORIZATION_ERROR | Quien llama no puede ver los productos del lote |
POST /internal/egress/rehearsals · Ensayo de publicación sin envío
| Campo | Valor |
|---|---|
| API | API-08-005 · MS-08 Adaptadores de salida |
| Para qué | Arma, sin mandar nada, lo que recibiría cada destino para una lista de productos y lo deja en el almacén con su huella. Lo usa la migración para comparar campo por campo contra lo que hoy tiene la tienda antes de apagar el broker. |
| En esta épica | Ensayo sin envío para comparar contra la tienda y el broker |
| Quién la llama | MS-03 Migración y convivencia |
| Permiso | Sólo MS-03 (cuenta de servicio) |
| Cabeceras | Authorization, X-Request-Id, Idempotency-Key |
| También la usan | FT-MIG-03 |
Request
{
"rehearsalId": "rh-e2-0004",
"destinations": [
"TIENDA",
"OMS"
],
"items": [
{
"productId": "PRD-0004812",
"version": 1
},
{
"productId": "PRD-0004813",
"version": 1
}
]
}
Response · 202
{
"success": true,
"data": {
"requestId": "req-rh-0004",
"status": "ACCEPTED",
"outputs": [
{
"destination": "TIENDA",
"evidenceId": "evd-rh-0004-ecom",
"format": "PDS_JSON"
},
{
"destination": "OMS",
"evidenceId": "evd-rh-0004-oms",
"format": "STEP_XML"
}
],
"receiptUrl": "/api/v2/egress/evidence/evd-rh-0004-ecom"
}
}
Errores
| HTTP | Código | Cuándo |
|---|---|---|
| 404 | NOT_FOUND | Un producto no existe en esa versión |
| 409 | IDEMPOTENCY_MISMATCH | Se repite el ensayo con otra lista |
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.
| API | Método y ruta | Para qué, aquí | La construye |
|---|---|---|---|
| API-02-054 | GET /internal/product/products/{id}/publication-snapshot?version= | Leer la foto del producto en la versión que se publica | FT-CAT-05 · Sitios, enrutamiento y visibilidad por negocio |
| API-02-041 | POST /api/v2/publications/eligibility | Saber por qué un producto o una variante no es enviable a la tienda | FT-CAT-05 · Sitios, enrutamiento y visibilidad por negocio |
| API-02-042 | GET /api/v2/delivery-status?productId=&sku= | Ver el estado del canal tienda por producto | FT-CAT-05 · Sitios, enrutamiento y visibilidad por negocio |
| API-02-039 | POST /api/v2/publications/plans | Republicar desde el portal lo que quedó en Error | FT-INT-07 · Repoblamiento masivo de productos hacia la tienda |
6. Eventos
Publica
| Evento | Cuándo | Quién lo consume |
|---|---|---|
catalog.delivery.result/DELIVERY_RESULT | La tienda acusa, rechaza o no contesta a tiempo, y cuando una persona resuelve un lote incierto | FT-ARQ-02, FT-CAT-02, FT-CAT-05, FT-CAT-06, FT-IA-05, FT-INT-02, FT-INT-05, FT-INT-07, FT-PRD-02, FT-PRD-10, FT-RAC-06 |
catalog.product.publication/PUBLICATION_REQUESTED | Producto pide publicar, retirar o republicar en la tienda | FT-CAT-05, FT-CAT-06, FT-INT-02, FT-INT-05, FT-INT-07, FT-PLT-08, FT-PRD-05, FT-RAC-03 |
Consume
| Evento | Para qué | Quién lo publica |
|---|---|---|
catalog.product.publication/PUBLICATION_REQUESTED | MS-08 arma y entrega el mensaje de la tienda | esta misma épica |
catalog.delivery.result/DELIVERY_RESULT | Producto pasa el canal tienda a Publicado, Error o Retirado | 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 |
|---|---|---|---|
egress_batches | MS-08 | Cada lote que sale a un destino: productos y versiones, intentos, respuesta del destino, huella de lo enviado y, si quedó incierto, la decisión de una persona con su motivo. | escribe |
8. Historias que cubre
| Historia | Prioridad | Cómo la cubre |
|---|---|---|
| FT-INT-01·H1 · Que un producto que cumple el mínimo del canal se publique solo, sin broker | P1 | pasos 1, 2, 4, 5, 7, 8, 10, 11, 12; API-02-054 |
| FT-INT-01·H2 · Recibir producto y SKU por el canal que ya consume el PDS | P1 | pasos 7, 8; API-02-054 |
| FT-INT-01·H3 · Excluir la variante que no procede | P1 | pasos 4; API-02-054, API-02-041 |
| FT-INT-01·H4 · Bloquear lo que no tiene categoría válida y validar la salida por sistema | P2 | pasos 1, 4; API-02-041 |
| FT-INT-01·H5 · La secuencia de variantes de la plantilla y la evidencia de lo enviado | P3 | pasos 6; flujo «Si la tienda no acusa o rechaza»; API-08-003, API-08-004 |
| FT-INT-01·H6 · Un el bus de eventos que rutea a cada destino | P1 | pasos 2, 10, 11, 12; flujo «Si la tienda no acusa o rechaza», «Retirar un producto de la tienda»; API-08-001, API-08-002, API-02-042 |
| FT-INT-01·H7 · Publicar los agrupados como genérico con variantes | P1 | flujo «Comparar contra el broker antes del corte»; API-08-005 |
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-01-1. Sin broker para la tienda: MS-08 publica directo en los tópicos de producto y de SKU que ya lee el Product Data Service (…feed-data-processor.product-message y …sku-message), con source=STIBO, traceId y objectId, como hoy el procesador. La tienda no cambia su receptor. El broker y el procesador dejan de recibir productos en la misma ventana en que se enciende MS-08: nunca dos productores. Por qué: El Product Data Service no lee el XML del broker sino esos mensajes; publicar ahí quita dos saltos y conserva las reglas de la tienda (mezcla parcial, versión, variante maestra). Es lo que propone PD-10 para la tienda y lo que ya se hizo con categorías. Se apoya en PD-10, PD-09, DEC-ARQ-10, RSG-24.
- D-INT-01-2. MS-08 rehace la traducción que hoy hacen el broker y el procesador, con la foto de Producto como única entrada. La especificación es el cuadre de los 159 campos de la tienda, y se prueba campo por campo contra sus colecciones products y skus antes del corte con el ensayo sin envío (API-08-005). Por qué: Sin esa traducción nadie publica tras apagar P360, el riesgo mayor del programa; compararla contra la tienda es la prueba de que no se pierde nada. Se apoya en RSG-24, PD-23, FT-MIG-03.
- D-INT-01-3. El acuse es de la tienda, no del tópico: MS-08 marca Publicado cuando el Product Data Service publica hacia commercetools el cambio de ese traceId, y Error cuando lo publica en su tópico de errores. Sin ninguno de los dos en 30 minutos, el lote queda incierto y espera a una persona (API-08-002). Que el bus de eventos acepte el mensaje no es Publicado. Por qué: Enviado y Publicado son estados distintos; sólo el destino sabe si de verdad lo guardó. Se apoya en RF-PUB-14, PD-09, DUD-10.
- D-INT-01-4. MS-08 no decide qué ni cuándo se publica: el mínimo del canal, la categoría válida, la variante que no procede, los sitios y la espera de OMS son reglas de Producto (publication_rules y su enrutamiento) y llegan resueltas en la petición y en la foto. MS-08 sólo traduce, entrega y devuelve el acuse. Por qué: Un solo dueño de cada regla; hoy las compuertas viven dentro del exportador y nadie las ve. Se apoya en RF-PUB-05, RN-PUB-05, PD-22, FT-CAT-05.
- D-INT-01-5. Un carril por destino: cada adaptador tiene su suscripción filtrada por canal, su lote (30 s, 1,000 productos o 1 MB, lo que llegue primero), su reintento de 30 s × 2ⁿ hasta 15 minutos y su revisión. Un destino lento no frena a otro. La meta de 1 a 2 minutos se mide de la petición al acuse. Por qué: RF-PUB-01 pide la tienda en 1 a 2 minutos; hoy un solo exportador encadena todo y el 13.7 % de los envíos quedó colgado. Se apoya en RF-PUB-01, RSG-51.
- D-INT-01-6. Cada lote deja en el almacén el XML canónico de hoy (STEP-ProductInformation) y el mensaje de la tienda, con su SHA-256 y un año de resguardo. Es la evidencia de lo enviado (API-08-004) y la fuente del DWH y de Señalización. Por qué: RF-PUB-08 pide descargar lo enviado; un solo documento evita armar tres veces lo mismo. Se apoya en RF-PUB-08, DMS-66.
- D-INT-01-7. Los agrupados (genérico Marketplace o genérico dummy) salen como un genérico con sus variantes, cada una con su SKU de SAP y en el orden de la plantilla (variantSequence de la foto). Antes del corte, la salida de MS-08 se compara con la del broker del mismo día. Por qué: Hoy esa transformación la hace el broker; si no se reproduce, el cliente ve productos sueltos. Se apoya en RF-PUB-08, PD-10.
- D-INT-01-8. Banderas y fechas se mandan como las sabe el PIM: encendidas con sus fechas o apagadas. Lo que no tiene dato no se manda y nunca salen fechas centinela como 0002-11-30 o 9998-11-30. Por qué: El relleno en falso infla el mensaje y las fechas ficticias corrompen la tienda. Se apoya en PD-23, DUD-30.
- D-INT-01-9. MS-08 se enciende para la tienda en el corte de productos (R3). Antes, P360 sigue publicando por el broker y los cambios que llegan por la convivencia no generan peticiones. En el corte no se republica el catálogo: sólo sale lo que cambie. Por qué: Dos productores duplicarían la tienda y republicar 3.4 millones de productos sin cambios la saturaría. Se apoya en PD-10, FT-MIG-04, DEC-PRD-06.
Qué falta decidir
| ID | Qué falta |
|---|---|
| PD-10 | Ratificar en ADR-07 (13-nov) que la tienda va sin broker y que OMS y Mirakl siguen por el broker en el primer corte. |
| PD-09 | Confirmar con Prod Ecommerce los tópicos de salida y de errores del Product Data Service que sirven de acuse. |
| PD-22 | Ratificar que sin categoría no sale a la tienda y que OMS y Mirakl no la esperan. |
| PD-23 | Confirmar con Prod Ecommerce que commercetools distingue una bandera ausente de una apagada. |
| PD-24 | El score de Marketplace frena la publicación y no el SKU; lo aplica Producto antes de pedir publicar. |
También siguen abiertos: PEN-01, Mínimo de visibilidad de Marketplace con plantillas compartidas de 50 atributos.
Fuentes
- [D]
trazabilidad/features/FT-INT-01-publicacion-ecommerce-sin-broker.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.