← Arquitectura por épica

FT-ACT-03 · Imágenes del seller por URL con validación y corrección…

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-ACT-03: 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-ACT-03.json, generada con generar.py; la ficha de la épica es trazabilidad/features/FT-ACT-03-imagenes-seller-por-url.md.

En 30 segundos

Muchos sellers ya tienen sus fotos en su propio sitio web. Con esta épica pegan la URL de cada imagen en la plantilla, por color y posición, y Activos digitales la descarga una sola vez, la revisa, le corrige el tamaño, la resolución y el centrado y la guarda junto a la original. La tienda nunca usa la URL del seller, y una imagen que sólo sirve para buscar coincidencias no se liga al producto.

  • Módulo dueño: MS-11 Activos digitales. También participan: MS-02 Producto, MS-06 Evaluación, MS-13 Identidad y acceso, MS-14 Avisos y ayuda.
  • Etapa 6 · Imágenes. Recibe «PE-3 · Plantilla asignada» y entrega «PE-7 · Imágenes listas».
  • APIs: construye 1 y usa 7 que construyen otras épicas.
  • Eventos: publica 4 y consume 3.

1. Dónde encaja

Recibe

DeQué
PE-3 · Plantilla asignadaLa propuesta de Marketplace con plantilla y negocio: la vista efectiva dice qué posiciones de imagen pide y cuántas son obligatorias.
FT-ACT-01 · Tipos de activo digital y reglas de imágenes por…La ficha de cada tipo, las posiciones y los motivos de rechazo con los que se valida y se corrige la imagen.
FT-ACT-02 · Registro, congelado y publicación de URLs de activosEl registro de activos, el congelado al asignar el SKU y los recibos de cada comando.

Entrega

AQué
PE-7 · Imágenes listasEn Marketplace, las imágenes del seller corregidas y congeladas al asignarse el SKU, ligadas a su color y posición, sin tarea Carga de imagen pendiente.
FT-REF-04 · Matching por imagen y por URL del sellerLa imagen de consulta (purpose MATCHING), separada de la de carga, para buscar coincidencias por imagen o por la URL del seller.
FT-PRD-07 · Captura guiada por pasos con los mínimos primeroLa revisión que pinta en verde el bloque de imágenes cuando el seller completa el mínimo de su negocio, desde que elige la plantilla.

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

Nuevo PIM · un solo sistema

Pantallas y sistemas

Personas

Registrar una imagen por URL
Recibo de una operación de Activos
y 1 más

Detalle de un tercero

Descarga la imagen una sola vez

Corrige DPI, tamaño y centrado y guar…
Renombra con el SKU y congela
y 1 más

ASSET_VALIDATED
ASSET_FROZEN
y 1 más

SKU_ASSIGNED

ASSET_FROZEN

Buscar productos que ya existen

ASSET_REJECTED

Enviar un producto

Entrega la propuesta del tercero

Registrar una imagen por URL
Carga masiva de imágenes
y 1 más

permisos

Seller

Entrada Única · Vendor Center

Sistemas de proveedores y sellers

BFF del portal

Gateway de terceros /partner/v1

★ MS-11 Activos digitales

MS-02 Producto

MS-06 Evaluación

MS-13 Identidad y acceso

MS-14 Avisos y ayuda

Eventos

Archivos e imágenes

