← Arquitectura por épica

FT-PLT-08 · Títulos, nombres y descripciones de producto

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-08: 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-08.json, generada con generar.py; la ficha de la épica es trazabilidad/features/FT-PLT-08-titulos-nombres-descripciones.md.

En 30 segundos

El título del producto se arma solo con la regla de su plantilla, igual que en P360, para que el cambio de sistema no mueva los nombres publicados. Esta épica calcula el título, el título sin marca y la descripción en el mismo momento en que cambia un dato que los forma, los recalcula sin esperar en la cola general cuando cambia la regla, arma el nombre completo de los configurables y ofrece al seller sugerencias de título con IA.

  • Módulo dueño: MS-02 Producto. También participan: MS-01 Catálogo, MS-08 Adaptadores de salida, MS-15 IA y enriquecimiento.
  • Etapa 3 · Captura. Recibe «PE-3 · Plantilla asignada» y entrega a otras épicas.
  • APIs: construye 2 y usa 7 que construyen otras épicas.
  • Eventos: publica 2 y consume 2.

1. Dónde encaja

Recibe

DeQué
FT-PLT-05 · Taxonomía de plantillas por familia, metadatos de…Los metadatos de nombre de cada plantilla (orden de atributos del título, guía, excepciones y orden del configurable), con herencia de EU4 a EU3.
FT-PLT-06 · Configuración de atributos por plantilla y por negocio…Qué atributos del título son obligatorios en cada negocio.
PE-3 · Plantilla asignadaEl producto con plantilla, del que se toman los valores que forman el título.
FT-IA-04 · Integración de los modelos de IA existentesEl título y la descripción que propone el modelo de títulos, como sugerencia.
FT-RAC-06 · Métricas de tiempos por paso y clasificación de erroresLa latencia de los atributos calculados, como el título sin marca, para comprobar su meta.

Entrega

AQué
FT-RAC-01 · Motor de validación en línea y candados de datos…Título y descripción calculados, que los candados del envío y del SKU exigen.
FT-INT-01 · Publicación a e-commerceEl nombre y la descripción que se publican; sin título no se publica.
FT-IA-04 · Integración de los modelos de IA existentesLa regla de nombre de la plantilla como respaldo y contexto del modelo de títulos.

Cambios de estado que hace

TransiciónDe → aCuándo
C06Publicado → Enviado (por canal)Se aprueba un cambio.

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

Revisar valores en el momento
Confirmar un plan de Producto
y 3 más

Metadatos de una plantilla

PRODUCT_UPDATED
PUBLICATION_REQUESTED

Plan de cambio de metadatos

TEMPLATE_CHANGED

TEMPLATE_CHANGED

Proponer título y descripción

PUBLICATION_REQUESTED

Proveedor

Seller

Administración del catálogo

Repoblamiento

Entrada Única · Vendor Center

BFF del portal

MS-01 Catálogo

★ MS-02 Producto

MS-08 Adaptadores de salida

MS-15 IA y enriquecimiento

Base pim

Eventos

Contexto de FT-PLT-08

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.

