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
| De | Qué |
|---|---|
| PE-C · Catálogo vigente | El 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 atributos | Los 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
| A | Qué |
|---|---|
| PE-3 · Plantilla asignada | La 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 primero | Las secciones, el orden y la obligatoriedad por negocio con que la captura guiada arma sus pasos. |
| FT-RAC-02 · Score de calidad del producto | Los requeridos, recomendados y opcionales con que se calcula la completitud del score. |
| FT-FLU-04 · Carga masiva de productos por archivo | La 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 usuario | Qué 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 atributos | La 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 producto | Las 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 Foro | La 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 valores | El 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
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 | Administración del catálogo | Entrada Única · Vendor Center | Abre la configuración de atributos de la plantilla | — |
| 2 | Entrada Única · Vendor Center | MS-01 Catálogo (por el BFF) | Pide la configuración por atributo y negocio | API-01-024 |
| 3 | Administración del catálogo | Entrada Única · Vendor Center | Marca el nivel de cada atributo por negocio | — |
| 4 | Entrada Única · Vendor Center | MS-01 Catálogo (por el BFF) | Pide el plan con las vistas que resultarían | API-01-025 |
| 5 | MS-01 Catálogo | MS-02 Producto | Cuenta los productos de la plantilla por estado | API-02-113 |
| 6 | Entrada Única · Vendor Center | MS-01 Catálogo (por el BFF) | Confirma y abre la solicitud de cambio | API-01-004 |
| 7 | Entrada Única · Vendor Center | MS-01 Catálogo (por el BFF) | Otro administrador aprueba la solicitud | API-01-103 |
| 8 | MS-01 Catálogo | Base pim | Guarda la configuración y recalcula las tres vistas | — |
| 9 | MS-01 Catálogo | Eventos | Avisa la vista nueva de cada negocio | catalog.governance.changed/TEMPLATE_VIEW_CHANGED |
| 10 | Eventos | MS-06 Evaluación | Entrega el cambio para recalcular la completitud | catalog.governance.changed/TEMPLATE_VIEW_CHANGED |
| 11 | Eventos | MS-10 Exportador al DWH | Entrega el cambio para el diccionario de plantillas del DWH | catalog.governance.changed/TEMPLATE_VIEW_CHANGED |
| 12 | Eventos | MS-02 Producto | Entrega el cambio para refrescar su copia de la vista | catalog.governance.changed/TEMPLATE_VIEW_CHANGED |
| 13 | MS-02 Producto | MS-01 Catálogo | Lee la vista del negocio para validar la captura | API-01-028 |
| 14 | BFF del portal | MS-01 Catálogo | Pide los valores válidos de una lista grande | API-01-108 |
3.1 Desligar un atributo sin perder valores
3.2 Paridad con P360 al migrar
3.3 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
| Campo | Valor |
|---|---|
| API | API-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 épica | Ver la configuración de una plantilla por atributo y negocio |
| Quién la llama | BFF del portal |
| Permiso | CAT-L |
| Cabeceras | Authorization, X-Request-Id |
| Parámetros | id = 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
| HTTP | Código | Cuándo |
|---|---|---|
| 404 | NOT_FOUND | La plantilla no existe |
POST /api/v2/taxonomies/PRODUCT/nodes/{id}/bindings/plans · Plan de cambio de la configuración
| Campo | Valor |
|---|---|
| API | API-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 épica | Ligar, cambiar o desligar atributos de una plantilla o de la raíz |
| Quién la llama | BFF del portal |
| Permiso | CAT-E |
| Cabeceras | Authorization, X-Request-Id, Idempotency-Key, If-Match |
| Parámetros | id = EU4-0412 |
| También la usan | FT-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
| HTTP | Código | Cuándo |
|---|---|---|
| 422 | BUSINESS_ERROR | Relaja lo heredado del padre: el hijo sólo puede pedir más |
| 422 | VALIDATION_ERROR | El atributo está inactivo, o el nivel, la capa o el negocio no existen |
| 409 | VERSION_CONFLICT | La plantilla cambió desde que se leyó |
| 503 | DEPENDENCY_UNAVAILABLE | Producto 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
| Campo | Valor |
|---|---|
| API | API-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 épica | La vista efectiva por plantilla y negocio |
| Quién la llama | BFF 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 |
| Permiso | ENT-L: quien captura o revisa una propuesta; los módulos, con su cuenta de servicio |
| Cabeceras | Authorization, X-Request-Id |
| Parámetros | id = EU4-0412, business = MER |
| También la usan | FT-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
| HTTP | Código | Cuándo |
|---|---|---|
| 404 | NOT_FOUND | La plantilla no existe, está inactiva o no es una hoja que reciba productos |
| 400 | VALIDATION_ERROR | El 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
| Campo | Valor |
|---|---|
| API | API-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 épica | Los valores válidos de un atributo en una plantilla, con búsqueda y valor del padre |
| Quién la llama | BFF del portal, Gateway de terceros /partner/v1, MS-02 Producto |
| Permiso | ENT-L: quien captura o revisa una propuesta; los módulos, con su cuenta de servicio |
| Cabeceras | Authorization, X-Request-Id |
| Parámetros | id = EU4-0412, attributeId = CERTIFICADO_SOSTENIBLE, business = MER, parentValue = 01, q = `, page = 1, size = 50` |
| También la usan | FT-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
| HTTP | Código | Cuándo |
|---|---|---|
| 404 | NOT_FOUND | La plantilla no tiene ese atributo para ese negocio |
| 422 | VALIDATION_ERROR | El 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.
| API | Método y ruta | Para qué, aquí | La construye |
|---|---|---|---|
| API-01-004 | POST /api/v2/catalog-plans/{planId}/apply | Confirmar el plan y abrir la solicitud | FT-PLT-01 · Fundamentos de gobierno de plantillas |
| API-01-103 | POST /api/v2/catalog-change-requests/{changeRequestId}/decision | Aprobar el cambio de configuración | FT-PLT-01 · Fundamentos de gobierno de plantillas |
| API-01-053 | POST /internal/governance/bulk-load/{coleccion} | Migrar la configuración del catálogo 54001 | FT-PLT-01 · Fundamentos de gobierno de plantillas |
| API-01-001 | GET /api/v2/attributes | Buscar atributos del catálogo para agregar como adicionales | FT-PLT-02 · Catálogo de atributos |
| API-02-012 | POST /api/v2/products/{id}/values/plans | Validar los valores adicionales en la propuesta | FT-RAC-01 · Motor de validación en línea y candados de datos… |
| API-11-004 | POST /api/v2/assets/uploads | Subir la ficha técnica como activo | FT-ACT-02 · Registro, congelado y publicación de URLs de activos |
| API-02-113 | POST /internal/product/catalog-usage | Cuántos productos de la plantilla hay por estado | FT-PLT-02 · Catálogo de atributos |
6. Eventos
Publica
| Evento | Cuándo | Quién lo consume |
|---|---|---|
catalog.governance.changed/TEMPLATE_VIEW_CHANGED | Cambia la vista de una plantilla y negocio: por su configuración, por herencia o por un atributo, lista o mínimo que la afecta | FT-ACT-01, FT-ACT-05, FT-IA-03, FT-PLT-09, FT-PRD-01, FT-RAC-01, FT-RAC-02 |
catalog.governance.changed/TEMPLATE_CHANGED | Se aprueba un cambio en la configuración de atributos de una plantilla o de la raíz | FT-ARQ-02, FT-PLT-01, FT-PLT-08 |
Consume
| Evento | Para qué | Quién lo publica |
|---|---|---|
catalog.governance.changed/TEMPLATE_VIEW_CHANGED | MS-02 refresca la vista con que valida y recalcula lo que le falta a las propuestas abiertas | esta misma épica |
catalog.governance.changed/TEMPLATE_VIEW_CHANGED | MS-06 recalcula la completitud del score con los nuevos requeridos y recomendados | esta misma épica |
catalog.governance.changed/TEMPLATE_VIEW_CHANGED | MS-10 manda al DWH el diccionario de plantillas actualizado | esta misma épica |
catalog.governance.changed/TEMPLATE_VIEW_CHANGED | MS-15 sabe qué atributos opcionales puede enriquecer en cada plantilla | esta misma épica |
catalog.governance.changed/ATTRIBUTE_CHANGED | MS-01 recalcula las vistas de las plantillas que usan el atributo | FT-PLT-02, FT-PLT-04, FT-PLT-09 |
catalog.governance.changed/LOV_VALUE_CHANGED | MS-01 recalcula las vistas que filtran ese valor | FT-INT-04, FT-PLT-03, FT-PLT-09, FT-REF-01 |
catalog.governance.changed/TAXONOMY_NODE_CHANGED | MS-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ón | Dueño | Qué guarda | Esta épica |
|---|---|---|---|
taxonomy_nodes | MS-01 | Plantillas y nodos de grupo de artículo, con la configuración de atributos de cada plantilla. | escribe |
taxonomies | MS-01 | Los árboles: plantillas, grupos de artículo y sitios web. | escribe |
template_views | MS-01 | La vista efectiva ya resuelta por plantilla y negocio: qué atributos pide y cuáles son obligatorios. | 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 |
attributes | MS-01 | Cada atributo: tipo, lista, restricciones, grupos e identificadores externos. | lee |
lovs | MS-01 | Cabecera de cada lista de valores. | lee |
lov_values | MS-01 | Cada valor de lista: código, etiqueta, orden y equivalencias por sistema. | lee |
attribute_groups | MS-01 | Grupos de atributos, incluidos los de permiso (quién ve y quién edita). | lee |
taxonomy_nodes | MS-01 | Plantillas y nodos de grupo de artículo, con la configuración de atributos de cada plantilla. | lee |
taxonomies | MS-01 | Los árboles: plantillas, grupos de artículo y sitios web. | 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-06·H1 · Obligatoriedad por negocio | P1 | pasos 2, 3, 4, 8, 13; API-01-024, API-01-025, API-01-028, API-01-108 |
| FT-PLT-06·H2 · Tres niveles | P1 | pasos 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 migrar | P1 | flujo «Paridad con P360 al migrar»; API-01-053, API-01-028 |
| FT-PLT-06·H4 · Crecer sin nuevos obligatorios | P2 | pasos 4, 5, 6, 7; API-01-025, API-02-113 |
| FT-PLT-06·H5 · Atributos adicionales | P2 | flujo «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 valores | P1 | flujo «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
| ID | Qué falta |
|---|---|
| PD-03 | Gobierno de Producto con Arquitectura ratifican la lista única con tres plantillas reales (propuesta del 17-oct). |
| PD-24 | Gobierno de Producto con Marketplace ratifican qué frena cada requerido (propuesta del 16 y 17-oct). |
| PD-14 | Gobierno 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
- [D]
trazabilidad/features/FT-PLT-06-configuracion-atributos-por-negocio.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.