Contexto de FT-ACT-03

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 ProductoEventosArchivosSistemas de proveedores y sellersMS-13 Identidad y accesoMS-11 Activos digitalesEntrada Única · Vendor CenterMS-02 ProductoEventosArchivosSistemas de proveedores y sellersMS-13 Identidad y accesoMS-11 Activos digitalesEntrada Única · Vendor CenterSellerBFF1. Elige la plantilla y ve el bloque de imágenes2. Pega la URL de cada imagen por color3. Registra cada imagen por su URLPOST /api/v2/assets/from-url4. Revisa que el dominio sea del sellerGET /api/v2/partners/{partnerId}5. Descarga la imagen una sola vez6. Corrige DPI, tamaño y centrado y guarda ambas7. Avisa la imagen validadaASSET_VALIDATED8. Consulta el recibo con correcciones y motivosGET /api/v2/asset-receipts/{requestId}9. Pregunta si ya cumple el mínimo de su negocioGET /api/v2/assets/compliance?productId=&stage=10. Ve el bloque en verde y sigue capturando11. Entrega el SKU asignado al productoSKU_ASSIGNED12. Renombra con el SKU y congela13. Avisa las imágenes congeladasASSET_FROZEN14. Entrega las congeladas, sin tarea de foto, sigue a calidadASSET_FROZENSellerBFF
Flujo principal de FT-ACT-03
Los pasos en texto
PasoDeAQué haceAPI o evento
1SellerEntrada Única · Vendor CenterElige la plantilla y ve el bloque de imágenes—
2SellerEntrada Única · Vendor CenterPega la URL de cada imagen por color—
3Entrada Única · Vendor CenterMS-11 Activos digitales (por el BFF)Registra cada imagen por su URLAPI-11-006
4MS-11 Activos digitalesMS-13 Identidad y accesoRevisa que el dominio sea del sellerAPI-13-010
5MS-11 Activos digitalesSistemas de proveedores y sellersDescarga la imagen una sola vez—
6MS-11 Activos digitalesArchivos e imágenes (almacén y CDN)Corrige DPI, tamaño y centrado y guarda ambas—
7MS-11 Activos digitalesEventosAvisa la imagen validadacatalog.asset.changed/ASSET_VALIDATED
8Entrada Única · Vendor CenterMS-11 Activos digitales (por el BFF)Consulta el recibo con correcciones y motivosAPI-11-013
9Entrada Única · Vendor CenterMS-11 Activos digitales (por el BFF)Pregunta si ya cumple el mínimo de su negocioAPI-11-014
10SellerEntrada Única · Vendor CenterVe el bloque en verde y sigue capturando—
11EventosMS-11 Activos digitalesEntrega el SKU asignado al productocatalog.product.changed/SKU_ASSIGNED
12MS-11 Activos digitalesArchivos e imágenes (almacén y CDN)Renombra con el SKU y congela—
13MS-11 Activos digitalesEventosAvisa las imágenes congeladascatalog.asset.changed/ASSET_FROZEN
14EventosMS-02 ProductoEntrega las congeladas; sin tarea de foto, sigue a calidadcatalog.asset.changed/ASSET_FROZEN

3.1 Imagen sólo para buscar coincidencias

MS-14 Avisos y ayudaEventosMS-06 EvaluaciónArchivosMS-11 Activos digitalesEntrada Única · Vendor CenterMS-14 Avisos y ayudaEventosMS-06 EvaluaciónArchivosMS-11 Activos digitalesEntrada Única · Vendor CenterSellerBFF1. Sube una foto para buscar su producto2. La registra sólo como consultaPOST /api/v2/assets/from-url3. Guarda una copia temporal sin exigir la ficha4. Busca productos parecidos con esa imagenPOST /api/v2/matches5. Pide usarla también en el productoPOST /api/v2/assets/from-url6. La rechaza: no cumple 940 × 1215 ni se corrigeASSET_REJECTED7. Entrega el rechazo para avisar al sellerASSET_REJECTEDSellerBFF
Imagen sólo para buscar coincidencias

3.2 URL por la API de terceros o en carga masiva

EventosMS-13 Identidad y accesoMS-11 Activos digitalesMS-02 ProductoSistemas de proveedores y sellersEventosMS-13 Identidad y accesoMS-11 Activos digitalesMS-02 ProductoSistemas de proveedores y sellersGateway1. Manda su producto con las URL de imagenPOST /partner/v1/proposals2. Entrega la propuesta del tercero3. Registra cada URL del productoPOST /api/v2/assets/from-url4. Revisa el dominio contra los del sellerGET /api/v2/partners/{partnerId}5. Rechaza la URL de un dominio ajenoASSET_REJECTED6. En carga masiva, manda la lista de URLPOST /api/v2/asset-jobs7. Lee el resultado por renglónGET /api/v2/asset-jobs/{jobId}Gateway
URL por la API de terceros o en carga masiva

4. Si algo sale mal

  • La URL no se puede leer sin credenciales. MS-11 la rechaza con el motivo «URL no pública»; el seller lo ve en el recibo y en su campana, corrige la URL y la vuelve a registrar.
  • La imagen no se puede corregir. Si está corrupta o su proporción no se arregla con el centrado y los márgenes de la ficha, se rechaza con el motivo de hoy («Error en proporción», «DPI insuficiente», «Imagen corrupta o formato no correcto»). La imagen de consulta sí sirve para buscar coincidencias.
  • La URL es de un dominio que el seller no registró, por ejemplo de la competencia. El registro responde 422 BUSINESS_ERROR; en la carga masiva o por API se rechaza ese renglón con su motivo y los demás siguen.
  • El servidor del seller tarda o falla. MS-11 reintenta tres veces durante diez minutos; después rechaza con «No se pudo descargar». Nada se publica desde el servidor del seller.
  • El seller cambia la foto en su servidor después de registrarla. No cambia nada en la tienda: Liverpool sirve su propia copia. Para cambiarla, el seller registra otra vez la URL y se crea un activo nuevo.

5. APIs

Las que construye esta épica (1)