EventosBase·pimMS-01 CatálogoMS-02 ProductoEntrada Única · Vendor CenterEventosBase·pimMS-01 CatálogoMS-02 ProductoEntrada Única · Vendor CenterProveedorBFFAdministración del catálogo1. Captura tipo de producto, marca y modelo2. Revisa los valores y ve el título calculadoPOST /api/v2/products/{id}/values/plans3. Lee la regla de nombre de la plantilla, con herenciaGET /api/v2/taxonomies/{t}/nodes/{id}/metadata4. Guarda los valoresPOST /api/v2/product-plans/{planId}/apply5. Guarda título, título sin marca y descripción calculados6. Avisa el cambio del productoPRODUCT_UPDATED7. Marca los atributos que forman el título8. Cambia el orden de atributos del títuloPOST /api/v2/taxonomies/{t}/nodes/{id}/metadata/plans9. Avisa que cambió la plantillaTEMPLATE_CHANGED10. Entrega el cambio de la regla de nombreTEMPLATE_CHANGED11. Recalcula en su propia cola los títulos de esa plantilla12. Pide republicar los aprobados con el título nuevoPUBLICATION_REQUESTEDProveedorBFFAdministración del catálogo
Flujo principal de FT-PLT-08
Los pasos en texto
PasoDeAQué haceAPI o evento
1ProveedorEntrada Única · Vendor CenterCaptura tipo de producto, marca y modelo—
2Entrada Única · Vendor CenterMS-02 Producto (por el BFF)Revisa los valores y ve el título calculadoAPI-02-012
3MS-02 ProductoMS-01 CatálogoLee la regla de nombre de la plantilla, con herenciaAPI-01-026
4Entrada Única · Vendor CenterMS-02 Producto (por el BFF)Guarda los valoresAPI-02-057
5MS-02 ProductoBase pimGuarda título, título sin marca y descripción calculados—
6MS-02 ProductoEventosAvisa el cambio del productocatalog.product.changed/PRODUCT_UPDATED
7Administración del catálogoEntrada Única · Vendor CenterMarca los atributos que forman el título—
8Entrada Única · Vendor CenterMS-01 Catálogo (por el BFF)Cambia el orden de atributos del títuloAPI-01-027
9MS-01 CatálogoEventosAvisa que cambió la plantillacatalog.governance.changed/TEMPLATE_CHANGED
10EventosMS-02 ProductoEntrega el cambio de la regla de nombrecatalog.governance.changed/TEMPLATE_CHANGED
11MS-02 ProductoBase pimRecalcula en su propia cola los títulos de esa plantilla—
12MS-02 ProductoEventosPide republicar los aprobados con el título nuevocatalog.product.publication/PUBLICATION_REQUESTED

3.1 Sugerencias de título para el seller

MS-15 IA y enriquecimientoMS-02 ProductoEntrada Única · Vendor CenterMS-15 IA y enriquecimientoMS-02 ProductoEntrada Única · Vendor CenterSellerBFF1. Pide ideas para su título y su descripción2. Pide sugerencias con el contexto del productoPOST /api/v2/products/{id}/title-suggestions3. Pide título y descripción con la regla de nombrePOST /api/v2/ai/titles4. Elige una sugerencia y la ajusta5. Revisa el título elegidoPOST /api/v2/products/{id}/values/plans6. Guarda el título como propioPOST /api/v2/product-plans/{planId}/applySellerBFF
Sugerencias de título para el seller

3.2 Recalcular y comparar antes de republicar

MS-08 Adaptadores de salidaEventosBase·pimMS-02 ProductoEntrada Única · Vendor CenterMS-08 Adaptadores de salidaEventosBase·pimMS-02 ProductoEntrada Única · Vendor CenterRepoblamientoBFF1. Pide recalcular los títulos de una plantilla2. Pide el plan con el antes y el despuésPOST /api/v2/products/titles/recalculations/plans3. Confirma el recálculoPOST /api/v2/product-plans/{planId}/apply4. Recalcula en la cola de calculados, sin esperar la general5. Pide republicar los aprobados que cambiaronPUBLICATION_REQUESTED6. Entrega la petición, la tienda recibe el título nuevoPUBLICATION_REQUESTEDRepoblamientoBFF
Recalcular y comparar antes de republicar

3.3 Nombre de un configurable

EventosBase·pimMS-01 CatálogoMS-02 ProductoEntrada Única · Vendor CenterEventosBase·pimMS-01 CatálogoMS-02 ProductoEntrada Única · Vendor CenterAdministración del catálogoBFF1. Arma un configurable con sus miembros2. Pide el plan del grupo configurablePOST /api/v2/product-groups/plans3. Lee el orden del configurable de la plantillaGET /api/v2/taxonomies/{t}/nodes/{id}/metadata4. Confirma el grupoPOST /api/v2/product-plans/{planId}/apply5. Arma el nombre completo de cada miembro con su configuración6. Avisa el cambio de los miembrosPRODUCT_UPDATEDAdministración del catálogoBFF
Nombre de un configurable

