← Arquitectura por épica

FT-ACT-01 · Tipos de activo digital y reglas de imágenes por…

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-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-ACT-01.json, generada con generar.py; la ficha de la épica es trazabilidad/features/FT-ACT-01-tipos-activo-reglas-imagenes.md.

En 30 segundos

Hoy cada sistema revisa las fotos a su manera: Entrada Única con su configuración, Foro con la suya y P360 con atributos de la plantilla. Esta épica deja un solo catálogo de tipos de activo (principal, detalle, video, certificado, boceto…) con su ficha técnica, su nombre y su posición, y una sola revisión de si un producto ya tiene las imágenes que pide su plantilla en su negocio. La usan el portal, el estudio y el motor de estados.

  • Módulo dueño: MS-11 Activos digitales. También participan: MS-01 Catálogo, MS-02 Producto.
  • Etapa 6 · Imágenes. Recibe «PE-C · Catálogo vigente», «PE-T · Usuario con permisos y bitácora» y entrega a otras épicas.
  • APIs: construye 4 y usa 10 que construyen otras épicas.
  • Eventos: publica 2 y consume 2.

1. Dónde encaja

Recibe

DeQué
PE-C · Catálogo vigenteLas plantillas publicadas por Catálogo (MS-01) con su vista efectiva por negocio, de donde salen los mínimos y máximos de imágenes y el atributo que condiciona cada documento.
FT-PLT-05 · Taxonomía de plantillas por familia, metadatos de…Los metadatos de cada plantilla con el mínimo y el máximo por tipo de imagen (assetRequirements), que sustituyen a NumberOf*Images, a Min/Max y al texto «Mínimo N - Máximo M».
PE-T · Usuario con permisos y bitácoraGobierno de Producto identificado, con permiso para cambiar tipos de activo, y cada cambio en la bitácora.

Entrega

AQué
FT-ACT-02 · Registro, congelado y publicación de URLs de activosEl catálogo de tipos con su ficha técnica, nombre, sufijo, carpeta y si se publica, con el que se valida, se nombra y se congela cada archivo.
FT-ACT-03 · Imágenes del seller por URL con validación y corrección…La ficha de cada tipo, las posiciones y los motivos de rechazo con los que se valida y se corrige la imagen del seller.
FT-ACT-04 · Variantes a partir de imágenes y herencia de imágenes por…Los tipos que se pueden heredar por color y el video como activo de la familia.
FT-RAC-01 · Motor de validación en línea y candados de datos…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.

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