POST /api/v2/assets/from-url · Registrar una imagen por URL
CampoValor
APIAPI-11-006 · MS-11 Activos digitales
Para quéEl seller (o el proveedor) da la URL pública de su imagen. MS-11 la descarga una sola vez, la valida, corrige lo técnico (72 DPI, tamaño y centrado) y guarda la original junto a la corregida; nunca se publica la URL del seller. Con purpose MATCHING la imagen sólo sirve para buscar coincidencias: no se exige la ficha y no se liga al producto. Con kind LINK registra un video de YouTube o InStore sin descargarlo. Responde con un recibo.
En esta épicaRegistrar una imagen por URL: descarga, valida, corrige y guarda la original con la corregida
Quién la llamaBFF del portal, Gateway de terceros /partner/v1, MS-02 Producto
PermisoEl seller o proveedor dueño del producto; MS-02 para las URL que llegan en una carga masiva
CabecerasAuthorization, X-Request-Id, Idempotency-Key
Escribe enassets, asset_outbox
Publicacatalog.asset.changed/ASSET_UPLOADED, catalog.asset.changed/ASSET_VALIDATED, catalog.asset.changed/ASSET_REJECTED, catalog.asset.changed/ASSET_FROZEN
También la usanFT-ACT-01, FT-PRD-10

Request

{
  "productId": "PRD-0009120",
  "scope": "COLOR",
  "colorCode": "ROJO",
  "assetType": "PRINCIPAL",
  "position": 1,
  "sourceUrl": "imagenes.seller0001.ejemplo/playeras/rojo-frente.jpg",
  "kind": "FILE",
  "purpose": "PRODUCT",
  "origin": "SELLER_URL"
}

Response · 202

{
  "success": true,
  "data": {
    "requestId": "req-6b0d13",
    "assetId": "ast-9e40a2",
    "status": "ACCEPTED",
    "receiptUrl": "/api/v2/asset-receipts/req-6b0d13"
  }
}

Errores

HTTPCódigoCuándo
422VALIDATION_ERRORLa URL no está bien formada o no es de imagen o video
422BUSINESS_ERROREl dominio de la URL no es uno de los que el seller registró como propios
423LOCKEDEl producto está en el estudio y quien llama no es del estudio
403AUTHORIZATION_ERRORQuien llama no es dueño del producto

Las que usa y construye otra épica (7)

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-11-013GET /api/v2/asset-receipts/{requestId}El recibo con las correcciones aplicadas o el motivo del rechazoFT-ACT-02 · Registro, congelado y publicación de URLs de activos
API-11-014GET /api/v2/assets/compliance?productId=&stage=Saber si ya se cumple el mínimo de Marketplace para pintar el bloque en verdeFT-ACT-01 · Tipos de activo digital y reglas de imágenes por…
API-11-011POST /api/v2/asset-jobsLas URL de una carga masiva de productos, en loteFT-ACT-02 · Registro, congelado y publicación de URLs de activos
API-11-012GET /api/v2/asset-jobs/{jobId}El resultado de cada URL de la carga masivaFT-ACT-02 · Registro, congelado y publicación de URLs de activos
API-13-010GET /api/v2/partners/{partnerId}Los dominios de imágenes que el seller registró como propiosFT-USR-03 · Control de acceso por API para terceros
API-06-005POST /api/v2/matchesBuscar coincidencias con la imagen de consulta (lo construye FT-REF-03 y lo usa FT-REF-04)FT-REF-03 · Servicio de matching
API-GW-001POST /partner/v1/proposalsUn tercero manda su producto con las URL de sus imágenesFT-PRD-10 · Catalogación por API del proveedor o seller

6. Eventos

Publica

EventoCuándoQuién lo consume
catalog.asset.changed/ASSET_UPLOADEDSe descargó la imagen del sellerFT-ACT-05
catalog.asset.changed/ASSET_VALIDATEDLa imagen cumple la ficha, con o sin correcciónFT-FLU-07, FT-PRD-07, FT-PRD-08, FT-PRD-10
catalog.asset.changed/ASSET_REJECTEDLa URL no es pública, es de otro dominio o la imagen no se puede corregirFT-ACT-02, FT-ACT-05, FT-RAC-04, FT-RAC-06
catalog.asset.changed/ASSET_FROZENEl producto recibió su SKU y la imagen quedó con su nombre finalFT-ACT-02, FT-ACT-04, FT-ACT-06, FT-ARQ-02, FT-IA-04

Consume

EventoPara quéQuién lo publica
catalog.product.changed/SKU_ASSIGNEDMS-11 renombra y congela las imágenes del sellerFT-INT-03, FT-PRD-02
catalog.asset.changed/ASSET_FROZENMS-02 copia las URL congeladas a cada varianteesta misma épica
catalog.asset.changed/ASSET_REJECTEDMS-14 avisa al seller qué imagen se rechazó y por quéesta misma épica