4. Si algo sale mal

  • La plantilla no tiene orden de atributos para el título ni lo hereda. Se usa el valor por omisión del negocio, como hoy: en Suburbia empieza por SB_0002 y usa BRAND_ID_S4H; en Liverpool y Marketplace, tipo de producto SAP, marca y modelo comercial o número de parte. El título sin marca es el mismo texto sin la marca.
  • A un seller de Marketplace le falta un atributo del título. El título se arma con lo disponible y el plan avisa «tu título queda genérico: captura este dato»; no bloquea. El seller puede pedir sugerencias a la IA.
  • La IA no responde al pedir sugerencias. La pantalla muestra sólo el título de la regla y deja escribir uno propio; nada se bloquea.
  • Un interno fijó el título a mano. El recálculo no lo pisa: el plan lo cuenta como título fijado y Gobierno de Producto puede regresarlo a la regla con el plan de valores.
  • El recálculo de una plantilla grande no termina antes de la siguiente carga. Cada producto se recalcula en su propia transacción, así que la carga lleva el título nuevo o el anterior completo, nunca uno a medias; el avance se ve en el recibo del trabajo.

5. APIs

Las que construye esta épica (2)

POST /api/v2/products/{id}/title-suggestions · Sugerencias de título y descripción
CampoValor
APIAPI-02-108 · MS-02 Producto
Para quéPide a la IA (MS-15) sugerencias de título y descripción con la regla de nombre de la plantilla y lo ya capturado. No escribe nada: el seller elige una, la ajusta y la guarda con el plan de valores.
En esta épicaPedir sugerencias de título y descripción a la IA
Quién la llamaBFF del portal
PermisoEl proveedor o seller dueño; internos con VAL-E
CabecerasAuthorization, X-Request-Id
Parámetrosid = PRD-0004812

Request

{
  "fields": [
    "productName",
    "descriptionLong"
  ],
  "language": "es",
  "max": 2
}

Response · 200

{
  "success": true,
  "data": {
    "productId": "PRD-0004812",
    "ruleTitle": "Playera MARCA01 deportiva de algodón",
    "suggestions": [
      {
        "productName": "Playera deportiva MARCA01 de algodón para hombre, cuello redondo",
        "descriptionLong": "Playera de algodón transpirable con cuello redondo, ideal para entrenar.",
        "confidence": 0.82,
        "aiJobId": "aij-5521"
      }
    ],
    "aiAvailable": true
  }
}

Errores

HTTPCódigoCuándo
404NOT_FOUNDEl producto no existe o no es visible para quien llama
503DEPENDENCY_UNAVAILABLELa IA no responde; la pantalla muestra sólo el título de la regla
POST /api/v2/products/titles/recalculations/plans · Recalcular títulos
CampoValor
APIAPI-02-109 · MS-02 Producto
Para quéPrepara el recálculo de título, título sin marca y descripción de una plantilla o de una selección, con el antes y el después de una muestra y cuántos aprobados se republicarían. Al confirmar corre en la cola propia de calculados, sin esperar la cola general de cambios.
En esta épicaRecalcular títulos de una plantilla o selección, con el antes y el después
Quién la llamaBFF del portal
PermisoGobierno de Producto o Repoblamiento
CabecerasAuthorization, X-Request-Id, Idempotency-Key
Publicacatalog.product.changed/PRODUCT_UPDATED, catalog.product.publication/PUBLICATION_REQUESTED

Request

{
  "scope": {
    "templateId": "EU4-0412",
    "productIds": []
  },
  "fields": [
    "productName",
    "titleWithoutBrand",
    "descriptionLong"
  ],
  "republishApproved": true
}

Response · 200

{
  "success": true,
  "data": {
    "planId": "pln-2c66aa",
    "expiresAt": "2026-10-18T17:30:00Z",
    "summary": {
      "products": 1840,
      "willChange": 312,
      "approvedToRepublish": 287,
      "manualTitlesKept": 14
    },
    "sample": [
      {
        "productId": "PRD-0004812",
        "field": "titleWithoutBrand",
        "before": "Licuadora MARCA01 LX-200",
        "after": "Licuadora LX-200"
      }
    ],
    "estimatedMinutes": 6,
    "applyUrl": "/api/v2/product-plans/pln-2c66aa/apply"
  }
}