Catálogo de tipos de activo
Cambiar un tipo de activo (vista prev…
y 4 más

Plan de cambio de metadatos
Confirmar un plan del catálogo

TEMPLATE_VIEW_CHANGED

TEMPLATE_VIEW_CHANGED

Vista efectiva de una plantilla por n…

Responde por variante qué falta: un d…
Rechaza por peso: la principal admite…
y 2 más

ASSET_REJECTED
ASSET_VALIDATED

Ficha del producto

Sube el boceto a la zona privada

Pedir permiso para subir un archivo
Avisar que terminó la carga

Sube el archivo a la URL firmada

Administración del catálogo

Proveedor

Estudio fotográfico

Entrada Única · Vendor Center

Agente del estudio

BFF del portal

★ MS-11 Activos digitales

MS-01 Catálogo

MS-02 Producto

Base pim

Eventos

Archivos e imágenes

Contexto de FT-ACT-01

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-01 CatálogoBase·pimMS-11 Activos digitalesEntrada Única · Vendor CenterEventosMS-01 CatálogoBase·pimMS-11 Activos digitalesEntrada Única · Vendor CenterAdministración del catálogoBFF1. Abre el catálogo de tipos de activo2. Pide los tipos con su ficha técnicaGET /api/v2/asset-types3. Agrega un motivo de rechazo al tipo detalle4. Pide el plan del cambio y su impactoPOST /api/v2/asset-types/plans5. Confirma el plan del tipoPOST /api/v2/asset-plans/{planId}/apply6. Guarda la versión nueva del catálogo de tipos7. Fija mínimo y máximo por tipo en una plantilla8. Pide el plan de metadatos de la plantillaPOST /api/v2/taxonomies/{t}/nodes/{id}/metadata/plans9. Confirma los mínimos de la plantillaPOST /api/v2/catalog-plans/{planId}/apply10. Avisa que cambió la vista efectivaTEMPLATE_VIEW_CHANGED11. Entrega el cambio para refrescar sus reglasTEMPLATE_VIEW_CHANGED12. Pregunta si un producto cumple sus imágenesGET /api/v2/assets/compliance?productId=&stage=13. Lee lo que pide la plantilla en ese negocioGET /api/v2/taxonomies/PRODUCT/nodes/{id}/effective14. Responde por variante qué falta: un detalleAdministración del catálogoBFF
Flujo principal de FT-ACT-01
Los pasos en texto
PasoDeAQué haceAPI o evento
1Administración del catálogoEntrada Única · Vendor CenterAbre el catálogo de tipos de activo—
2Entrada Única · Vendor CenterMS-11 Activos digitales (por el BFF)Pide los tipos con su ficha técnicaAPI-11-001
3Administración del catálogoEntrada Única · Vendor CenterAgrega un motivo de rechazo al tipo detalle—
4Entrada Única · Vendor CenterMS-11 Activos digitales (por el BFF)Pide el plan del cambio y su impactoAPI-11-002
5Entrada Única · Vendor CenterMS-11 Activos digitales (por el BFF)Confirma el plan del tipoAPI-11-003
6MS-11 Activos digitalesBase pimGuarda la versión nueva del catálogo de tipos—
7Administración del catálogoEntrada Única · Vendor CenterFija mínimo y máximo por tipo en una plantilla—
8Entrada Única · Vendor CenterMS-01 Catálogo (por el BFF)Pide el plan de metadatos de la plantillaAPI-01-027
9Entrada Única · Vendor CenterMS-01 Catálogo (por el BFF)Confirma los mínimos de la plantillaAPI-01-004
10MS-01 CatálogoEventosAvisa que cambió la vista efectivacatalog.governance.changed/TEMPLATE_VIEW_CHANGED
11EventosMS-11 Activos digitalesEntrega el cambio para refrescar sus reglascatalog.governance.changed/TEMPLATE_VIEW_CHANGED
12Entrada Única · Vendor CenterMS-11 Activos digitales (por el BFF)Pregunta si un producto cumple sus imágenesAPI-11-014
13MS-11 Activos digitalesMS-01 CatálogoLee lo que pide la plantilla en ese negocioAPI-01-028
14MS-11 Activos digitalesEntrada Única · Vendor CenterResponde por variante qué falta: un detalle—

3.1 Un archivo que no cumple la ficha o rebasa el máximo

EventosMS-01 CatálogoMS-11 Activos digitalesEntrada Única · Vendor CenterEventosMS-01 CatálogoMS-11 Activos digitalesEntrada Única · Vendor CenterProveedorBFF1. Elige una principal de 1.5 MB2. Pide permiso de carga con el peso declaradoPOST /api/v2/assets/uploads3. Rechaza por peso: la principal admite 1 MB4. Pide subir la sexta foto de detallePOST /api/v2/assets/uploads5. Lee el máximo de detalle de la plantillaGET /api/v2/taxonomies/PRODUCT/nodes/{id}/effective6. Rechaza la sexta y la posición 21 con su motivo7. Rechaza el archivo subido si sus medidas no cumplenASSET_REJECTEDProveedorBFF
Un archivo que no cumple la ficha o rebasa el máximo

3.2 Boceto para un placeholder

EventosArchivosMS-02 ProductoMS-11 Activos digitalesEntrada Única · Vendor CenterEventosArchivosMS-02 ProductoMS-11 Activos digitalesEntrada Única · Vendor CenterProveedorBFF1. Sube un boceto a su placeholder2. Pide permiso de carga como bocetoPOST /api/v2/assets/uploads3. Revisa que el producto sea un placeholderGET /api/v2/products/{id}4. Sube el boceto a la zona privada5. Avisa el fin de carga, sin exigir la fichaPOST /api/v2/assets/{assetId}/complete6. Avisa el boceto válido, que nunca se congelaASSET_VALIDATED7. En una propuesta normal, rechaza el bocetoProveedorBFF
Boceto para un placeholder

3.3 La foto llega con su nombre y sufijo

EventosBase·pimArchivosMS-11 Activos digitalesAgente del estudioEventosBase·pimArchivosMS-11 Activos digitalesAgente del estudioEstudio fotográfico1. Exporta la foto 1000004812_3p.jpg2. Pide permiso de carga sin decir el tipoPOST /api/v2/assets/uploads3. Sube el archivo a la URL firmada4. Avisa que terminó la cargaPOST /api/v2/assets/{assetId}/complete5. Lee el sufijo 3P: tercer detalle, posición 46. Avisa el activo validado en su posiciónASSET_VALIDATEDEstudio fotográfico
La foto llega con su nombre y sufijo

4. Si algo sale mal

  • Una plantilla no trae mínimos de imágenes. La revisión usa el mínimo de la ficha del tipo, con la principal siempre obligatoria, y lo dice en requirement.source. Gobierno de Producto ve la plantilla marcada para completar sus mínimos; ningún producto queda sin regla.
  • Se quiere bajar el máximo de un tipo que ya usan productos publicados. El plan responde 422 BUSINESS_ERROR y dice cuántos activos quedarían fuera. Nada se borra solo: Gobierno de Producto decide antes de confirmar.
  • La vista efectiva de MS-01 no responde. MS-11 usa su copia en caché mientras no venza (diez minutos, y se invalida con TEMPLATE_VIEW_CHANGED). Sin copia vigente responde 503 DEPENDENCY_UNAVAILABLE; el portal deja guardar el borrador, pero no enviar.
  • Un producto de una marca exceptuada no trae principal. La revisión aplica la excepción registrada en MS-01 y la nombra en exceptionsApplied; el candado de envío no lo frena y la bitácora conserva qué excepción se usó.

5. APIs

Las que construye esta épica (4)

GET /api/v2/asset-types · Catálogo de tipos de activo
CampoValor
APIAPI-11-001 · MS-11 Activos digitales
Para quéDevuelve los tipos de activo (principal, detalle, isométrico, smos, ambientada, video, manual, certificado sostenible, carta responsiva, refund policy, contenido sindicado, boceto y guía de tallas) con su ficha técnica, quién los carga, en qué posiciones van, cómo se nombran, en qué carpeta viven, si se publican y sus motivos de rechazo. El portal, el estudio y los módulos validan contra esta misma ficha.
En esta épicaEl catálogo de tipos con su ficha técnica, nombre, posiciones, carpeta, si se publica y motivos de rechazo
Quién la llamaBFF del portal, MS-02 Producto, MS-06 Evaluación
PermisoCualquier usuario autenticado (CAT-L); los módulos con su cuenta de servicio
CabecerasAuthorization, X-Request-Id
Parámetrosstatus = ACTIVE, publishable = true, page = 1, size = 50
También la usanFT-PLT-07

Request

null

Response · 200

{
  "success": true,
  "data": {
    "catalogVersion": 12,
    "items": [
      {
        "code": "PRINCIPAL",
        "name": "Imagen principal",
        "status": "ACTIVE",
        "uploadedBy": [
          "PROVEEDOR",
          "SELLER",
          "ESTUDIO"
        ],
        "publishable": true,
        "scopes": [
          "VARIANT",
          "COLOR"
        ],
        "maxCount": 1,
        "positions": {
          "from": 1,
          "to": 1
        },
        "sheet": {
          "widthPx": 940,
          "heightPx": 1215,
          "dpi": 72,
          "formats": [
            "jpg"
          ],
          "maxBytes": 1048576
        },
        "naming": {
          "pattern": "{sku}",
          "suffixFrom": null,
          "suffixTo": null
        },
        "folder": "i/",
        "rejectionReasons": [
          {
            "code": "LOGO_VISIBLE",
            "type": "ESTETICA",
            "label": "Se ve un logotipo"
          },
          {
            "code": "FONDO_NO_BLANCO",
            "type": "TECNICA",
            "label": "El fondo no es blanco"
          }
        ]
      },
      {
        "code": "DETALLE",
        "name": "Imagen de detalle",
        "status": "ACTIVE",
        "uploadedBy": [
          "PROVEEDOR",
          "SELLER",
          "ESTUDIO"
        ],
        "publishable": true,
        "scopes": [
          "VARIANT",
          "COLOR"
        ],
        "maxCount": 19,
        "positions": {
          "from": 2,
          "to": 20
        },
        "sheet": {
          "widthPx": 940,
          "heightPx": 1215,
          "dpi": 72,
          "formats": [
            "jpg"
          ],
          "maxBytes": 1048576
        },
        "naming": {
          "pattern": "{sku}_{n}p",
          "suffixFrom": 1,
          "suffixTo": 19
        },
        "folder": "i/"
      },
      {
        "code": "VIDEO",
        "name": "Video del producto",
        "status": "ACTIVE",
        "uploadedBy": [
          "PROVEEDOR",
          "ESTUDIO"
        ],
        "publishable": true,
        "scopes": [
          "FAMILY"
        ],
        "maxCount": 1,
        "kinds": [
          "FILE",
          "LINK"
        ],
        "sheet": {
          "formats": [
            "mp4"
          ],
          "maxBytes": 8388608
        },
        "naming": {
          "pattern": "{genericSku}"
        },
        "folder": "v/"
      },
      {
        "code": "CERTIFICADO_SOSTENIBLE",
        "name": "Certificado sostenible",
        "status": "ACTIVE",
        "uploadedBy": [
          "PROVEEDOR"
        ],
        "publishable": false,
        "scopes": [
          "FAMILY"
        ],
        "maxCount": 1,
        "sheet": {
          "formats": [
            "pdf"
          ],
          "maxBytes": 10485760
        },
        "condition": {
          "attribute": "AE485",
          "requiredUnlessValueIn": [
            "0006"
          ]
        },
        "naming": null,
        "folder": "privado/d/"
      },
      {
        "code": "BOCETO",
        "name": "Boceto de placeholder",
        "status": "ACTIVE",
        "uploadedBy": [
          "PROVEEDOR"
        ],
        "publishable": false,
        "onlyFor": "PLACEHOLDER",
        "scopes": [
          "FAMILY",
          "COLOR"
        ],
        "maxCount": 5,
        "sheet": {
          "formats": [
            "jpg",
            "png"
          ],
          "maxBytes": 5242880
        },
        "naming": null,
        "folder": "privado/boceto/"
      }
    ],
    "page": 1,
    "size": 50,
    "total": 14
  }
}

Errores

HTTPCódigoCuándo
400VALIDATION_ERRORUn filtro trae un valor que no existe
POST /api/v2/asset-types/plans · Cambiar un tipo de activo (vista previa)
CampoValor
APIAPI-11-002 · MS-11 Activos digitales
Para quéPrepara el alta o el cambio de un tipo de activo (ficha técnica, máximo, posiciones, nombre, si se publica, motivos de rechazo) y dice a cuántas plantillas y activos afecta, sin cambiar nada todavía.
En esta épicaVista previa del alta o cambio de un tipo, con su impacto
Quién la llamaBFF del portal
PermisoGobierno de Producto (CAT-E)
CabecerasAuthorization, X-Request-Id, Idempotency-Key, If-Match

Request

{
  "code": "DETALLE",
  "version": 12,
  "changes": {
    "addRejectionReasons": [
      {
        "code": "SOMBRA_FUERTE",
        "type": "TECNICA",
        "label": "La sombra tapa el producto"
      }
    ]
  },
  "comment": "Motivo que pidió QA para rechazar fotos de detalle"
}

Response · 200

{
  "success": true,
  "data": {
    "planId": "pln-a51c07",
    "expiresAt": "2026-10-18T16:40:00Z",
    "impact": {
      "templatesUsingType": 4082,
      "assetsNoLongerCompliant": 0,
      "openRejectionsAffected": 0
    },
    "warnings": [],
    "applyUrl": "/api/v2/asset-plans/pln-a51c07/apply"
  }
}

Errores

HTTPCódigoCuándo
409VERSION_CONFLICTEl catálogo de tipos cambió desde que se leyó
422VALIDATION_ERRORLas posiciones de un tipo se enciman con las de otro o el sufijo se repite
422BUSINESS_ERRORSe intenta bajar un máximo por debajo de lo que ya tienen productos publicados sin decir qué hacer con ellos
POST /api/v2/asset-plans/{planId}/apply · Confirmar un plan de Activos
CampoValor
APIAPI-11-003 · MS-11 Activos digitales
Para quéConfirma cualquier plan de MS-11: un cambio de tipo de activo o un cambio de lugar de los activos de un producto (orden, herencia por color, quitar, no publicar). Escribe, publica los eventos y deja un recibo.
En esta épicaConfirmar el cambio de un tipo
Quién la llamaBFF del portal
PermisoEl mismo que pidió el plan
CabecerasAuthorization, X-Request-Id, Idempotency-Key
ParámetrosplanId = pln-c90e12
Escribe enasset_types, assets, asset_outbox
Publicacatalog.asset.changed/ASSET_FROZEN, catalog.asset.changed/ASSET_DELETED
También la usanFT-ACT-02, FT-ACT-04, FT-ACT-06

Request

{}

Response · 202

{
  "success": true,
  "data": {
    "requestId": "req-3d8f21",
    "status": "ACCEPTED",
    "receiptUrl": "/api/v2/asset-receipts/req-3d8f21"
  }
}

Errores

HTTPCódigoCuándo
409PLAN_EXPIREDPasaron más de 10 minutos desde la vista previa
409VERSION_CONFLICTAlguien cambió los activos del producto o el tipo después de la vista previa
409IDEMPOTENCY_MISMATCHSe repite la llave de idempotencia con otro plan
423LOCKEDEl producto entró al estudio después de la vista previa y quien confirma no es del estudio
GET /api/v2/assets/compliance?productId=&stage= · ¿El producto cumple sus imágenes?
CampoValor
APIAPI-11-014 · MS-11 Activos digitales
Para quéEvalúa las imágenes y documentos de un producto contra lo que pide su plantilla en su negocio, en la etapa que se pregunte: creación (Mercaderías y Suburbia, el mínimo en una variante por color; Marketplace, una imagen) o aprobación (cada variante, con imágenes propias o heredadas). Dice por variante si procede (tiene principal), qué falta, qué documentos condicionados aplican y qué excepciones se usaron. Lo usan el motor para cerrar tareas, la captura para pintar el bloque en verde y la calificación.
En esta épicaLa revisión de cumplimiento de imágenes por variante, etapa y negocio
Quién la llamaBFF del portal, MS-02 Producto, MS-06 Evaluación, MS-12 Estudio fotográfico
PermisoQuien puede leer el producto (ENT-L); los módulos con su cuenta de servicio
CabecerasAuthorization, X-Request-Id
ParámetrosproductId = PRD-0004812, stage = APPROVAL
También la usanFT-ACT-02, FT-ACT-03, FT-ACT-04, FT-ACT-05

Request

null

Response · 200

{
  "success": true,
  "data": {
    "productId": "PRD-0004812",
    "business": "MER",
    "template": "EU4-0412",
    "stage": "APPROVAL",
    "meets": false,
    "requirement": {
      "source": "vista efectiva de EU4-0412 para MER, versión 7",
      "byType": {
        "PRINCIPAL": {
          "min": 1,
          "max": 1
        },
        "DETALLE": {
          "min": 2,
          "max": 5
        },
        "ISOMETRICO": {
          "min": 1,
          "max": 5
        }
      }
    },
    "exceptionsApplied": [],
    "conditional": [
      {
        "assetType": "CERTIFICADO_SOSTENIBLE",
        "required": false,
        "because": "AE485 = 0006 (No aplica)"
      }
    ],
    "variants": [
      {
        "variantId": "VAR-0004812-01",
        "sku": "1000004812",
        "colorCode": "AZUL",
        "procede": true,
        "meets": true,
        "byType": [
          {
            "assetType": "PRINCIPAL",
            "have": 1,
            "own": 1,
            "inherited": 0,
            "missing": 0
          },
          {
            "assetType": "DETALLE",
            "have": 2,
            "own": 2,
            "inherited": 0,
            "missing": 0
          },
          {
            "assetType": "ISOMETRICO",
            "have": 1,
            "own": 1,
            "inherited": 0,
            "missing": 0
          }
        ]
      },
      {
        "variantId": "VAR-0004812-04",
        "sku": "1000004815",
        "colorCode": "ROJO",
        "procede": false,
        "meets": false,
        "byType": [
          {
            "assetType": "PRINCIPAL",
            "have": 0,
            "own": 0,
            "inherited": 0,
            "missing": 1
          },
          {
            "assetType": "DETALLE",
            "have": 1,
            "own": 1,
            "inherited": 0,
            "missing": 1
          },
          {
            "assetType": "ISOMETRICO",
            "have": 1,
            "own": 1,
            "inherited": 0,
            "missing": 0
          }
        ]
      }
    ],
    "missing": [
      {
        "variantId": "VAR-0004812-04",
        "assetType": "PRINCIPAL",
        "count": 1
      },
      {
        "variantId": "VAR-0004812-04",
        "assetType": "DETALLE",
        "count": 1
      }
    ]
  }
}

Errores

HTTPCódigoCuándo
404NOT_FOUNDEl producto no existe o no es visible para quien llama
422BUSINESS_ERROREl producto todavía no tiene plantilla asignada
503DEPENDENCY_UNAVAILABLENo se pudo leer la vista efectiva de la plantilla y no hay una copia vigente en caché

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.

APIMétodo y rutaPara qué, aquíLa construye
API-11-004POST /api/v2/assets/uploadsLa carga rechaza de entrada lo que no cumple la ficha, el máximo o la posiciónFT-ACT-02 · Registro, congelado y publicación de URLs de activos
API-11-005POST /api/v2/assets/{assetId}/completeAl terminar la carga se lee el sufijo del nombre y se valida contra la fichaFT-ACT-02 · Registro, congelado y publicación de URLs de activos
API-11-006POST /api/v2/assets/from-urlRegistrar el video como enlace (YouTube o InStore), varios por productoFT-ACT-03 · Imágenes del seller por URL con validación y corrección…
API-01-027POST /api/v2/taxonomies/{t}/nodes/{id}/metadata/plansFijar en los metadatos de la plantilla el mínimo y el máximo por tipo (lo construye FT-PLT-05)FT-PLT-05 · Taxonomía de plantillas por familia, metadatos de…
API-01-004POST /api/v2/catalog-plans/{planId}/applyConfirmar el cambio de la plantillaFT-PLT-01 · Fundamentos de gobierno de plantillas
API-01-028GET /api/v2/taxonomies/PRODUCT/nodes/{id}/effectiveLeer lo que pide la plantilla en cada negocio y etapaFT-PLT-06 · Configuración de atributos por plantilla y por negocio…
API-01-016GET /api/v2/rules?type=Leer las excepciones de obligatoriedad de imágenes por marca, proveedor o negocioFT-PLT-07 · Reglas de atributos
API-01-017POST /api/v2/rules/plansRegistrar o quitar una excepción de obligatoriedad de imágenesFT-PLT-07 · Reglas de atributos
API-02-002GET /api/v2/products/{id}Saber si el producto es un placeholder y leer el atributo que condiciona un documento (AE485)FT-PRD-01 · Modelo canónico de producto
API-14-008PUT /api/v2/help/articles/{articleId}Gobierno de Producto publica en el centro de ayuda la ficha de cada tipo para proveedores y sellersFT-RAC-05 · Estatus del producto y motivos visibles para seller y…

6. Eventos

Publica

EventoCuándoQuién lo consume
catalog.asset.changed/ASSET_VALIDATEDUn archivo cumple la ficha de su tipo y queda en su posiciónFT-FLU-07, FT-PRD-07, FT-PRD-08, FT-PRD-10
catalog.asset.changed/ASSET_REJECTEDUn archivo subido no cumple la ficha de su tipoFT-ACT-02, FT-ACT-03, FT-ACT-05, FT-RAC-04, FT-RAC-06

Consume

EventoPara quéQuién lo publica
catalog.governance.changed/TEMPLATE_VIEW_CHANGEDMS-11 refresca los mínimos y máximos por plantilla y negocioFT-IA-03, FT-MIG-02, FT-PLT-04, FT-PLT-05, FT-PLT-06, FT-PLT-09
catalog.governance.changed/RULE_CHANGEDMS-11 refresca las excepciones de obligatoriedad de imágenesFT-CAT-04, FT-PLT-07, FT-REF-02

7. Datos

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

ColecciónDueñoQué guardaEsta épica
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.escribe
template_viewsMS-01La vista efectiva ya resuelta por plantilla y negocio: qué atributos pide y cuáles son obligatorios.lee
taxonomy_nodesMS-01Plantillas y nodos de grupo de artículo, con la configuración de atributos de cada plantilla.lee
governance_rulesMS-01Reglas de captura y clasificación: marcas por plantilla, grupo de artículo a plantilla, alcance del proveedor y lista negra de Marketplace.lee
assetsMS-11Cada archivo una vez: a qué producto, variante y posición pertenece, su validación técnica, URL de trabajo y URL congelada.lee
productsMS-02La familia del producto con sus variantes, valores, imágenes (URL), clasificaciones, estado, tareas abiertas y rechazos.lee

8. Historias que cubre

HistoriaPrioridadCómo la cubre
FT-ACT-01·H1 · Catálogo de tiposP1pasos 1, 2, 3, 4, 5, 6; flujo «Un archivo que no cumple la ficha o rebasa el máximo»; API-11-001, API-11-002, API-11-003
FT-ACT-01·H2 · Mínimos por plantillaP1pasos 7, 8, 9, 10, 11, 12, 13, 14; flujo «Un archivo que no cumple la ficha o rebasa el máximo»; API-01-027, API-11-014
FT-ACT-01·H3 · Obligatoriedad por negocioP1pasos 12, 13, 14; API-11-014, API-01-028
FT-ACT-01·H4 · Posición y renombreP2flujo «Un archivo que no cumple la ficha o rebasa el máximo», «La foto llega con su nombre y sufijo»; API-11-001, API-11-004
FT-ACT-01·H5 · ExcepcionesP2API-01-016, API-01-017, API-11-014
FT-ACT-01·H6 · Video y documentosP3API-11-014, API-11-006, API-02-002
FT-ACT-01·H7 · Los once tipos de activoP1pasos 1, 2; API-11-001, API-11-002
FT-ACT-01·H8 · Nombre y sufijo por tipoP1flujo «La foto llega con su nombre y sufijo»; API-11-005
FT-ACT-01·H9 · Imagen de boceto para placeholdersP2flujo «Boceto para un placeholder»; API-11-004, API-02-002

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-01-1. Un solo catálogo de tipos de activo en MS-11 (asset_types) con ficha técnica, quién carga, posiciones, nombre y sufijo, carpeta, si se publica y motivos de rechazo por tipo. Entrada Única deja su configuración de medios y Foro la suya: el portal, el estudio y los módulos leen API-11-001. Por qué: Hoy la misma regla vive en tres lugares (configuración de EU, texto de la plantilla y atributos de P360) y se contradice. Un dueño por dato. Se apoya en ADR-12, RF-IMG-10, DUD-29.
  • D-ACT-01-2. El mínimo y el máximo por tipo son de la plantilla y su negocio: viven en los metadatos de la plantilla en MS-01 (FT-PLT-05) y se leen en la vista efectiva. MS-11 no guarda reglas por plantilla; sólo evalúa con API-11-014 contra lo que tiene cada variante. Por qué: La plantilla ya es de MS-01; copiar sus mínimos en MS-11 crearía una segunda fuente, que es justo el problema de NumberOf*Images contra Min/Max. Se apoya en FT-PLT-05, PD-05, ADR-12.
  • D-ACT-01-3. Nombres y posiciones: principal = SKU sin sufijo; detalle de 1P a 19P (19 detalles y la principal suman 20 posiciones); isométrico 20 a 24; smos 25; ambientada 30 a 35; video con el SKU genérico; los documentos no se renombran. La posición 21 se rechaza. Por qué: Es lo que dictó el negocio en S16 y confirma el código; «hasta 20» son los detalles con la principal, no el rango de sufijos. Se apoya en PEN-52, PEN-159, RF-IMG-10.
  • D-ACT-01-4. Dos etapas de cumplimiento: en creación, Mercaderías y Suburbia piden el mínimo en una variante por color y Marketplace una imagen; en aprobación, cada variante debe tener el mínimo con imágenes propias o heredadas de su color. La principal es obligatoria siempre. Por qué: Son los escenarios del Inventario L4 y del AS-IS de Marketplace; contar la heredada como propia evita exigir fotos repetidas (FT-ACT-04). Se apoya en RN-ALT-02, RN-ALT-04, FT-ACT-04.
  • D-ACT-01-5. Las excepciones a la obligatoriedad de imágenes por marca, proveedor o negocio son una regla de captura de MS-01 (un tipo nuevo en governance_rules, administrado con API-01-017). MS-11 sólo la aplica y dice cuál usó. Por qué: Las reglas de captura ya son de Catálogo; una excepción en el código de MS-11 no se vería ni se auditaría. Se apoya en DEC-PLT-14, PD-01.
  • D-ACT-01-6. Documentos y video: el certificado sostenible sólo es obligatorio si el atributo AE485 es distinto de «No aplica» (0006), con la liga atributo–activo de la plantilla; certificado y carta responsiva nunca se publican; el video vive en la familia y puede ser archivo o enlace (YouTube, InStore), con varios enlaces que la publicación manda separados por coma. Por qué: Es el comportamiento que el negocio describió en S16 y el que hoy lee la tienda en el campo Video. Se apoya en S16-RF-01, RF-IMG-10.
  • D-ACT-01-7. El boceto es un tipo sólo para placeholders: no exige ficha técnica, vive en la zona privada y nunca se congela ni se publica. En una propuesta o un producto se rechaza. Por qué: Lo pide el comprador para ver un diseño que todavía no se fabrica, sin rebajar la regla de las fotos de producto. Se apoya en S36-RF-07.
  • D-ACT-01-8. El catálogo arranca con los once tipos que maneja el negocio, el boceto y la guía de tallas que pide FT-PRD-07; contenido sindicado queda inactivo y NOM y manual Liverpool quedan en revisión hasta que se corrija la ERF 1.4. Por qué: Los tipos son datos, no código: se pueden prender o corregir sin desplegar, y la migración tiene destino para todos los grupos de P360. Se apoya en DUD-29, PD-01, FT-PRD-07.

Qué falta decidir

IDQué falta
DUD-29Gobierno de Producto corrige la ERF 1.4 y confirma la lista final de tipos: carta responsiva, manual Liverpool, NOM y contenido sindicado.
PD-01Decidir si el contenido sindicado y las excepciones entran en la primera salida o son mejora.

También siguen abiertos: PEN-159, Confirmar la ambientada como tipo aparte con sufijos 30 a 35; PEN-149, El equipo de Entrada Única confirma que hoy la principal es obligatoria al crear la propuesta.

Fuentes

  1. [D] trazabilidad/features/FT-ACT-01-tipos-activo-reglas-imagenes.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.