← Arquitectura por épica

FT-PLT-06 · Configuración de atributos por plantilla y por negocio…

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-PLT-06: 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-PLT-06.json, generada con generar.py; la ficha de la épica es trazabilidad/features/FT-PLT-06-configuracion-atributos-por-negocio.md.

En 30 segundos

Una misma plantilla sirve a Mercaderías, Suburbia y Marketplace, pero cada negocio necesita exigir cosas distintas. Esta épica deja que Gobierno de Producto marque, atributo por atributo y negocio por negocio, si se pide y si es requerido, recomendado u opcional, y calcula con eso la «vista efectiva»: la lista ya resuelta de lo que hay que pedir para una plantilla y un negocio. Esa vista es lo único que leen la captura, la validación en línea, el score, la IA y la API de terceros.

  • Módulo dueño: MS-01 Catálogo. También participan: MS-02 Producto, MS-03 Migración y convivencia, MS-06 Evaluación, MS-10 Exportador al DWH, MS-11 Activos digitales.
  • Etapa 2 · Plantilla. Recibe «PE-C · Catálogo vigente» y entrega «PE-3 · Plantilla asignada».
  • APIs: construye 4 y usa 7 que construyen otras épicas.
  • Eventos: publica 2 y consume 7.

1. Dónde encaja

Recibe

DeQué
PE-C · Catálogo vigenteEl catálogo vigente de MS-01, del que la vista toma atributos, listas, grupos y árbol, y cuyos avisos la recalculan.
FT-PLT-02 · Catálogo de atributosLos atributos con su tipo, restricciones y regla condicional por omisión.
FT-PLT-03 · Listas de valores y modelo canónico con equivalencias por…Los valores activos de cada lista, que la configuración de la plantilla filtra.
FT-PLT-04 · Grupos de atributos y mínimos de información por sistema…Los mínimos por destino: el de SAP como capa de datos maestros y el de cada canal como requerido para publicar.
FT-PLT-05 · Taxonomía de plantillas por familia, metadatos de…La plantilla asignada al producto y el árbol con su herencia, de donde se resuelve lo que cada plantilla toma de sus ancestros.

Entrega

AQué
PE-3 · Plantilla asignadaLa vista efectiva de la plantilla y el negocio del producto (API-01-028): qué pedir, en qué sección y orden, con qué nivel y capa, para qué etapa es requerido y con qué valores.
FT-RAC-01 · Motor de validación en línea y candados de datos…El nivel, la capa, las restricciones y las reglas condicionales de cada atributo, con que la validación en línea decide qué falta.
FT-PRD-07 · Captura guiada por pasos con los mínimos primeroLas secciones, el orden y la obligatoriedad por negocio con que la captura guiada arma sus pasos.
FT-RAC-02 · Score de calidad del productoLos requeridos, recomendados y opcionales con que se calcula la completitud del score.
FT-FLU-04 · Carga masiva de productos por archivoLa vista por plantilla y negocio con que se arma la plantilla de la carga masiva de productos.
FT-IA-01 · Prellenado con IA y validación obligatoria del usuarioQué atributos pide la plantilla, para prellenarlos y que el usuario los valide.
FT-IA-03 · Enriquecimiento de atributos opcionales con IA y política…Los atributos opcionales y recomendados que la IA puede enriquecer.
FT-PLT-07 · Reglas de atributosLa configuración de cada plantilla y negocio sobre la que corren los calculados y las reglas de calidad.
FT-PLT-08 · Títulos, nombres y descripciones de productoLas reglas del nombre de cada plantilla y los atributos que forman el título.
FT-PLT-10 · Fachada v1 compatible con P360 para Entrada Única y ForoLa vista efectiva y los valores válidos por atributo (API-01-028 y API-01-108) que compone el formulario de captura del BFF.
FT-MIG-02 · Migración de plantillas, atributos y listas de valoresEl destino de la configuración que se migra del catálogo 54001 y la vista con la que se concilia contra P360 el mismo día.
FT-PLT-09 · Carga masiva de configuración de plantillas con…El modelo de configuración por plantilla y negocio que también se carga por archivo, con las mismas reglas.

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

Configuración de atributos de una pla…
Plan de cambio de la configuración
y 4 más

POST /internal/product/catalog-usage

