← Arquitectura por épica

FT-PLT-10 · Fachada v1 compatible con P360 para Entrada Única y Foro

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-10: 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-10.json, generada con generar.py; la ficha de la épica es trazabilidad/features/FT-PLT-10-fachada-v1-compatible-p360.md.

En 30 segundos

Hoy el navegador de Vendor Center arma la pantalla de captura llamando directo a P360: la plantilla, una lista y un habilitador por atributo, las marcas, el margen y la revisión de sección. Esta épica define las rutas del BFF del portal que reemplazan esas llamadas en R1, con qué endpoints de Catálogo se arman y cómo se apaga cada llamada vieja cuando su tráfico llega a cero.

  • Módulo dueño: MS-01 Catálogo. También participan: MS-03 Migración y convivencia.
  • Etapa 2 · Plantilla. Recibe «PE-C · Catálogo vigente» y entrega «PE-3 · Plantilla asignada».
  • APIs: construye 7 y usa 8 que construyen otras épicas.
  • Eventos: publica 2 y consume 2.

1. Dónde encaja

Recibe

DeQué
PE-C · Catálogo vigenteEl catálogo vigente en MS-01: plantillas, vistas efectivas, listas, diccionarios y reglas.
FT-PLT-06 · Configuración de atributos por plantilla y por negocio…La vista efectiva por plantilla y negocio (API-01-028), con secciones, obligatorios y dependencias de un nivel, y los valores válidos de las listas grandes (API-01-108).
FT-PLT-03 · Listas de valores y modelo canónico con equivalencias por…Las listas de valores y su filtro por plantilla.
FT-PLT-07 · Reglas de atributosLas marcas y grupos de artículos permitidos por plantilla, negocio y proveedor, con la sección ligada (API-01-202).
FT-MIG-02 · Migración de plantillas, atributos y listas de valoresLa copia viva del catálogo de P360 en MS-01 mientras P360 sea la fuente.

Entrega

AQué
PE-3 · Plantilla asignadaLa pantalla de captura pide por el BFF los campos y obligatorios de la plantilla y negocio que dice la vista efectiva de MS-01, sin llamar a P360.
FT-PRD-07 · Captura guiada por pasos con los mínimos primeroEl formulario de captura de una plantilla (API-BFF-101), que la captura guiada junta con la propuesta.
FT-PRD-09 · Contrato de propuestas con Entrada ÚnicaLas rutas de catálogo que la pantalla de propuesta compone cuando pasa al BFF en R2.
FT-ACT-05 · Servicios para Foro FotográficoLas mismas rutas para el módulo de Foro en Vendor Center, con la agrupación de GetTemplateForo.
FT-FLU-04 · Carga masiva de productos por archivoLa revisión de plantilla y sección por renglón para la carga masiva (API-BFF-104).
FT-MIG-04 · Convivencia P360 ↔ nuevo PIMCada operación de plantilla de P360 sin tráfico del navegador, lista para quitarse, y el interruptor de los dos avisos de catálogo para el corte.

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

Buscar plantillas
Qué puede capturar el proveedor con e…
y 5 más

Selector de plantillas
Marcas y grupos permitidos
y 5 más

Captura plantillas y listas del juego…

Vista efectiva de una plantilla por n…

Conciliación de una corrida

Las llamadas del navegador a P360 baj…

(contrato de hoy)

(contrato de hoy)

Proveedor

Administración del catálogo

Entrada Única · Vendor Center

BFF del portal

★ MS-01 Catálogo

MS-03 Migración y convivencia

Base pim

Eventos

P360

Backends de hoy de Entrada Única y Foro

Contexto de FT-PLT-10

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.