Errores

HTTPCódigoCuándo
400VALIDATION_ERRORNo trae plantilla ni selección, o la selección pasa de 100,000 productos
403AUTHORIZATION_ERRORQuien llama no es Gobierno de Producto ni Repoblamiento

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-02-012POST /api/v2/products/{id}/values/plansVer el título y la descripción calculados mientras se captura, y guardar uno propioFT-RAC-01 · Motor de validación en línea y candados de datos…
API-01-026GET /api/v2/taxonomies/{t}/nodes/{id}/metadataLeer la regla de nombre y el orden del configurable de la plantilla, con herenciaFT-PLT-05 · Taxonomía de plantillas por familia, metadatos de…
API-01-027POST /api/v2/taxonomies/{t}/nodes/{id}/metadata/plansQue Gobierno de Producto marque los atributos del títuloFT-PLT-05 · Taxonomía de plantillas por familia, metadatos de…
API-02-057POST /api/v2/product-plans/{planId}/applyConfirmar valores, recálculos y gruposFT-FLU-01 · Motor de estados configurable con dos carreteras y reglas…
API-15-007POST /api/v2/ai/titlesEl modelo de títulos propone título y descripciónFT-IA-04 · Integración de los modelos de IA existentes
API-02-106POST /api/v2/product-groups/plansArmar el grupo configurable cuyos miembros llevan nombre completoFT-PRD-01 · Modelo canónico de producto
API-02-054GET /internal/product/products/{id}/publication-snapshot?version=La foto de publicación lleva la misma descripción a la tienda, a OMS y al surtidoFT-CAT-05 · Sitios, enrutamiento y visibilidad por negocio

6. Eventos

Publica

EventoCuándoQuién lo consume
catalog.product.changed/PRODUCT_UPDATEDCambia un dato que forma el título o se recalcula por un cambio de reglaFT-ACT-05, FT-ARQ-02, FT-IA-01, FT-PLT-07, FT-PRD-05, FT-RAC-06
catalog.product.publication/PUBLICATION_REQUESTEDUn aprobado cambia de título o descripción por un recálculoFT-CAT-05, FT-CAT-06, FT-INT-01, FT-INT-02, FT-INT-05, FT-INT-07, FT-PRD-05, FT-RAC-03

Consume

EventoPara quéQuién lo publica
catalog.governance.changed/TEMPLATE_CHANGEDMS-02 recalcula los títulos de los productos de esa plantilla en su cola de calculadosFT-IA-04, FT-PLT-01, FT-PLT-05, FT-PLT-06, FT-PLT-09
catalog.product.publication/PUBLICATION_REQUESTEDMS-08 arma el envío a la tienda con el título nuevoesta misma épica

7. Datos

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

ColecciónDueñoQué guardaEsta épica
productsMS-02La familia del producto con sus variantes, valores, imágenes (URL), clasificaciones, estado, tareas abiertas y rechazos.escribe
product_jobsMS-02Trabajos asíncronos: cargas masivas de productos, edición masiva y publicación.escribe
product_receiptsMS-02El recibo de cada escritura confirmada en el producto (antes operation_receipts).escribe
product_outboxMS-02Los cambios del producto que esperan salir como evento (antes outbox).escribe
taxonomy_nodesMS-01Plantillas y nodos de grupo de artículo, con la configuración de atributos de cada plantilla.lee
template_viewsMS-01La vista efectiva ya resuelta por plantilla y negocio: qué atributos pide y cuáles son obligatorios.lee
ai_jobsMS-15Cada trabajo de IA con su entrada, su resultado y su confianza.lee

8. Historias que cubre