TEMPLATE_VIEW_CHANGED

TEMPLATE_VIEW_CHANGED

TEMPLATE_VIEW_CHANGED

TEMPLATE_VIEW_CHANGED

Vista efectiva de una plantilla por n…

Carga de la migración
Vista efectiva de una plantilla por n…

Lee lo que P360 entrega ese mismo día

Revisar valores en el momento

Pedir permiso para subir un archivo

Administración del catálogo

Seller

Entrada Única · Vendor Center

BFF del portal

★ MS-01 Catálogo

MS-02 Producto

MS-03 Migración y convivencia

MS-06 Evaluación

MS-10 Exportador al DWH

MS-11 Activos digitales

Base pim

Eventos

P360

Contexto de FT-PLT-06

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-10 Exportador al DWHMS-06 EvaluaciónEventosBase·pimMS-02 ProductoMS-01 CatálogoEntrada Única · Vendor CenterMS-10 Exportador al DWHMS-06 EvaluaciónEventosBase·pimMS-02 ProductoMS-01 CatálogoEntrada Única · Vendor CenterAdministración del catálogoBFF1. Abre la configuración de atributos de la plantilla2. Pide la configuración por atributo y negocioGET /api/v2/taxonomies/PRODUCT/nodes/{id}/bindings3. Marca el nivel de cada atributo por negocio4. Pide el plan con las vistas que resultaríanPOST /api/v2/taxonomies/PRODUCT/nodes/{id}/bindings/plans5. Cuenta los productos de la plantilla por estadoPOST /internal/product/catalog-usage6. Confirma y abre la solicitud de cambioPOST /api/v2/catalog-plans/{planId}/apply7. Otro administrador aprueba la solicitudPOST /api/v2/catalog-change-requests/{changeRequestId}/decision8. Guarda la configuración y recalcula las tres vistas9. Avisa la vista nueva de cada negocioTEMPLATE_VIEW_CHANGED10. Entrega el cambio para recalcular la completitudTEMPLATE_VIEW_CHANGED11. Entrega el cambio para el diccionario de plantillas del DWHTEMPLATE_VIEW_CHANGED12. Entrega el cambio para refrescar su copia de la vistaTEMPLATE_VIEW_CHANGED13. Lee la vista del negocio para validar la capturaGET /api/v2/taxonomies/PRODUCT/nodes/{id}/effective14. Pide los valores válidos de una lista grandeGET /api/v2/taxonomies/PRODUCT/nodes/{id}/attributes/{attribute…Administración del catálogoBFF
Flujo principal de FT-PLT-06
Los pasos en texto
PasoDeAQué haceAPI o evento
1Administración del catálogoEntrada Única · Vendor CenterAbre la configuración de atributos de la plantilla—
2Entrada Única · Vendor CenterMS-01 Catálogo (por el BFF)Pide la configuración por atributo y negocioAPI-01-024
3Administración del catálogoEntrada Única · Vendor CenterMarca el nivel de cada atributo por negocio—
4Entrada Única · Vendor CenterMS-01 Catálogo (por el BFF)Pide el plan con las vistas que resultaríanAPI-01-025
5MS-01 CatálogoMS-02 ProductoCuenta los productos de la plantilla por estadoAPI-02-113
6Entrada Única · Vendor CenterMS-01 Catálogo (por el BFF)Confirma y abre la solicitud de cambioAPI-01-004
7Entrada Única · Vendor CenterMS-01 Catálogo (por el BFF)Otro administrador aprueba la solicitudAPI-01-103
8MS-01 CatálogoBase pimGuarda la configuración y recalcula las tres vistas—
9MS-01 CatálogoEventosAvisa la vista nueva de cada negociocatalog.governance.changed/TEMPLATE_VIEW_CHANGED
10EventosMS-06 EvaluaciónEntrega el cambio para recalcular la completitudcatalog.governance.changed/TEMPLATE_VIEW_CHANGED
11EventosMS-10 Exportador al DWHEntrega el cambio para el diccionario de plantillas del DWHcatalog.governance.changed/TEMPLATE_VIEW_CHANGED
12EventosMS-02 ProductoEntrega el cambio para refrescar su copia de la vistacatalog.governance.changed/TEMPLATE_VIEW_CHANGED
13MS-02 ProductoMS-01 CatálogoLee la vista del negocio para validar la capturaAPI-01-028
14BFF del portalMS-01 CatálogoPide los valores válidos de una lista grandeAPI-01-108

3.1 Desligar un atributo sin perder valores

EventosMS-02 ProductoMS-01 CatálogoEntrada Única · Vendor CenterEventosMS-02 ProductoMS-01 CatálogoEntrada Única · Vendor CenterBFF1. Pide desligar un dato maestro de la raízPOST /api/v2/taxonomies/PRODUCT/nodes/{id}/bindings/plans2. Lo liga a una plantilla de nivel 4 en el mismo planPOST /api/v2/taxonomies/PRODUCT/nodes/{id}/bindings/plans3. Cuenta los productos que ya tienen valorPOST /internal/product/catalog-usage4. Confirma y abre la solicitudPOST /api/v2/catalog-plans/{planId}/apply5. Otro administrador aprueba la solicitudPOST /api/v2/catalog-change-requests/{changeRequestId}/decision6. Avisa las vistas que dejan de pedirloTEMPLATE_VIEW_CHANGED7. Lee la vista: el valor guardado se vuelve a mostrarGET /api/v2/taxonomies/PRODUCT/nodes/{id}/effectiveBFF
Desligar un atributo sin perder valores

3.2 Paridad con P360 al migrar

P360Base·pimMS-01 CatálogoMS-03 Migración y convivenciaP360Base·pimMS-01 CatálogoMS-03 Migración y convivencia1. Carga la configuración del catálogo 54001 por plantillaPOST /internal/governance/bulk-load/{coleccion}2. Calcula las vistas de los tres negocios3. Lee la vista de cada negocioGET /api/v2/taxonomies/PRODUCT/nodes/{id}/effective4. Lee lo que P360 entrega ese mismo día5. Registra cada diferencia para conciliar antes del corte
Paridad con P360 al migrar

3.3 Atributos adicionales del seller

MS-11 Activos digitalesMS-02 ProductoMS-01 CatálogoEntrada Única · Vendor CenterMS-11 Activos digitalesMS-02 ProductoMS-01 CatálogoEntrada Única · Vendor CenterSellerBFF1. Quiere describir más capacidades de su drone2. Busca atributos del catálogo que su plantilla no pideGET /api/v2/attributes3. Valida los valores adicionales como opcionalesPOST /api/v2/products/{id}/values/plans4. Pide subir la ficha técnica como documentoPOST /api/v2/assets/uploadsSellerBFF
Atributos adicionales del seller

4. Si algo sale mal

  • Un cambio relaja lo que la plantilla hereda (baja un requerido o amplía una lista). El plan responde 422 BUSINESS_ERROR: el hijo sólo puede pedir más; si una rama no necesita un atributo, se configura un nivel abajo.
  • Gobierno de Producto vuelve requerido un atributo en una plantilla con productos. Es una solicitud con impacto: el plan muestra cuántos borradores, enviados y aprobados hay. Al aprobarse, sólo afecta a borradores y capturas nuevas; lo enviado y lo aprobado no se bloquea.
  • La vista quedó atrás de un cambio de atributo, lista o rama. MS-01 recalcula las vistas afectadas al consumir sus propios avisos; cada vista trae sus versiones de origen y los consumidores descartan versiones viejas.
  • Al migrar, la vista de una plantilla no da los mismos atributos que P360 ese día. MS-03 registra la diferencia por plantilla y negocio y la plantilla no se da por migrada hasta conciliarla; el corte de R1 no avanza con diferencias abiertas.
  • Producto no responde el conteo de impacto. El plan responde 503 DEPENDENCY_UNAVAILABLE y no se arma a medias; se reintenta sin abrir solicitud.

5. APIs

Las que construye esta épica (4)

GET /api/v2/taxonomies/PRODUCT/nodes/{id}/bindings · Configuración de atributos de una plantilla
CampoValor
APIAPI-01-024 · MS-01 Catálogo
Para quéMuestra cómo se configura cada atributo en una plantilla: si es propio, heredado de un ancestro o global; su orden, sección, filtro de valores y regla condicional; y, por negocio, si se pide, su nivel y su capa.
En esta épicaVer la configuración de una plantilla por atributo y negocio
Quién la llamaBFF del portal
PermisoCAT-L
CabecerasAuthorization, X-Request-Id
Parámetrosid = EU4-0412

Request

null

Response · 200

{
  "success": true,
  "data": {
    "templateId": "EU4-0412",
    "version": 14,
    "bindings": [
      {
        "attributeId": "MATERIAL_VASO",
        "origin": "PROPIO",
        "order": 30,
        "section": "CARACTERISTICAS",
        "multivalued": false,
        "byBusiness": {
          "MER": {
            "included": true,
            "level": "OPTIONAL",
            "layer": 5
          },
          "SUB": {
            "included": true,
            "level": "REQUIRED",
            "layer": 3
          },
          "MKP": {
            "included": true,
            "level": "OPTIONAL",
            "layer": 5
          }
        },
        "valueFilter": {
          "allowedCodes": [
            "VID",
            "PLA",
            "ACI"
          ]
        },
        "dependency": null
      },
      {
        "attributeId": "MARCA",
        "origin": "GLOBAL",
        "order": 2,
        "section": "DATOS_BASE",
        "byBusiness": {
          "MER": {
            "included": true,
            "level": "REQUIRED",
            "layer": 1
          },
          "SUB": {
            "included": true,
            "level": "REQUIRED",
            "layer": 1
          },
          "MKP": {
            "included": true,
            "level": "REQUIRED",
            "layer": 1
          }
        }
      }
    ]
  }
}

Errores

HTTPCódigoCuándo
404NOT_FOUNDLa plantilla no existe
POST /api/v2/taxonomies/PRODUCT/nodes/{id}/bindings/plans · Plan de cambio de la configuración
CampoValor
APIAPI-01-025 · MS-01 Catálogo
Para quéRevisa sin escribir ligar, cambiar o desligar atributos de una plantilla (o de la raíz, que es lo global). Muestra cómo quedaría la vista de cada negocio y pide a Producto cuántos productos de la plantilla hay por estado; un cambio nunca bloquea hacia atrás lo enviado o aprobado.
En esta épicaLigar, cambiar o desligar atributos de una plantilla o de la raíz
Quién la llamaBFF del portal
PermisoCAT-E
CabecerasAuthorization, X-Request-Id, Idempotency-Key, If-Match
Parámetrosid = EU4-0412
También la usanFT-IA-03, FT-REF-01

Request

{
  "operation": "UPDATE",
  "version": 14,
  "items": [
    {
      "attributeId": "MATERIAL_VASO",
      "byBusiness": {
        "MER": {
          "level": "REQUIRED",
          "layer": 3
        },
        "MKP": {
          "level": "RECOMMENDED",
          "layer": 4
        }
      }
    }
  ]
}

Response · 200

{
  "success": true,
  "data": {
    "planId": "pln-d4e7b2",
    "expiresAt": "2027-01-15T15:10:00Z",
    "requiresApproval": true,
    "views": [
      {
        "business": "MER",
        "required": {
          "before": 14,
          "after": 15
        },
        "recommended": {
          "before": 9,
          "after": 9
        },
        "optional": {
          "before": 67,
          "after": 66
        }
      },
      {
        "business": "MKP",
        "required": {
          "before": 10,
          "after": 10
        },
        "recommended": {
          "before": 6,
          "after": 7
        },
        "optional": {
          "before": 58,
          "after": 57
        }
      }
    ],
    "impact": {
      "productsByStatus": {
        "BORRADOR": 23,
        "EN_REVISION": 4,
        "APROBADO": 380
      },
      "appliesTo": "BORRADORES_Y_CAPTURAS_NUEVAS"
    },
    "warnings": [],
    "applyUrl": "/api/v2/catalog-plans/pln-d4e7b2/apply"
  }
}

Errores

HTTPCódigoCuándo
422BUSINESS_ERRORRelaja lo heredado del padre: el hijo sólo puede pedir más
422VALIDATION_ERROREl atributo está inactivo, o el nivel, la capa o el negocio no existen
409VERSION_CONFLICTLa plantilla cambió desde que se leyó
503DEPENDENCY_UNAVAILABLEProducto no respondió el conteo: el plan no se arma a medias
GET /api/v2/taxonomies/PRODUCT/nodes/{id}/effective · Vista efectiva de una plantilla por negocio
CampoValor
APIAPI-01-028 · MS-01 Catálogo
Para quéLa pieza que lee todo el sistema para saber qué pedir: los atributos de la plantilla ya resueltos para un negocio, con su nivel (requerido, recomendado u opcional), su capa, para qué etapa es requerido, sus valores permitidos, reglas condicionales, secciones, mínimo de imágenes y reglas del nombre. Se calcula al aplicar cada cambio, no al leer.
En esta épicaLa vista efectiva por plantilla y negocio
Quién la llamaBFF del portal, Gateway de terceros /partner/v1, MS-02 Producto, MS-03 Migración y convivencia, MS-06 Evaluación, MS-15 IA y enriquecimiento
PermisoENT-L: quien captura o revisa una propuesta; los módulos, con su cuenta de servicio
CabecerasAuthorization, X-Request-Id
Parámetrosid = EU4-0412, business = MER
También la usanFT-ACT-01, FT-ACT-05, FT-ARQ-01, FT-FLU-01, FT-FLU-04, FT-FLU-05, FT-FLU-06, FT-IA-01, FT-IA-03, FT-IA-05, FT-MIG-02, FT-PLT-03, FT-PLT-10, FT-PRD-01, FT-PRD-02, FT-PRD-03, FT-PRD-07, FT-PRD-09, FT-PRD-10, FT-RAC-01, FT-RAC-02, FT-RAC-05, FT-REF-01

Request

null

Response · 200

{
  "success": true,
  "data": {
    "templateId": "EU4-0412",
    "business": "MER",
    "viewVersion": 31,
    "computedAt": "2027-01-15T15:20:03Z",
    "sourceVersions": {
      "EU4-0412": 15,
      "EU3-0398": 6,
      "GLOBAL": 22,
      "COLORES_LOV": 7
    },
    "sections": [
      {
        "section": "DATOS_BASE",
        "label": "Datos base",
        "order": 1
      },
      {
        "section": "CARACTERISTICAS",
        "label": "Características",
        "order": 2
      }
    ],
    "attributes": [
      {
        "attributeId": "MARCA",
        "label": "Marca",
        "section": "DATOS_BASE",
        "order": 2,
        "dataType": "LOV",
        "lovId": "MARCAS_ECC_LOV",
        "newValuePolicy": "REJECT",
        "level": "REQUIRED",
        "layer": 1,
        "requiredFor": [
          "ENVIO",
          "SKU"
        ],
        "variantLevel": "GENERIC",
        "inheritedFrom": "GLOBAL"
      },
      {
        "attributeId": "COLOR_PRINCIPAL",
        "label": "Color principal",
        "section": "CARACTERISTICAS",
        "order": 20,
        "dataType": "LOV",
        "lovId": "COLORES_LOV",
        "allowedCodes": [
          "0700",
          "0705",
          "0900"
        ],
        "newValuePolicy": "REQUEST",
        "level": "REQUIRED",
        "layer": 3,
        "requiredFor": [
          "ENVIO"
        ],
        "variantLevel": "VARIANT"
      },
      {
        "attributeId": "DESCRIPCION_LARGA",
        "label": "Descripción larga",
        "section": "CARACTERISTICAS",
        "order": 40,
        "dataType": "RICH_TEXT",
        "constraints": {
          "maxLength": 4000
        },
        "level": "RECOMMENDED",
        "layer": 4,
        "requiredFor": [
          "PUBLICACION:TIENDA"
        ]
      },
      {
        "attributeId": "CERTIFICADO_SOSTENIBLE",
        "label": "Certificado sostenible",
        "section": "CARACTERISTICAS",
        "order": 60,
        "dataType": "LOV",
        "lovId": "CERTIFICADOS_LOV",
        "level": "OPTIONAL",
        "layer": 5,
        "dependency": {
          "on": "PRACTICA_SOSTENIBLE",
          "showWhen": [
            "01",
            "02",
            "03"
          ],
          "requireWhen": [
            "01"
          ]
        }
      }
    ],
    "counts": {
      "required": 15,
      "recommended": 9,
      "optional": 66
    },
    "assetRequirements": {
      "PRINCIPAL": {
        "min": 1
      },
      "DETALLE": {
        "min": 3
      }
    },
    "nameRules": {
      "nameGuide": "Producto + Marca + Modelo",
      "orderOfAttributesForName": [
        "TIPO_PRODUCTO",
        "MARCA",
        "MODELO"
      ]
    },
    "extras": {
      "allowed": true,
      "source": "CATALOGO"
    },
    "warnings": []
  }
}

Errores

HTTPCódigoCuándo
404NOT_FOUNDLa plantilla no existe, está inactiva o no es una hoja que reciba productos
400VALIDATION_ERROREl negocio no es MER, SUB ni MKP
GET /api/v2/taxonomies/PRODUCT/nodes/{id}/attributes/{attributeId}/values · Valores válidos de un atributo en una plantilla
CampoValor
APIAPI-01-108 · MS-01 Catálogo
Para quéPara las listas grandes que no caben en la vista efectiva: da, con búsqueda y páginas, los valores que acepta un atributo en una plantilla y negocio, ya filtrados por el filtro de la plantilla, por los activos y, si el atributo depende de otro, por el valor que ya se eligió en el padre.
En esta épicaLos valores válidos de un atributo en una plantilla, con búsqueda y valor del padre
Quién la llamaBFF del portal, Gateway de terceros /partner/v1, MS-02 Producto
PermisoENT-L: quien captura o revisa una propuesta; los módulos, con su cuenta de servicio
CabecerasAuthorization, X-Request-Id
Parámetrosid = EU4-0412, attributeId = CERTIFICADO_SOSTENIBLE, business = MER, parentValue = 01, q = `, page = 1, size = 50`
También la usanFT-PLT-10

Request

null

Response · 200

{
  "success": true,
  "data": {
    "templateId": "EU4-0412",
    "attributeId": "CERTIFICADO_SOSTENIBLE",
    "business": "MER",
    "viewVersion": 31,
    "appliedFilters": [
      "VALUE_FILTER:EU4-0412",
      "ACTIVE",
      "ENABLED_BY:PRACTICA_SOSTENIBLE=01"
    ],
    "items": [
      {
        "code": "C01",
        "label": "Comercio justo",
        "order": 1
      },
      {
        "code": "C04",
        "label": "Algodón orgánico",
        "order": 4
      }
    ],
    "page": 1,
    "size": 50,
    "total": 2
  }
}

Errores

HTTPCódigoCuándo
404NOT_FOUNDLa plantilla no tiene ese atributo para ese negocio
422VALIDATION_ERROREl atributo depende de otro y falta el valor del padre

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-01-004POST /api/v2/catalog-plans/{planId}/applyConfirmar el plan y abrir la solicitudFT-PLT-01 · Fundamentos de gobierno de plantillas
API-01-103POST /api/v2/catalog-change-requests/{changeRequestId}/decisionAprobar el cambio de configuraciónFT-PLT-01 · Fundamentos de gobierno de plantillas
API-01-053POST /internal/governance/bulk-load/{coleccion}Migrar la configuración del catálogo 54001FT-PLT-01 · Fundamentos de gobierno de plantillas
API-01-001GET /api/v2/attributesBuscar atributos del catálogo para agregar como adicionalesFT-PLT-02 · Catálogo de atributos
API-02-012POST /api/v2/products/{id}/values/plansValidar los valores adicionales en la propuestaFT-RAC-01 · Motor de validación en línea y candados de datos…
API-11-004POST /api/v2/assets/uploadsSubir la ficha técnica como activoFT-ACT-02 · Registro, congelado y publicación de URLs de activos
API-02-113POST /internal/product/catalog-usageCuántos productos de la plantilla hay por estadoFT-PLT-02 · Catálogo de atributos

6. Eventos

Publica

EventoCuándoQuién lo consume
catalog.governance.changed/TEMPLATE_VIEW_CHANGEDCambia la vista de una plantilla y negocio: por su configuración, por herencia o por un atributo, lista o mínimo que la afectaFT-ACT-01, FT-ACT-05, FT-IA-03, FT-PLT-09, FT-PRD-01, FT-RAC-01, FT-RAC-02
catalog.governance.changed/TEMPLATE_CHANGEDSe aprueba un cambio en la configuración de atributos de una plantilla o de la raízFT-ARQ-02, FT-PLT-01, FT-PLT-08

Consume

EventoPara quéQuién lo publica
catalog.governance.changed/TEMPLATE_VIEW_CHANGEDMS-02 refresca la vista con que valida y recalcula lo que le falta a las propuestas abiertasesta misma épica
catalog.governance.changed/TEMPLATE_VIEW_CHANGEDMS-06 recalcula la completitud del score con los nuevos requeridos y recomendadosesta misma épica
catalog.governance.changed/TEMPLATE_VIEW_CHANGEDMS-10 manda al DWH el diccionario de plantillas actualizadoesta misma épica
catalog.governance.changed/TEMPLATE_VIEW_CHANGEDMS-15 sabe qué atributos opcionales puede enriquecer en cada plantillaesta misma épica
catalog.governance.changed/ATTRIBUTE_CHANGEDMS-01 recalcula las vistas de las plantillas que usan el atributoFT-PLT-02, FT-PLT-04, FT-PLT-09
catalog.governance.changed/LOV_VALUE_CHANGEDMS-01 recalcula las vistas que filtran ese valorFT-INT-04, FT-PLT-03, FT-PLT-09, FT-REF-01
catalog.governance.changed/TAXONOMY_NODE_CHANGEDMS-01 recalcula las vistas de la rama que se movió o heredóFT-CAT-04, FT-INT-03, FT-INT-04, FT-PLT-05, FT-PLT-09

7. Datos

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

ColecciónDueñoQué guardaEsta épica
taxonomy_nodesMS-01Plantillas y nodos de grupo de artículo, con la configuración de atributos de cada plantilla.escribe
taxonomiesMS-01Los árboles: plantillas, grupos de artículo y sitios web.escribe
template_viewsMS-01La vista efectiva ya resuelta por plantilla y negocio: qué atributos pide y cuáles son obligatorios.escribe
governance_receiptsMS-01El recibo de cada escritura confirmada en el catálogo (antes operation_receipts).escribe
governance_outboxMS-01Los cambios del catálogo que esperan salir como evento (antes outbox).escribe
attributesMS-01Cada atributo: tipo, lista, restricciones, grupos e identificadores externos.lee
lovsMS-01Cabecera de cada lista de valores.lee
lov_valuesMS-01Cada valor de lista: código, etiqueta, orden y equivalencias por sistema.lee
attribute_groupsMS-01Grupos de atributos, incluidos los de permiso (quién ve y quién edita).lee
taxonomy_nodesMS-01Plantillas y nodos de grupo de artículo, con la configuración de atributos de cada plantilla.lee
taxonomiesMS-01Los árboles: plantillas, grupos de artículo y sitios web.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

8. Historias que cubre

HistoriaPrioridadCómo la cubre
FT-PLT-06·H1 · Obligatoriedad por negocioP1pasos 2, 3, 4, 8, 13; API-01-024, API-01-025, API-01-028, API-01-108
FT-PLT-06·H2 · Tres nivelesP1pasos 13; API-01-028. Fuera: Que un requerido vacío no deje avanzar y un recomendado no bloquee lo cobran la validación en línea (FT-RAC-01) y la captura por pasos (FT-PRD-07) con el nivel, la capa y la etapa que trae la vista.
FT-PLT-06·H3 · Paridad al migrarP1flujo «Paridad con P360 al migrar»; API-01-053, API-01-028
FT-PLT-06·H4 · Crecer sin nuevos obligatoriosP2pasos 4, 5, 6, 7; API-01-025, API-02-113
FT-PLT-06·H5 · Atributos adicionalesP2flujo «Atributos adicionales del seller»; API-01-001, API-01-028, API-02-012, API-11-004
FT-PLT-06·H6 · Desvincular un atributo sin perder valoresP1flujo «Desligar un atributo sin perder valores»; API-01-025, API-02-113

9. Decisiones de esta épica

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

  • D-PLT-06-1. La vista efectiva es la única definición de «qué se pide»: la leen la captura, la validación en línea, el score, la IA, la API de terceros y, desde R1, las pantallas de Entrada Única y de Foro por el BFF. No se construye GetTemplate ni ninguna ruta de compatibilidad. Por qué: Hoy hay cuatro definiciones de «los atributos de una plantilla»; con una sola vista se acaban las diferencias entre canales. Decisión 20 del backend compartido que adopta ADR-12. Se apoya en ADR-12, DEC-PLT-04, PD-03.
  • D-PLT-06-2. Tres niveles y cinco capas a la vez: cada atributo de la vista trae su nivel (requerido, recomendado u opcional) y su capa (1 datos maestros, 2 súper obligatorio, 3 obligatorio del negocio, 4 sugerido, 5 opcional). Las capas 1 a 3 son «requerido». Por qué: La versión de cinco capas del 8-oct no invalida la de tres: así sirven las dos sin cambiar el contrato. Se apoya en RN-PLA-08, RF-PLA-05, DEC-45.
  • D-PLT-06-3. Cada requerido dice para qué etapa lo es (requiredFor): las capas 1 a 3 frenan el envío de la propuesta y la capa 1 además la creación del SKU; el mínimo de cada canal no frena el envío: frena sólo la publicación en ese canal. Por qué: Dos carreteras: antes del SKU frena lo indispensable y la calidad del contenido frena la publicación por canal. Se apoya en PD-24, RF-PLA-02.
  • D-PLT-06-4. Crecer sin nuevos obligatorios: todo atributo que se agrega a una plantilla con productos entra como recomendado u opcional. Volverlo requerido es una solicitud con impacto que nunca aplica hacia atrás: lo enviado y lo aprobado no se bloquean; sólo los borradores y las capturas nuevas. Por qué: Que Marketplace siga con sus 10 requeridos aunque la plantilla crezca a 52 atributos, y que la migración no bloquee productos por obligatorios que P360 no exigía. Se apoya en RN-PLA-11, RN-MIG-03, RN-PLA-09.
  • D-PLT-06-5. La lista de atributos de una plantilla es su configuración más la global (la raíz) y lo heredado; las categorías de característica quedan como dato del nodo. Los obligatorios que el proveedor no ve siguen obligatorios, en una sección interna que frena la tarea de su área y nunca el envío del proveedor. Por qué: Es lo que hoy usan el portal y la aprobación, y se puede cambiar después sin volver a migrar. Se apoya en PD-03, DUD-03.
  • D-PLT-06-6. Desligar no borra: quitar un atributo de una plantilla o de la raíz sólo deja de pedirlo; los valores siguen en el producto (MS-02) y reaparecen si el atributo se vuelve a ligar, en ese nivel o en otro. Por qué: El dato es del producto y su dueño es MS-02; la plantilla sólo decide qué se pide. Se apoya en DEC-ARQ-12, ADR-12.
  • D-PLT-06-7. Los atributos adicionales del seller salen sólo del catálogo, nunca como texto libre, y quedan como opcionales de ese producto sin volverse obligatorios para nadie. La ficha técnica es un activo de MS-11. Por qué: Deja describir un producto técnico sin perder el gobierno del catálogo ni inflar la plantilla de todos. Se apoya en PEN-31, RF-PLA-08.
  • D-PLT-06-8. La vista se calcula y se guarda para MER, SUB y MKP al aplicar cada cambio, no al leer, y la lectura responde en menos de 300 ms. Los cambios de la propia plantilla la recalculan en la misma transacción; los de atributos, listas, grupos o ancestros, al consumir sus avisos. Los valores de las listas grandes se piden aparte (API-01-108). Por qué: La vista la leen todas las etapas en cada captura: calcularla al leer repetiría el trabajo miles de veces y daría respuestas distintas en el mismo minuto. Se apoya en DEC-PLT-04, DEC-PLT-10.

Qué falta decidir

IDQué falta
PD-03Gobierno de Producto con Arquitectura ratifican la lista única con tres plantillas reales (propuesta del 17-oct).
PD-24Gobierno de Producto con Marketplace ratifican qué frena cada requerido (propuesta del 16 y 17-oct).
PD-14Gobierno de Producto ratifica qué es endurecer al heredar (propuesta del 17-oct).

También siguen abiertos: PEN-84, Los negocios entregan cuántos y cuáles son sus obligatorios por plantilla; PEN-31, Confirmar que el seller sólo agrega atributos del catálogo, sin texto libre.

Fuentes

  1. [D] trazabilidad/features/FT-PLT-06-configuracion-atributos-por-negocio.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.