7. Datos

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

ColecciónDueñoQué guardaEsta épica
assetsMS-11Cada archivo una vez: a qué producto, variante y posición pertenece, su validación técnica, URL de trabajo y URL congelada.escribe
asset_jobsMS-11Cargas masivas de imágenes, por archivo comprimido, carpeta o lista de URL.escribe
asset_outboxMS-11Los cambios de activos que esperan salir como evento.escribe
asset_typesMS-11Los tipos de activo (principal, detalle, isométrica, video, certificado…) con su ficha técnica: medidas, peso, formato, máximo y si se publica.lee
template_viewsMS-01La vista efectiva ya resuelta por plantilla y negocio: qué atributos pide y cuáles son obligatorios.lee
partnersMS-13El registro de terceros: proveedores y sellers que llaman por API, con su tipo, negocios, tiendas, alcances, límites y clientes (catalogación por API §3.1).lee

8. Historias que cubre

HistoriaPrioridadCómo la cubre
FT-ACT-03·H1 · URL en la plantillaP1pasos 2, 3, 4, 5, 6, 7, 8; API-11-006, API-11-013
FT-ACT-03·H2 · Corrección técnicaP1pasos 6; API-11-006
FT-ACT-03·H3 · Validación y usoP1flujo «Imagen sólo para buscar coincidencias»; API-11-006, API-06-005
FT-ACT-03·H4 · Imágenes al inicioP2pasos 1, 9, 10; API-11-014
FT-ACT-03·H5 · Masiva con URLs propiasP3flujo «URL por la API de terceros o en carga masiva»; API-11-011, API-13-010

9. Decisiones de esta épica

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

  • D-ACT-03-1. El seller da URL públicas y MS-11 descarga la imagen una sola vez y la sirve desde la red de entrega de Liverpool; nunca se publica ni se enlaza la URL del seller. Por qué: Decide la mitad de PD-21 que toca al seller: con URL externas la tienda dependería de servidores ajenos y las fotos cambiarían sin control. Se apoya en PD-21, RSG-33, RF-IMG-01.
  • D-ACT-03-2. La corrección técnica (72 DPI, tamaño a la ficha y centrado con los márgenes de 25 px) es procesamiento fijo dentro de MS-11, no IA. Se guarda la original junto a la corregida y el recibo dice qué se corrigió. Por qué: Son reglas medibles que no necesitan un modelo; deja la IA para lo que sí la necesita y responde la parte de DUD-35 que toca a esta épica. Se apoya en DUD-35, RF-IMG-04.
  • D-ACT-03-3. Imagen de consulta e imagen de carga son dos propósitos del mismo registro: con MATCHING la copia es temporal (24 horas), no exige la ficha y nunca se liga al producto; con PRODUCT se valida y, si no cumple ni se puede corregir, se rechaza. Por qué: Lo pide RF-IMG-05 y evita que una foto de búsqueda termine publicada. Se apoya en RF-IMG-05, PEN-53.
  • D-ACT-03-4. «URL propias» quiere decir dominios que el seller registró en su ficha de tercero en MS-13. En la carga masiva y por API, un renglón con otro dominio se rechaza con su motivo; los demás siguen. Por qué: Es la forma verificable de RN-IMG-11; una lista de competidores nunca estaría completa. Las URL se capturan dentro del archivo de plantilla, como respondió S20 para PEN-57. Se apoya en PEN-57, RN-IMG-11.
  • D-ACT-03-5. La captura por URL se construye para el alta de sellers del TO-BE (R4) y sirve igual a proveedores de Mercaderías, como se acordó en S16; mientras tanto el seller sigue cargando archivos por el portal contra el mismo MS-11. Por qué: PD-02 propone el alta TO-BE de sellers en R4; el registro por URL no cambia el resto del flujo. Se apoya en PD-02, S16-RF-01.

Qué falta decidir

IDQué falta
PD-21Gobierno de Producto, Publicación, Arquitectura y Seguridad ratifican que la imagen del seller se copia y se sirve desde Liverpool.
PD-02Confirmar que el alta TO-BE de sellers va en R4.
DUD-35Confirmar que la corrección técnica no necesita IA en la primera salida.

También siguen abiertos: PEN-57, Definir cuándo corre la revisión de calidad de la imagen en la carga masiva; PEN-53, Decidir si se usan imágenes del scraping cuando no hay coincidencia.

Fuentes

  1. [D] trazabilidad/features/FT-ACT-03-imagenes-seller-por-url.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.