Actualizado el 18-oct-2026. Primera versión de la arquitectura de esta épica.
Qué responde. Cómo funciona por dentro FT-PLT-05: 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-05.json, generada con generar.py; la ficha de la épica es trazabilidad/features/FT-PLT-05-taxonomia-y-metadatos-de-plantilla.md.
En 30 segundos
Hay más de 3,000 plantillas y el proveedor se pierde buscando la suya; además, lo que se configura en una plantilla no pasa a las de su misma familia. Esta épica ordena el árbol de plantillas: plantillas generales por familia para que siempre haya una que sirva, búsqueda por nombre y palabra clave acotada a lo que permite el grupo de artículo del producto, metadatos (nombre, orden de grupos, imágenes mínimas) que se heredan del ancestro más cercano, y jerarquías con tipo y número de niveles.
- Módulo dueño: MS-01 Catálogo. También participan: MS-02 Producto, MS-07 Ingesta de archivos, MS-15 IA y enriquecimiento.
- Etapa 2 · Plantilla. Recibe «PE-2 · Sin duplicado» y entrega «PE-3 · Plantilla asignada».
- APIs: construye 8 y usa 9 que construyen otras épicas.
- Eventos: publica 3 y consume 4.
1. Dónde encaja
Recibe
| De | Qué |
|---|---|
| PE-2 · Sin duplicado | La propuesta sin duplicado y fuera de la lista negra, con su negocio, su proveedor y su grupo de artículo, que todavía necesita plantilla. |
| FT-PLT-01 · Fundamentos de gobierno de plantillas | El mecanismo común de escritura para el árbol: plan, solicitud con aprobación e ID EU{nivel+1}-{número} asignado al aprobar. |
| FT-INT-04 · Catálogos maestros, precios y costos desde SAP/S4H | La jerarquía de grupos de artículo de ECC y de S4H, ya leída del archivo por MS-07. |
| FT-IA-02 · Sugerencia de plantilla por IA a partir del producto… | La plantilla general de familia que sugiere la IA a partir del producto homólogo, con su confianza. |
Entrega
| A | Qué |
|---|---|
| PE-3 · Plantilla asignada | El producto queda con una sola plantilla hoja, activa y permitida para su grupo de artículo y negocio; desde ahí la vista efectiva dice qué pedir. |
| FT-PLT-06 · Configuración de atributos por plantilla y por negocio… | El árbol con su herencia: de qué ancestro toma cada nodo sus metadatos y su configuración, y qué nodos reciben productos. |
| FT-PLT-08 · Títulos, nombres y descripciones de producto | Los metadatos del nombre de cada plantilla (guía, excepciones y orden de atributos para el título), resueltos con herencia. |
| FT-IA-02 · Sugerencia de plantilla por IA a partir del producto… | El árbol, las palabras clave y las plantillas de familia en las que busca la sugerencia de la IA. |
| FT-IA-04 · Integración de los modelos de IA existentes | El árbol de plantillas y los grupos de artículo que usan los modelos de IA que ya existen. |
| FT-ACT-01 · Tipos de activo digital y reglas de imágenes por… | El mínimo por tipo de imagen de cada plantilla (assetRequirements), heredado del ancestro cuando la plantilla no lo define. |
| FT-CAT-03 · Categorización de productos | El árbol de plantillas para mapear cada plantilla con su categoría web. |
| FT-CAT-04 · Clasificación SAP derivada | Las jerarquías de grupos de artículo de ECC y S4H en las que la clasificación crea sus hojas por tipo de producto. |
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 | Proveedor | Entrada Única · Vendor Center | Abre su propuesta, que todavía no tiene plantilla | — |
| 2 | Entrada Única · Vendor Center | MS-15 IA y enriquecimiento (por el BFF) | Pide la plantilla sugerida por el producto homólogo | API-15-001 |
| 3 | Proveedor | Entrada Única · Vendor Center | La sugerencia no le sirve y busca «licuadora» | — |
| 4 | Entrada Única · Vendor Center | BFF del portal | Busca plantillas por texto | API-BFF-107 |
| 5 | BFF del portal | MS-01 Catálogo | Pide las hojas permitidas para su grupo de artículo | API-01-022 |
| 6 | MS-01 Catálogo | Base pim | Acota por reglas de grupo, alcance y palabras clave | — |
| 7 | Proveedor | Entrada Única · Vendor Center | Elige la plantilla general de su familia | — |
| 8 | Entrada Única · Vendor Center | MS-01 Catálogo (por el BFF) | Abre la ruta y los metadatos heredados | API-01-026 |
| 9 | Entrada Única · Vendor Center | MS-02 Producto (por el BFF) | Pide el plan de asignar la plantilla al producto | API-02-016 |
| 10 | Entrada Única · Vendor Center | MS-02 Producto (por el BFF) | Confirma la asignación | API-02-057 |
| 11 | MS-02 Producto | Eventos | Avisa la plantilla asignada al producto | catalog.product.changed/CLASSIFICATION_CHANGED |
3.1 Gobierno de Producto edita metadatos y mueve una plantilla
3.2 Crear una jerarquía con tipo y niveles
3.3 Jerarquía de grupos de artículo que manda SAP
4. Si algo sale mal
- Ninguna plantilla especializada sirve. El selector ofrece la plantilla general de la familia, marcada como tal, y si tampoco aplica, «otros» de la familia; siempre hay un papá y la propuesta no se detiene.
- Se intenta asignar un producto a un nodo que no es hoja (por ejemplo, un EU3). El plan de MS-02 lo rechaza: en una jerarquía principal o secundaria sólo los nodos del último nivel reciben productos, y uno solo por producto.
- El grupo de artículo del producto no permite ninguna plantilla. El selector responde vacío con cuántas quedaron fuera por grupo y por alcance del proveedor; la pantalla explica que debe pedir a Gobierno de Producto ampliar la regla.
- Mover una plantilla cambiaría la vista de productos en captura. El plan muestra cuántos productos y vistas cambian; al aprobarse, los productos no se reescriben y los que ya se enviaron no se bloquean por lo nuevo.
- El árbol queda inválido (un ciclo o un padre de otra jerarquía). El plan responde HIERARCHY_CYCLE o INVALID_PARENT y no se abre solicitud; un árbol inválido nunca se sirve a medias (INVALID_TREE).
5. APIs
Las que construye esta épica (8)
GET /api/v2/structures · Jerarquías
| Campo | Valor |
|---|---|
| API | API-01-019 · MS-01 Catálogo |
| Para qué | Lista las jerarquías (árbol de plantillas, grupos de artículo de ECC y de S4H, sitios web y las que se creen) con su tipo, sus niveles, en qué nivel van los productos, si un producto puede ir en varios nodos y quién las escribe. |
| En esta épica | Ver las jerarquías con su tipo y sus niveles |
| Quién la llama | BFF del portal, MS-02 Producto, MS-15 IA y enriquecimiento |
| Permiso | CAT-L; los módulos, con su cuenta de servicio |
| Cabeceras | Authorization, X-Request-Id |
Request
null
Response · 200
{
"success": true,
"data": {
"items": [
{
"structureId": "PRODUCT",
"name": {
"es": "Árbol de plantillas"
},
"type": "PRINCIPAL",
"levels": 4,
"productLevel": 4,
"multiNodePerProduct": false,
"readOnly": false,
"masterSystem": "PIM",
"nodes": 4086
},
{
"structureId": "GA_ECC",
"name": {
"es": "Grupos de artículo ECC"
},
"type": "SECUNDARIA",
"levels": 4,
"productLevel": 4,
"multiNodePerProduct": false,
"readOnly": true,
"masterSystem": "SAP",
"nodes": 76856
},
{
"structureId": "WEB",
"name": {
"es": "Sitios web"
},
"type": "OPERATIVA",
"levels": 5,
"productLevel": null,
"multiNodePerProduct": true,
"readOnly": false,
"masterSystem": "PIM",
"nodes": 18783
}
],
"page": 1,
"size": 50,
"total": 3
}
}
Errores
| HTTP | Código | Cuándo |
|---|---|---|
| 403 | AUTHORIZATION_ERROR | Quien llama no tiene CAT-L |
POST /api/v2/structures/plans · Plan de alta de una jerarquía
| Campo | Valor |
|---|---|
| API | API-01-020 · MS-01 Catálogo |
| Para qué | Revisa sin escribir una jerarquía nueva con nombre, descripción, tipo y número de niveles. Si se crea otra principal, exige decir a qué tipo pasa la anterior: nunca quedan dos principales. |
| En esta épica | Crear una jerarquía con tipo y niveles |
| Quién la llama | BFF del portal |
| Permiso | CAT-E |
| Cabeceras | Authorization, X-Request-Id, Idempotency-Key |
Request
{
"operation": "CREATE",
"identifier": "JERARQUIA_FAMILIAS",
"labels": {
"es": "Familias de producto",
"en": "Product families"
},
"description": "Árbol de plantillas generales por familia",
"type": "PRINCIPAL",
"levels": 4,
"currentPrincipalBecomes": "SECUNDARIA"
}
Response · 200
{
"success": true,
"data": {
"planId": "pln-55f1aa",
"expiresAt": "2027-01-14T16:00:00Z",
"requiresApproval": true,
"items": [
{
"structureId": "JERARQUIA_FAMILIAS",
"action": "CREATE",
"type": "PRINCIPAL",
"levels": 4
},
{
"structureId": "PRODUCT",
"action": "UPDATE",
"changes": [
{
"path": "type",
"before": "PRINCIPAL",
"after": "SECUNDARIA"
}
]
}
],
"applyUrl": "/api/v2/catalog-plans/pln-55f1aa/apply"
}
}
Errores
| HTTP | Código | Cuándo |
|---|---|---|
| 409 | ID_ALREADY_EXISTS | Ya hay una jerarquía con ese identificador |
| 422 | BUSINESS_ERROR | Pide otra principal sin decir a qué tipo pasa la actual |
| 400 | VALIDATION_ERROR | Falta la etiqueta en español o el número de niveles no es válido |
GET /api/v2/structures/{id}/tree · Árbol validado
| Campo | Valor |
|---|---|
| API | API-01-021 · MS-01 Catálogo |
| Para qué | Devuelve el árbol completo y validado (sin ciclos, padre del mismo árbol, niveles dentro del límite), con la ruta legible de cada nodo y si recibe productos. Un árbol inválido no se sirve a medias. |
| En esta épica | El árbol validado, con qué nodos reciben productos |
| Quién la llama | BFF del portal, MS-02 Producto, MS-15 IA y enriquecimiento |
| Permiso | CAT-L; los módulos, con su cuenta de servicio |
| Cabeceras | Authorization, X-Request-Id |
| Parámetros | id = PRODUCT, q = licuadora, lang = es, expand = 4 |
| También la usan | FT-IA-02 |
Request
null
Response · 200
{
"success": true,
"data": {
"structureId": "PRODUCT",
"version": 88,
"nodes": [
{
"nodeId": "EU1-0001",
"level": 1,
"parentId": null,
"label": "Hogar",
"order": 1,
"acceptsProducts": false,
"children": [
{
"nodeId": "EU2-0040",
"level": 2,
"label": "Electrodomésticos",
"acceptsProducts": false,
"children": [
{
"nodeId": "EU3-0398",
"level": 3,
"label": "Cocina",
"acceptsProducts": false,
"children": [
{
"nodeId": "EU4-0412",
"level": 4,
"label": "Licuadoras",
"path": "Hogar > Electrodomésticos > Cocina > Licuadoras",
"acceptsProducts": true,
"children": []
}
]
}
]
}
]
}
]
}
}
Errores
| HTTP | Código | Cuándo |
|---|---|---|
| 409 | INVALID_TREE | El árbol no pasa la validación completa: no se sirve ni se exporta |
GET /api/v2/structures/{id}/leaves · Selector de plantillas
| Campo | Valor |
|---|---|
| API | API-01-022 · MS-01 Catálogo |
| Para qué | Busca las hojas que reciben productos por nombre o palabra clave y las acota por las reglas del catálogo: grupos de artículo permitidos por plantilla y alcance del proveedor. Pone primero la plantilla general de la familia cuando ninguna especializada aplica. |
| En esta épica | El selector de plantillas acotado por reglas y palabras clave |
| Quién la llama | BFF del portal, Gateway de terceros /partner/v1, MS-15 IA y enriquecimiento |
| Permiso | ENT-L: quien captura una propuesta; los módulos, con su cuenta de servicio |
| Cabeceras | Authorization, X-Request-Id |
| Parámetros | id = PRODUCT, q = licuadora, itemGroup = GA-4410, business = MER, supplierId = PROV-0001, page = 1, size = 20 |
| También la usan | FT-FLU-02, FT-IA-02, FT-PLT-10, FT-PRD-10, FT-USR-02 |
Request
null
Response · 200
{
"success": true,
"data": {
"items": [
{
"nodeId": "EU4-0412",
"label": "Licuadoras",
"path": "Hogar > Electrodomésticos > Cocina > Licuadoras",
"matchedBy": "KEYWORD",
"familyTemplate": false
},
{
"nodeId": "EU4-0400",
"label": "Cocina general",
"path": "Hogar > Electrodomésticos > Cocina > Cocina general",
"matchedBy": "FAMILY",
"familyTemplate": true
}
],
"filteredOut": {
"byItemGroup": 7,
"bySupplierScope": 2
},
"page": 1,
"size": 20,
"total": 2
}
}
Errores
| HTTP | Código | Cuándo |
|---|---|---|
| 400 | VALIDATION_ERROR | El negocio o el grupo de artículo no existen |
| 404 | NOT_FOUND | La jerarquía no existe |
POST /api/v2/structures/{id}/nodes/plans · Plan de cambio de nodos
| Campo | Valor |
|---|---|
| API | API-01-023 · MS-01 Catálogo |
| Para qué | Revisa sin escribir el alta, el renombre, el movimiento, la herencia del padre o el desligue de nodos. Al mover, dice qué reglas del destino adopta y cuántos productos y vistas cambian. Un nodo nuevo sin ID recibe el siguiente EU{nivel+1}-{número} al aprobarse. |
| En esta épica | Crear, renombrar, mover, heredar o desligar nodos |
| Quién la llama | BFF del portal, MS-15 IA y enriquecimiento |
| Permiso | CAT-E para crear y renombrar; CLA-E para mover, heredar y desligar |
| Cabeceras | Authorization, X-Request-Id, Idempotency-Key |
| Parámetros | id = PRODUCT |
| También la usan | FT-PLT-01 |
Request
{
"operation": "MOVE",
"items": [
{
"nodeId": "EU4-0412",
"version": 9,
"newParentId": "EU3-0401"
}
]
}
Response · 200
{
"success": true,
"data": {
"planId": "pln-7a3c11",
"expiresAt": "2027-01-14T16:40:00Z",
"requiresApproval": true,
"items": [
{
"nodeId": "EU4-0412",
"action": "MOVE",
"from": "EU3-0398",
"to": "EU3-0401",
"adoptsFromDestination": [
"NameGuide",
"assetRequirements"
],
"inheritedBindingsChanged": 6,
"impact": {
"products": 312,
"draftOrInReview": 41,
"views": 3
}
}
],
"applyUrl": "/api/v2/catalog-plans/pln-7a3c11/apply"
}
}
Errores
| HTTP | Código | Cuándo |
|---|---|---|
| 409 | HIERARCHY_CYCLE | El movimiento deja al nodo bajo sí mismo o bajo un descendiente |
| 409 | INVALID_PARENT | El padre es de otra jerarquía |
| 422 | MAX_DEPTH_EXCEEDED | El nodo quedaría debajo del último nivel que define la jerarquía |
| 409 | READ_ONLY_TAXONOMY | La jerarquía es de grupos de artículo: no se edita a mano |
| 409 | IMMUTABLE_ID | Intenta cambiar el ID de un nodo existente |
GET /api/v2/taxonomies/{t}/nodes/{id}/metadata · Metadatos de una plantilla
| Campo | Valor |
|---|---|
| API | API-01-026 · MS-01 Catálogo |
| Para qué | Muestra los metadatos de un nodo (guía y excepciones del nombre, orden de atributos para el título, orden de grupos, descripción, palabras clave, mínimo por tipo de imagen y medidas por omisión), cada uno con el nodo del que viene si es heredado. |
| En esta épica | Los metadatos de una plantilla con su origen |
| Quién la llama | BFF del portal, MS-02 Producto, MS-15 IA y enriquecimiento |
| Permiso | CAT-L o ENT-L; los módulos, con su cuenta de servicio |
| Cabeceras | Authorization, X-Request-Id |
| Parámetros | t = PRODUCT, id = EU4-0412, lang = es |
| También la usan | FT-IA-04, FT-PLT-08 |
Request
null
Response · 200
{
"success": true,
"data": {
"nodeId": "EU4-0412",
"version": 9,
"metadata": [
{
"code": "NameGuide",
"value": "Producto + Marca + Modelo",
"inheritedFrom": null
},
{
"code": "NameExceptions",
"value": "Sin capacidad en el título",
"inheritedFrom": "EU3-0398"
},
{
"code": "OrderOfAtributesForName",
"value": [
"TIPO_PRODUCTO",
"MARCA",
"MODELO"
],
"inheritedFrom": "EU2-0040"
},
{
"code": "DisplayGroupOrder",
"value": [
"GENERAL",
"CARACTERISTICAS"
],
"inheritedFrom": null
},
{
"code": "KeyWords",
"value": [
"licuadora",
"blender"
],
"inheritedFrom": null
},
{
"code": "assetRequirements",
"value": {
"PRINCIPAL": {
"min": 1
},
"DETALLE": {
"min": 3
}
},
"inheritedFrom": "EU3-0398"
}
]
}
}
Errores
| HTTP | Código | Cuándo |
|---|---|---|
| 404 | NOT_FOUND | El nodo no existe |
POST /api/v2/taxonomies/{t}/nodes/{id}/metadata/plans · Plan de cambio de metadatos
| Campo | Valor |
|---|---|
| API | API-01-027 · MS-01 Catálogo |
| Para qué | Revisa sin escribir el cambio de metadatos de un nodo por idioma. Lo que el nodo hereda se puede volver propio, pero sólo para pedir más, nunca menos; lo copiado con «heredar del padre» no se edita en el hijo. |
| En esta épica | Cambiar metadatos: nombre, palabras clave e imágenes mínimas |
| Quién la llama | BFF del portal |
| Permiso | CAT-E |
| Cabeceras | Authorization, X-Request-Id, Idempotency-Key, If-Match |
| Parámetros | t = PRODUCT, id = EU4-0412 |
| También la usan | FT-ACT-01, FT-PLT-08 |
Request
{
"version": 9,
"items": [
{
"code": "KeyWords",
"language": "es",
"value": [
"licuadora",
"blender",
"batidora de vaso"
]
},
{
"code": "assetRequirements",
"value": {
"PRINCIPAL": {
"min": 1
},
"DETALLE": {
"min": 4
}
}
}
]
}
Response · 200
{
"success": true,
"data": {
"planId": "pln-2f9d03",
"expiresAt": "2027-01-14T17:00:00Z",
"requiresApproval": true,
"items": [
{
"code": "KeyWords",
"changes": [
{
"path": "KeyWords.es",
"before": [
"licuadora",
"blender"
],
"after": [
"licuadora",
"blender",
"batidora de vaso"
]
}
]
},
{
"code": "assetRequirements",
"changes": [
{
"path": "assetRequirements.DETALLE.min",
"before": 3,
"after": 4
}
],
"inheritedFromBefore": "EU3-0398"
}
],
"impact": {
"views": 3
},
"applyUrl": "/api/v2/catalog-plans/pln-2f9d03/apply"
}
}
Errores
| HTTP | Código | Cuándo |
|---|---|---|
| 422 | INHERITED_VALUE | Edita en el hijo un valor copiado con «heredar del padre» |
| 422 | BUSINESS_ERROR | El valor propio relaja lo heredado (pide menos imágenes que el padre) |
| 422 | UNSUPPORTED_LANGUAGE | El idioma no es español, inglés ni «sin idioma» |
| 409 | VERSION_CONFLICT | El nodo cambió desde que se leyó |
POST /internal/governance/sap/hierarchy · Jerarquías que manda SAP
| Campo | Valor |
|---|---|
| API | API-01-051 · MS-01 Catálogo |
| Para qué | MS-07 entrega, ya leído del archivo, un lote de nodos de la jerarquía de grupos de artículo de ECC o de S4H. Nadie los edita a mano: los nodos llegan por esta ruta, sin aprobación, con recibo por archivo y por registro, y las hojas por tipo de producto las crea la clasificación de lo que llega de SAP (API-01-018). |
| En esta épica | Recibir la jerarquía de grupos de artículo de SAP |
| Quién la llama | MS-07 Ingesta de archivos |
| Permiso | Sólo MS-07 (cuenta de servicio) |
| Cabeceras | Authorization, X-Request-Id, Idempotency-Key |
| Escribe en | taxonomy_nodes, governance_receipts, governance_outbox |
| Publica | catalog.governance.changed/TAXONOMY_NODE_CHANGED |
| También la usan | FT-INT-04 |
Request
{
"fileId": "ga-ecc-20270112-01",
"structureId": "GA_ECC",
"records": [
{
"recordNo": 1,
"nodeId": "GA-4410",
"parentId": "GA-44",
"label": "Licuadoras y batidoras",
"active": true
}
]
}
Response · 200
{
"success": true,
"data": {
"fileId": "ga-ecc-20270112-01",
"applied": 1,
"rejected": 0,
"items": [
{
"recordNo": 1,
"nodeId": "GA-4410",
"result": "CREATED"
}
]
}
}
Errores
| HTTP | Código | Cuándo |
|---|---|---|
| 409 | IDEMPOTENCY_MISMATCH | El mismo archivo llega otra vez con contenido distinto |
| 409 | INVALID_PARENT | El padre no existe en esa jerarquía: el registro queda rechazado en el recibo |
Las que usa y construye otra épica (9)
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-BFF-107 | GET /bff/v1/catalog/templates | La pantalla busca plantillas por texto en el BFF | FT-PLT-10 · Fachada v1 compatible con P360 para Entrada Única y Foro |
| API-15-001 | POST /api/v2/ai/template-suggestions | La sugerencia de plantilla de familia por el producto homólogo | FT-IA-02 · Sugerencia de plantilla por IA a partir del producto… |
| API-02-016 | POST /api/v2/products/classifications/plans | Asignar la plantilla al producto (una sola, sólo hojas) | FT-CAT-03 · Categorización de productos |
| API-02-057 | POST /api/v2/product-plans/{planId}/apply | Confirmar la asignación en Producto | FT-FLU-01 · Motor de estados configurable con dos carreteras y reglas… |
| API-01-004 | POST /api/v2/catalog-plans/{planId}/apply | Confirmar los planes del árbol y abrir la solicitud | FT-PLT-01 · Fundamentos de gobierno de plantillas |
| API-01-103 | POST /api/v2/catalog-change-requests/{changeRequestId}/decision | Aprobar los cambios del árbol | FT-PLT-01 · Fundamentos de gobierno de plantillas |
| API-01-018 | POST /api/v2/rules/classify | La clasificación de lo que llega de SAP crea las hojas por tipo de producto (FT-CAT-04) | FT-CAT-04 · Clasificación SAP derivada |
| API-01-012 | GET /api/v2/reference-tables/{t}/entries | La secuencia de variantes por plantilla es un diccionario de FT-REF-01 | FT-REF-01 · Datos de referencia administrables |
| API-02-113 | POST /internal/product/catalog-usage | Cuántos productos cambian de vista al mover una plantilla | FT-PLT-02 · Catálogo de atributos |
6. Eventos
Publica
| Evento | Cuándo | Quién lo consume |
|---|---|---|
catalog.governance.changed/TAXONOMY_NODE_CHANGED | Se aprueba el alta, el movimiento, la herencia o el desligue de un nodo, cambia el tipo de una jerarquía o llegan nodos de SAP | FT-CAT-04, FT-IA-02, FT-PLT-06 |
catalog.governance.changed/TEMPLATE_CHANGED | Se aprueba un cambio en la cabecera o en los metadatos de una plantilla | FT-ARQ-02, FT-PLT-01, FT-PLT-08 |
catalog.governance.changed/TEMPLATE_VIEW_CHANGED | Mover o heredar cambia la vista efectiva de las plantillas de la rama | FT-ACT-01, FT-ACT-05, FT-IA-03, FT-PLT-06, FT-PLT-09, FT-PRD-01, FT-RAC-01, FT-RAC-02 |
Consume
| Evento | Para qué | Quién lo publica |
|---|---|---|
catalog.governance.changed/TAXONOMY_NODE_CHANGED | MS-15 refresca el índice de plantillas, familias y palabras clave en el que busca sus sugerencias | esta misma épica |
catalog.governance.changed/TAXONOMY_NODE_CHANGED | MS-02 refresca qué nodos reciben productos y los grupos de artículo con que clasifica lo que llega de SAP | esta misma épica |
catalog.governance.changed/TAXONOMY_NODE_CHANGED | MS-01 recalcula las vistas efectivas de la rama movida o heredada | esta misma épica |
catalog.egress.files/OBJECT_FINALIZE | MS-07 lee el archivo de la jerarquía comercial de SAP | D-ARCHIVOS |
7. Datos
Cada colección tiene un solo dueño, el único que escribe en ella.
| Colección | Dueño | Qué guarda | Esta épica |
|---|---|---|---|
taxonomies | MS-01 | Los árboles: plantillas, grupos de artículo y sitios web. | escribe |
taxonomy_nodes | MS-01 | Plantillas y nodos de grupo de artículo, con la configuración de atributos de cada plantilla. | escribe |
template_views | MS-01 | La vista efectiva ya resuelta por plantilla y negocio: qué atributos pide y cuáles son obligatorios. | escribe |
id_sequences | MS-01 | El siguiente identificador de plantillas y catálogos. | escribe |
governance_receipts | MS-01 | El recibo de cada escritura confirmada en el catálogo (antes operation_receipts). | escribe |
governance_outbox | MS-01 | Los cambios del catálogo que esperan salir como evento (antes outbox). | escribe |
products | MS-02 | La familia del producto con sus variantes, valores, imágenes (URL), clasificaciones, estado, tareas abiertas y rechazos. | escribe |
taxonomies | MS-01 | Los árboles: plantillas, grupos de artículo y sitios web. | lee |
taxonomy_nodes | MS-01 | Plantillas y nodos de grupo de artículo, con la configuración de atributos de cada plantilla. | lee |
governance_rules | MS-01 | Reglas 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
| Historia | Prioridad | Cómo la cubre |
|---|---|---|
| FT-PLT-05·H1 · Navegar y buscar | P1 | pasos 3, 4, 5, 6, 9; API-01-022, API-01-021, API-BFF-107 |
| FT-PLT-05·H2 · Metadatos de plantilla | P1 | pasos 8; flujo «Gobierno de Producto edita metadatos y mueve una plantilla»; API-01-026, API-01-027 |
| FT-PLT-05·H3 · Plantillas por familia | P1 | pasos 2, 7; API-01-022, API-15-001 |
| FT-PLT-05·H4 · Herencia y reubicación | P2 | flujo «Gobierno de Producto edita metadatos y mueve una plantilla»; API-01-023, API-02-113 |
| FT-PLT-05·H5 · Imágenes y secuencia de variantes | P2 | API-01-027, API-01-012. Fuera: La secuencia de variantes por plantilla es un diccionario de FT-REF-01 que se usa al publicar; aquí sólo vive el mínimo por tipo de imagen. |
| FT-PLT-05·H6 · Pocas plantillas para elegir | P1 | pasos 5, 6; flujo «Jerarquía de grupos de artículo que manda SAP»; API-01-022, API-01-051 |
| FT-PLT-05·H7 · Crear jerarquías con tipo y niveles | P2 | flujo «Crear una jerarquía con tipo y niveles»; API-01-019, API-01-020, API-01-023 |
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-05-1. Plantillas por familia sin romper la regla de hoja: cada familia de nivel 3 tiene una plantilla general de nivel 4 marcada «de familia». El selector la ofrece cuando ninguna especializada aplica, y la IA la propone primero; así siempre hay un papá y los productos siguen sólo en el último nivel. Por qué: Concilia lo acordado en taller (plantillas generales por familia, menos rechazo) con la ERF §3.3, que sólo deja productos en el nivel 4. Se apoya en RN-PLA-10, RF-PLA-03, DEC-44.
- D-PLT-05-2. Herencia viva: un metadato o una configuración sin valor propio se resuelve del ancestro más cercano y se muestra con su nodo de origen. El hijo sólo endurece (pide más, nunca menos). Lo migrado se carga explícito en cada plantilla, para que la vista del corte quede igual que P360. Por qué: DEC-ARQ-12 mete la herencia; la regla de endurecer cabe en una frase y se valida sin excepciones, como propone PD-14. Se apoya en PD-14, DEC-ARQ-12, DEC-PLT-01.
- D-PLT-05-3. Mover un nodo es una solicitud con impacto: el plan dice qué reglas del destino adopta y cuántos productos y vistas cambian. Al aprobarse, los productos no se reescriben, su vista sí, y lo ya enviado o aprobado no se bloquea por lo nuevo. Por qué: Reubicar una rama no debe tocar datos de producto ni frenar propuestas en curso. Se apoya en PD-14, DEC-ARQ-12, RN-MIG-03.
- D-PLT-05-4. Cada jerarquía tiene tipo y número de niveles: principal (una sola; el producto va en un nodo del último nivel), secundaria (igual, puede haber varias) y operativa (el producto puede ir en varios nodos, como las categorías por sitio). Crear otra principal obliga a decir a qué tipo pasa la anterior. Los árboles de grupos de artículo no se editan a mano: los nodos los manda SAP y las hojas por tipo de producto las crea la clasificación (API-01-018). Por qué: Que el tipo imponga desde el inicio dónde pueden ir los productos, como pidió el taller de plantillas. Se apoya en S31-RF-03.
- D-PLT-05-5. El selector de plantillas acota por las reglas de MS-01 (grupos de artículo permitidos por plantilla y alcance del proveedor) y por nombre y palabra clave. La sugerencia de la IA se muestra junto, pero el proveedor siempre puede buscar en todo lo que tiene permitido. Por qué: Menos plantillas para elegir sin que la IA decida sola: el seller confirma, cambia o busca. Se apoya en RN-PLA-12, P-18.
- D-PLT-05-6. El mínimo por tipo de imagen es el metadato assetRequirements de la plantilla: se migra de los mínimos y máximos vivos del atributo de imagen y, sólo donde no los hay, del número de imágenes de detalle. La ficha técnica de cada tipo (medidas, formato) es de MS-11 y la secuencia de variantes es un diccionario por plantilla de FT-REF-01. Por qué: Una sola fuente para «cuántas fotos pide esta plantilla», tomada de la regla que hoy sí se aplica. Se apoya en DEC-ARQ-12, DUD-02.
- D-PLT-05-7. Una plantilla nueva la crea Gobierno de Producto en el PIM, con aprobación. La IA puede proponerla como solicitud con canal IA, nunca crearla directo. Por qué: Responde quién crea una plantilla nueva sin perder el control del catálogo. Se apoya en P-19, DEC-PLT-05.
Qué falta decidir
| ID | Qué falta |
|---|---|
| PD-15 | Gobierno de Producto con Publicación y Foro ratifican que Conjunto Look y proveedores son reglas, no jerarquías. |
| PD-19 | Gobierno de Producto con Entrada Única deciden si entran las plantillas sin atributos. |
| P-18 | Gobierno de Producto con Compras y SAP ratifican cómo se acota el número de plantillas por producto. |
También siguen abiertos: PEN-30, Definir quién define las familias de plantillas (Compras, Gobierno de Producto o un estándar externo).
Fuentes
- [D]
trazabilidad/features/FT-PLT-05-taxonomia-y-metadatos-de-plantilla.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.