Base·pimMS-01 CatálogoEntrada Única · Vendor CenterBase·pimMS-01 CatálogoEntrada Única · Vendor CenterProveedorBFF1. Busca la plantilla de su producto2. Busca la plantilla por textoGET /bff/v1/catalog/templates3. Busca entre las plantillas vigentesGET /api/v2/structures/{id}/leaves4. Pregunta si puede catalogar con esa plantillaGET /bff/v1/catalog/capture-scope5. Pide marcas, grupos y sección permitidosGET /api/v2/rules/allowed-values6. Pide el formulario de captura en una llamadaGET /bff/v1/catalog/capture-form7. Pide la vista efectiva de plantilla y negocioGET /api/v2/taxonomies/PRODUCT/nodes/{id}/effective8. Pide las etiquetas de las listas chicasGET /api/v2/lovs/{id}/values9. Lee la vista ya resuelta de template_views10. Abre una lista grande y busca un valor11. Pide los valores con búsqueda y páginasGET /bff/v1/catalog/capture-form/values12. Pide los valores válidos ya filtradosGET /api/v2/taxonomies/PRODUCT/nodes/{id}/attributes/{attribute…13. Pide los factores de margen por impuestoGET /bff/v1/catalog/margin-factors14. Lee la tabla de margen por indicadorGET /api/v2/reference-tables/{t}/entriesProveedorBFF
Flujo principal de FT-PLT-10
Los pasos en texto
PasoDeAQué haceAPI o evento
1ProveedorEntrada Única · Vendor CenterBusca la plantilla de su producto—
2Entrada Única · Vendor CenterBFF del portalBusca la plantilla por textoAPI-BFF-107
3BFF del portalMS-01 CatálogoBusca entre las plantillas vigentesAPI-01-022
4Entrada Única · Vendor CenterBFF del portalPregunta si puede catalogar con esa plantillaAPI-BFF-103
5BFF del portalMS-01 CatálogoPide marcas, grupos y sección permitidosAPI-01-202
6Entrada Única · Vendor CenterBFF del portalPide el formulario de captura en una llamadaAPI-BFF-101
7BFF del portalMS-01 CatálogoPide la vista efectiva de plantilla y negocioAPI-01-028
8BFF del portalMS-01 CatálogoPide las etiquetas de las listas chicasAPI-01-007
9MS-01 CatálogoBase pimLee la vista ya resuelta de template_views—
10ProveedorEntrada Única · Vendor CenterAbre una lista grande y busca un valor—
11Entrada Única · Vendor CenterBFF del portalPide los valores con búsqueda y páginasAPI-BFF-102
12BFF del portalMS-01 CatálogoPide los valores válidos ya filtradosAPI-01-108
13Entrada Única · Vendor CenterBFF del portalPide los factores de margen por impuestoAPI-BFF-105
14BFF del portalMS-01 CatálogoLee la tabla de margen por indicadorAPI-01-012

3.1 Paridad y apagado con tráfico cero

Entrada Única · Vendor CenterBase·pimMS-01 CatálogoP360MS-03 Migración y convivenciaEntrada Única · Vendor CenterBase·pimMS-01 CatálogoP360MS-03 Migración y convivenciaAdministración del catálogoBFF1. Captura plantillas y listas del juego del día2. Pide la misma vista efectiva el mismo díaGET /api/v2/taxonomies/PRODUCT/nodes/{id}/effective3. Guarda las diferencias por plantilla y campo4. Revisa y justifica las diferencias del día5. Pide la conciliación del díaGET /api/v2/migration/reconciliation?runId=6. Cada app pasa la operación vieja a su ruta7. Las llamadas del navegador a P360 bajan a ceroAdministración del catálogoBFF
Paridad y apagado con tráfico cero

3.2 Revisión de plantilla y sección en la carga masiva

MS-01 CatálogoEntrada Única · Vendor CenterMS-01 CatálogoEntrada Única · Vendor CenterProveedorBFF1. Sube su archivo de alta masiva2. Revisa plantilla y sección de cada renglónPOST /bff/v1/catalog/template-section-checks3. Pide la sección ligada de cada plantilla distintaGET /api/v2/rules/allowed-values4. Corrige los renglones sin sección ligada5. Vuelve a revisar sólo los corregidosPOST /bff/v1/catalog/template-section-checksProveedorBFF
Revisión de plantilla y sección en la carga masiva

3.3 Aviso a la copia de plantillas de Entrada Única

Backends de hoy de Entrada Única…EventosBase·pimMS-01 CatálogoEntrada Única · Vendor CenterBackends de hoy de Entrada Única…EventosBase·pimMS-01 CatálogoEntrada Única · Vendor CenterAdministración del catálogoBFF1. Confirma un cambio de plantilla2. Confirma el plan del cambioPOST /api/v2/catalog-plans/{planId}/apply3. Guarda el cambio y su aviso juntos4. Publica el aviso con el cuerpo de hoy(contrato de hoy)5. Entrega el aviso a la copia de Entrada Única(contrato de hoy)6. Si cambió un filtro, avisa la relación plantilla–atributo(contrato de hoy)7. Entrega la relación al backend de Entrada Única(contrato de hoy)Administración del catálogoBFF
Aviso a la copia de plantillas de Entrada Única

4. Si algo sale mal

  • MS-01 no responde al armar el formulario. El BFF responde 503 y la pantalla muestra el error; nunca un formulario o una lista vacíos sin aviso, como pasa hoy cuando P360 falla.
  • La paridad del día encuentra diferencias sin justificar. Esa operación no se cambia en las apps hasta que Gobierno de Producto las cierre; si ya se cambió, la app regresa a la llamada de P360 con su interruptor mientras P360 viva.
  • Una operación vieja no llega a cero. No se quita de la entrada de P360: se busca quién la sigue llamando y se mueve; si no es una pantalla (un script o la IA), se decide con ADR-06.
  • Un proveedor intenta ver el alcance de otro proveedor. El BFF toma al proveedor de la sesión y MS-01 responde 403 si no coincide; la pantalla no lo muestra.
  • Llegan dos avisos de plantilla por el mismo cambio. No puede pasar con un solo emisor: el de MS-01 se enciende por tópico en la misma ventana en que se apaga el de P360 (FT-MIG-04).

5. APIs

Las que construye esta épica (7)

GET /bff/v1/catalog/capture-form · Formulario de captura de una plantilla
CampoValor
APIAPI-BFF-101 · BFF del portal
Para quéArma en una sola respuesta lo que la pantalla de captura necesita de una plantilla y negocio: secciones en orden, atributos con tipo, obligatoriedad y orden, de qué valor depende cada uno y los valores de las listas chicas con su etiqueta. Reemplaza GetTemplate y las llamadas por atributo a listas y habilitadores (incluido el del nombre de producto) que hoy hace el navegador a P360. Con groupBy=ATTRIBUTE_GROUP agrupa como GetTemplateForo, para el módulo de Foro en Vendor Center. Toma de la vista efectiva los códigos permitidos y las dependencias, y de la lista sólo las etiquetas.
En esta épicaFormulario de captura en una llamada: reemplaza GetTemplate, las listas chicas y los habilitadores
Quién la llamaEntrada Única · Vendor Center (por el BFF)
PermisoPantalla de captura: proveedor, seller o usuario interno con acceso a la plantilla
CabecerasAuthorization, X-Request-Id
ParámetrostemplateId = EU4-0412, business = MER, creationType = CreateProposal, groupBy = SECTION, lang = es
También la usanFT-PRD-07, FT-PRD-09

Request

null

Response · 200

{
  "success": true,
  "data": {
    "templateId": "EU4-0412",
    "templateName": "Camisas",
    "business": "MER",
    "creationType": "CreateProposal",
    "sourceVersions": {
      "templateView": 41,
      "lovs": 12
    },
    "lastModified": "2026-10-17T22:10:00Z",
    "sections": [
      {
        "code": "DATOS_BASE",
        "label": "Datos base",
        "order": 1,
        "attributes": [
          {
            "id": "TamanoUnico",
            "label": "Talla",
            "dataType": "LOV",
            "mandatory": true,
            "editable": true,
            "multiValued": false,
            "order": 4,
            "values": {
              "inline": true,
              "items": [
                {
                  "code": "S",
                  "label": "Chica"
                },
                {
                  "code": "M",
                  "label": "Mediana"
                },
                {
                  "code": "L",
                  "label": "Grande"
                }
              ]
            }
          },
          {
            "id": "CertificadoSostenible",
            "label": "Certificado sostenible",
            "dataType": "LOV",
            "mandatory": false,
            "editable": true,
            "multiValued": true,
            "order": 12,
            "enabledBy": {
              "attribute": "AE485",
              "values": [
                "SI"
              ]
            },
            "values": {
              "inline": false,
              "url": "/bff/v1/catalog/capture-form/values?templateId=EU4-0412&attributeId=CertificadoSostenible&business=MER"
            }
          },
          {
            "id": "NombreProducto",
            "label": "Nombre del producto",
            "dataType": "TEXT",
            "mandatory": true,
            "editable": true,
            "order": 2,
            "enabledBy": {
              "attribute": "TipoProducto",
              "values": [
                "CAMISA",
                "BLUSA"
              ]
            }
          }
        ]
      },
      {
        "code": "FOTOS",
        "label": "Fotos",
        "order": 9,
        "attributes": []
      }
    ]
  }
}

Errores

HTTPCódigoCuándo
404NOT_FOUNDLa plantilla no existe o no aplica a ese negocio
503DEPENDENCY_UNAVAILABLEMS-01 no responde: la pantalla muestra el error, nunca un formulario o una lista vacíos
GET /bff/v1/catalog/capture-form/values · Valores de una lista en la captura
CampoValor
APIAPI-BFF-102 · BFF del portal
Para quéDa los valores válidos de un atributo de lista en una plantilla y negocio, con búsqueda y páginas, y, si el atributo depende de otro, sólo los que habilita el valor del padre (por ejemplo, las certificaciones que habilita AE485). Reemplaza proc_ws_list_valid_values_for_template_characteristic_lov, ws_list_valid_values_for_parent_template_characteristic_enabler y GetListOfValuesEnabler.
En esta épicaValores de una lista con búsqueda y páginas, y los que habilita un padre
Quién la llamaEntrada Única · Vendor Center (por el BFF)
PermisoPantalla de captura
CabecerasAuthorization, X-Request-Id
ParámetrostemplateId = EU4-0412, attributeId = TamanoUnico, business = MER, parentValue = `, q = , page = 1, size = 50`
También la usanFT-FLU-06

Request

null

Response · 200

{
  "success": true,
  "data": {
    "items": [
      {
        "code": "XS",
        "label": "Extra chica",
        "order": 1
      },
      {
        "code": "S",
        "label": "Chica",
        "order": 2
      },
      {
        "code": "M",
        "label": "Mediana",
        "order": 3
      }
    ],
    "page": 1,
    "size": 50,
    "total": 19
  }
}

Errores

HTTPCódigoCuándo
404NOT_FOUNDLa plantilla o el atributo no existen, o el atributo no es de lista
400VALIDATION_ERROREl atributo depende de otro y no llega el valor del padre
GET /bff/v1/catalog/capture-scope · Qué puede capturar el proveedor con esta plantilla
CampoValor
APIAPI-BFF-103 · BFF del portal
Para quéAl pulsar «Siguiente» en la elección de plantilla, dice en una sola llamada si el proveedor o seller puede catalogar ese producto: marcas y grupos de artículos permitidos y, en Mercaderías y Suburbia, si la plantilla está ligada a la sección. Reemplaza BrandsGroupOfArticleByTemplateBusinessProvider y ValidateTemplateSection. El proveedor sale de la sesión; un usuario interno lo manda. A un seller no le muestra códigos SAP.
En esta épicaMarcas, grupos y sección ligada: reemplaza BrandsGroupOfArticleByTemplateBusinessProvider y ValidateTemplateSection
Quién la llamaEntrada Única · Vendor Center (por el BFF)
PermisoPantalla de captura
CabecerasAuthorization, X-Request-Id
ParámetrostemplateId = EU4-0412, business = MER, section = 424, supplierId = PROV-0001
También la usanFT-PRD-09, FT-REF-01

Request

null

Response · 200

{
  "success": true,
  "data": {
    "canCatalog": true,
    "sectionLinked": true,
    "brands": [
      {
        "code": "MARCA01",
        "label": "Marca Uno"
      }
    ],
    "itemGroups": [
      {
        "code": "424104421",
        "label": "Camisas de caballero"
      }
    ],
    "message": null
  }
}

Errores

HTTPCódigoCuándo
403AUTHORIZATION_ERRORUn proveedor o seller pide el alcance de otro
404NOT_FOUNDLa plantilla no existe
POST /bff/v1/catalog/template-section-checks · Revisar plantilla y sección por renglón
CampoValor
APIAPI-BFF-104 · BFF del portal
Para quéPara la carga masiva, revisa de 1 a 500 renglones a la vez si cada plantilla está ligada a su sección y negocio, con el mismo resultado que ValidateTemplateSection renglón por renglón. Pide a MS-01 una vez por plantilla distinta; no decide nada.
En esta épicaPlantilla y sección por renglón en la carga masiva
Quién la llamaEntrada Única · Vendor Center (por el BFF)
PermisoPantalla de carga masiva
CabecerasAuthorization, X-Request-Id
También la usanFT-FLU-04

Request

{
  "business": "MER",
  "items": [
    {
      "row": 2,
      "templateId": "EU4-0412",
      "section": "424"
    },
    {
      "row": 3,
      "templateId": "EU4-0413",
      "section": "531"
    }
  ]
}

Response · 200

{
  "success": true,
  "data": {
    "items": [
      {
        "row": 2,
        "exists": true
      },
      {
        "row": 3,
        "exists": false,
        "message": "La plantilla no está asociada a la sección"
      }
    ]
  }
}

Errores

HTTPCódigoCuándo
400VALIDATION_ERRORMás de 500 renglones, o un renglón sin plantilla o sin sección
GET /bff/v1/catalog/margin-factors · Factores de margen por indicador de impuesto
CampoValor
APIAPI-BFF-105 · BFF del portal
Para quéJunta en una lista cada indicador de impuesto con su etiqueta y su factor de margen (la tabla MargenVsIndicadorImp de Catálogo). Reemplaza en R1 las dos llamadas a P360 que hoy cruza el navegador (MargenVsIndicadorImp y GetListOfValuesComplete de impuestos). Desde R2 el margen ya no se calcula en el navegador: lo devuelve calculado el plan de valores de MS-02.
En esta épicaFactores de margen por indicador: reemplaza MargenVsIndicadorImp y los impuestos de GetListOfValuesComplete
Quién la llamaEntrada Única · Vendor Center (por el BFF)
PermisoPantalla de captura
CabecerasAuthorization, X-Request-Id
Parámetrosbusiness = MER
También la usanFT-REF-01

Request

null

Response · 200

{
  "success": true,
  "data": {
    "items": [
      {
        "taxIndicator": "G5",
        "label": "Indicador G5",
        "factor": "1.2528"
      },
      {
        "taxIndicator": "E2",
        "label": "IVA 16 %",
        "factor": "1.16"
      }
    ],
    "sourceVersions": {
      "MargenVsIndicadorImp": 7,
      "MWSKZLOV": 12
    }
  }
}

Errores

HTTPCódigoCuándo
503DEPENDENCY_UNAVAILABLEMS-01 no responde: la pantalla dice que el margen no está disponible, no muestra cero
GET /bff/v1/catalog/lists/{listCode}/values · Valores de un catálogo de referencia
CampoValor
APIAPI-BFF-106 · BFF del portal
Para quéDa los valores de un catálogo por su código, con búsqueda y páginas: indicadores de impuesto (MWSKZLOV, TAXESS4HLOV) y las demás listas de referencia que la captura muestra. Reemplaza GetListOfValuesComplete en el navegador.
En esta épicaValores de un catálogo de referencia: reemplaza GetListOfValuesComplete
Quién la llamaEntrada Única · Vendor Center (por el BFF)
PermisoPantalla de captura
CabecerasAuthorization, X-Request-Id
ParámetroslistCode = MWSKZLOV, q = `, page = 1, size = 50`

Request

null

Response · 200

{
  "success": true,
  "data": {
    "items": [
      {
        "code": "E2",
        "label": "IVA 16 %"
      },
      {
        "code": "G5",
        "label": "Indicador G5"
      }
    ],
    "page": 1,
    "size": 50,
    "total": 36
  }
}

Errores

HTTPCódigoCuándo
404NOT_FOUNDEl catálogo no existe
GET /bff/v1/catalog/templates · Buscar plantillas
CampoValor
APIAPI-BFF-107 · BFF del portal
Para quéBusca plantillas por texto, de 3 a 250 caracteres, con su ruta legible y sin truncar, para elegir el tipo de producto. Reemplaza la búsqueda en la copia de plantillas de Entrada Única cuando su pantalla pasa al BFF.
En esta épicaBuscar plantillas por texto
Quién la llamaEntrada Única · Vendor Center (por el BFF)
PermisoPantalla de captura
CabecerasAuthorization, X-Request-Id
Parámetrosq = camisa, business = MER, page = 1, size = 20
También la usanFT-PLT-05, FT-PRD-09

Request

null

Response · 200

{
  "success": true,
  "data": {
    "items": [
      {
        "templateId": "EU4-0412",
        "name": "Camisas",
        "path": "Ropa > Caballero > Camisas"
      }
    ],
    "page": 1,
    "size": 20,
    "total": 1
  }
}

Errores

HTTPCódigoCuándo
400VALIDATION_ERROREl texto tiene menos de 3 o más de 250 caracteres

Las que usa y construye otra épica (8)

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-022GET /api/v2/structures/{id}/leavesPlantillas vigentes con su ruta legibleFT-PLT-05 · Taxonomía de plantillas por familia, metadatos de…
API-01-028GET /api/v2/taxonomies/PRODUCT/nodes/{id}/effectiveVista efectiva por plantilla y negocio: códigos permitidos de las listas chicas y dependenciasFT-PLT-06 · Configuración de atributos por plantilla y por negocio…
API-01-108GET /api/v2/taxonomies/PRODUCT/nodes/{id}/attributes/{attributeId}/valuesValores válidos de un atributo en una plantilla y negocio, filtrados por el valor del padreFT-PLT-06 · Configuración de atributos por plantilla y por negocio…
API-01-007GET /api/v2/lovs/{id}/valuesEtiquetas de los valores y catálogos de referenciaFT-PLT-03 · Listas de valores y modelo canónico con equivalencias por…
API-01-012GET /api/v2/reference-tables/{t}/entriesEntradas de la tabla MargenVsIndicadorImpFT-REF-01 · Datos de referencia administrables
API-01-202GET /api/v2/rules/allowed-valuesMarcas, grupos y sección ligada por plantilla, negocio y proveedorFT-PLT-07 · Reglas de atributos
API-01-004POST /api/v2/catalog-plans/{planId}/applyConfirmar el cambio de plantilla que dispara el avisoFT-PLT-01 · Fundamentos de gobierno de plantillas
API-03-003GET /api/v2/migration/reconciliation?runId=Diferencias del día entre P360 y MS-01FT-MIG-02 · Migración de plantillas, atributos y listas de valores

6. Eventos

Publica

EventoCuándoQuién lo consume
idmc_put_template/(contrato de hoy)Desde el corte del catálogo, cada alta o cambio confirmado de un nodo de plantilla o de su cabecera, mientras viva el backend de Entrada ÚnicaMS-05 (bitácora)
idmc_put_value-list-relation/(contrato de hoy)Desde el corte del catálogo, cada cambio confirmado del filtro de valores de un atributo en una plantillaMS-05 (bitácora)

Consume

EventoPara quéQuién lo publica
idmc_put_template/(contrato de hoy)El backend de Entrada Única actualiza su copia de plantillas hasta que se apague en R3esta misma épica
idmc_put_value-list-relation/(contrato de hoy)El backend de Entrada Única actualiza la relación plantilla–atributo de su copiaesta misma épica

7. Datos

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

ColecciónDueñoQué guardaEsta épica
governance_outboxMS-01Los cambios del catálogo que esperan salir como evento (antes outbox).escribe
template_viewsMS-01La vista efectiva ya resuelta por plantilla y negocio: qué atributos pide y cuáles son obligatorios.lee
lovsMS-01Cabecera de cada lista de valores.lee
lov_valuesMS-01Cada valor de lista: código, etiqueta, orden y equivalencias por sistema.lee
reference_tablesMS-01Las entradas de los diccionarios: tallas, colores, impuestos, excepciones y demás datos de referencia.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
taxonomy_nodesMS-01Plantillas y nodos de grupo de artículo, con la configuración de atributos de cada plantilla.lee

8. Historias que cubre

HistoriaPrioridadCómo la cubre
FT-PLT-10·H1 · GetTemplate idénticoP1pasos 6, 7, 8, 9; flujo «Paridad y apagado con tráfico cero»; API-BFF-101
FT-PLT-10·H2 · Listas idénticasP1pasos 10, 11, 12; flujo «Paridad y apagado con tráfico cero»; API-BFF-102, API-01-108
FT-PLT-10·H3 · Foro sin cambiosP1API-BFF-101, API-BFF-102. Fuera: Cambia con la decisión 20: el backend de Foro no apunta a una fachada; sigue contra P360 hasta apagarse en R2, y el módulo de Foro en Vendor Center usa API-BFF-101 agrupado como GetTemplateForo (FT-ACT-05).
FT-PLT-10·H4 · Publicación a EUP2flujo «Aviso a la copia de plantillas de Entrada Única»
FT-PLT-10·H5 · Paridad automatizadaP2flujo «Paridad y apagado con tráfico cero»; API-03-003
FT-PLT-10·H6 · ValidateTemplateSection idénticoP1pasos 4, 5; flujo «Revisión de plantilla y sección en la carga masiva»; API-BFF-103, API-BFF-104

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-10-1. FT-PLT-10 deja de ser fachada: no se construye ninguna ruta /public/rt de catálogo (API-01-054 a API-01-066). Cada operación de plantilla que hoy llama el navegador a P360 se reemplaza por una ruta del BFF que se arma con endpoints de MS-01, y cada app la cambia una sola vez, en R1. Por qué: Lo fija la decisión 20, que adopta ADR-12: cambiar los fronts una vez y no mantener capas temporales. Reemplaza el sentido de DEC-PLT-11 para los fronts. Se apoya en ADR-12, DEC-PLT-11, PD-06.
  • D-PLT-10-2. Una llamada por pantalla: el formulario de captura (API-BFF-101) junta la plantilla, las listas chicas y los habilitadores, incluido el del nombre de producto, que hoy son una llamada más una por atributo, copiadas en 4 apps. Las listas grandes van con búsqueda y páginas (API-BFF-102). Marcas, grupos y sección ligada se responden juntos (API-BFF-103), porque la pantalla los pide en el mismo «Siguiente». Por qué: Quita la composición del navegador y baja de unos 5 s de P360 a la meta de 300 ms de promedio y 800 ms de máximo por pantalla. Se apoya en ADR-12, DEC-PLT-04.
  • D-PLT-10-3. El BFF no decide nada: el filtro de valores y la dependencia del padre (API-01-108), el alcance del proveedor y la liga plantilla–sección (API-01-202) y el factor de margen (API-01-012) salen de MS-01; el BFF junta, pagina, pone etiquetas, agrupa para la pantalla y toma al proveedor de la sesión. Por qué: Es la regla del BFF de la decisión 19: sin base y sin reglas; si aparece una, se muda al servicio dueño. Se apoya en ADR-12.
  • D-PLT-10-4. Cómo se apaga cada llamada vieja: antes de cambiarla, MS-03 compara cada día P360 contra MS-01 con el juego de referencia del mismo día; con cero diferencias sin justificar se cambia en las apps; cuando la entrada de P360 cuenta cero llamadas del navegador a esa operación durante 14 días seguidos, se quita de esa entrada. P360 sigue atendiendo a otros consumidores hasta R3. Por qué: Una captura de otro día no sirve porque la configuración cambia a diario; y sólo el conteo en la entrada prueba que nadie la sigue llamando. Se apoya en RSG-50, PD-12.
  • D-PLT-10-5. Lo que no es pantalla no entra aquí: GetTemplates y la carga por archivo del backend de Entrada Única siguen contra P360 hasta su apagado en R3; GetTemplateForo y las listas que pide el backend de Foro se apagan con él en R2, cuando el módulo de Foro en Vendor Center use estas mismas rutas; los scripts de Gobierno de Producto y la IA de plantillas se deciden con ADR-06. Por qué: La decisión 20 sólo cambia los fronts; los consumidores que no son pantalla tienen su propia fecha de apagado. Se apoya en PD-30, PD-31, ADR-06.
  • D-PLT-10-6. La copia de plantillas de Entrada Única se mantiene con los avisos de hoy hasta que se apague con Entrada Única. Mientras P360 sea la fuente del catálogo, los manda P360; desde el corte del catálogo, MS-01 manda idmc_put_template e idmc_put_value-list-relation con el mismo cuerpo desde su outbox, con un interruptor por tópico que se enciende en la misma ventana en que se apaga el de P360. Por qué: Entrada Única usa su copia hasta que sus pantallas de producto se mudan, y dos emisores duplicarían avisos; es la misma regla que FT-INT-06 fija para los avisos de producto. Se apoya en DEC-PLT-12, PD-12, FT-INT-06.
  • D-PLT-10-7. El margen sigue calculándose en el navegador sólo en R1, con los factores que da API-BFF-105 en vez de P360; desde R2 lo devuelve calculado el plan de valores de MS-02 y el cálculo sale del navegador. Por qué: En R1 todavía no existe MS-02, el motor único de reglas, y no se construye un evaluador temporal en MS-01. Se apoya en ADR-12, FT-PLT-07.

Qué falta decidir

IDQué falta
PD-12Fijar el orden de corte del catálogo: cuándo deja P360 de ser la fuente y MS-01 empieza a mandar los avisos a Entrada Única.
DUD-28Medir el portal de Foro, que no está en el workspace, para confirmar qué rutas usa el módulo de Foro en Vendor Center.
DUD-06Confirmar que las suscripciones de plantillas de Entrada Única sin emisor en el código tienen tráfico cero antes de dejarlas sin emisor.
ADR-06Decidir qué pasa con los consumidores que no son pantalla: scripts de Gobierno de Producto e IA de plantillas.

También siguen abiertos: PEN-94, Confirmar en qué momento consulta Foro la plantilla y las listas.

Fuentes

  1. [D] trazabilidad/features/FT-PLT-10-fachada-v1-compatible-p360.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.