HistoriaPrioridadCómo la cubre
FT-PLT-08·H1 · Paridad del títuloP1pasos 2, 3, 5; flujo «Recalcular y comparar antes de republicar»; API-01-026
FT-PLT-08·H2 · Recálculo a tiempoP1pasos 10, 11, 12; flujo «Recalcular y comparar antes de republicar»; API-02-109
FT-PLT-08·H3 · Atributos del título en MarketplaceP2pasos 7, 8; API-01-027
FT-PLT-08·H4 · Nombres completosP2flujo «Nombre de un configurable»; API-02-106
FT-PLT-08·H5 · SEOP3flujo «Sugerencias de título para el seller»; API-02-108, API-15-007
FT-PLT-08·H6 · La misma descripción en surtido y en la páginaP3API-02-054

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-08-1. MS-02 calcula título, título sin marca y descripción con la regla de nombre de la plantilla, que guarda Catálogo (metadatos de nombre con herencia de EU4 a EU3). El cálculo vive junto al dato del producto. Por qué: El título se arma con valores del producto; calcularlo en otro lado obligaría a copiar esos valores. La regla sigue siendo de Catálogo. Se apoya en PD-05, DEC-ARQ-08, ADR-12.
  • D-PLT-08-2. Precedencia del título: un valor fijado a mano gana sobre la regla y la regla gana cuando nadie lo fijó; la IA sólo sugiere y lo sugerido se guarda como propio si el usuario lo acepta. El producto guarda el origen del título (REGLA, MANUAL o IA aceptada). Por qué: Hoy el título tiene cinco escritores y gana el último, sin regla; guardar el origen evita que un recálculo pise lo que alguien corrigió. Se apoya en PEN-167, RN-ENR-05.
  • D-PLT-08-3. El título se recalcula en la misma transacción en que cambia un dato que lo forma. Si cambia la regla de la plantilla, el recálculo corre en una cola propia de calculados, con prioridad sobre la cola general, y termina antes de 1 hora para una plantilla típica. Por qué: Hoy el título sin marca tarda hasta 45 días por la cola de cambios de P360 y repoblamiento aprueba una hora después. Se apoya en RF-PLA-16, DEC-86.
  • D-PLT-08-4. Un producto aprobado cuyo título cambió por recálculo de la regla se republica directo, sin Revisión del cambio: su canal pasa de Publicado a Enviado. Por qué: Ningún dato del proveedor cambió; la regla ya pasó por la aprobación de cambios del catálogo. Se apoya en RF-PLA-16, FT-PRD-05.
  • D-PLT-08-5. Si a un seller de Marketplace le falta un atributo del título, el título se arma con lo disponible y se le avisa, sin bloquear; la IA puede sugerir lo que falta. Por qué: Pedirlo como obligatorio contradice que los atributos del título no sean obligatorios en Marketplace; generarlo vacío deja títulos genéricos. Se apoya en PEN-137, RN-PLA-15.
  • D-PLT-08-6. Hay una sola descripción, en el producto. La tienda, OMS, Señalización y el surtido la reciben de la misma foto de publicación. La ruta de hoy que usa XD no se construye y su reemplazo se decide con ADR-06. Por qué: Si cada sistema guarda su descripción, el surtido falla al buscar el producto; una fuente evita la diferencia. Se apoya en ADR-06, ADR-12.
  • D-PLT-08-7. Antes del corte, la regla se prueba contra los 981 pares de la tienda y se reporta el porcentaje de acierto; la referencia se congela después del cambio de estrategia de título sin marca en P360. Por qué: La referencia de paridad se mueve con los scripts de títulos de P360. Se apoya en RSG-47, PEN-120, DEC-86.
  • D-PLT-08-8. El nombre de cada miembro de un configurable se completa con los valores de su configuración, en el orden que dice la plantilla. Por qué: Hoy los configurables no reflejan su configuración en el nombre; la plantilla ya trae ese orden en 70 casos. Se apoya en DEC-85, PEN-119.

Qué falta decidir

IDQué falta
DUD-35Confirmar si la IA de títulos entra en la primera salida.
ADR-06Decidir cómo recibe XD la descripción cuando la ruta de hoy deje de existir.

También siguen abiertos: PEN-137, Confirmar con Gobierno de Producto qué hacer si al seller le falta un atributo del título (aquí: se arma con lo disponible y se avisa); PEN-26, Sesión pendiente de obligatoriedad y títulos; PEN-118, Definir qué es «product type» y qué información se mantiene de él.

Fuentes

  1. [D] trazabilidad/features/FT-PLT-08-titulos-nombres-descripciones.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.