← Arquitectura por épica

FT-PLT-02 · Catálogo de atributos

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

En 30 segundos

Cada dato que se le pide a un producto es un atributo del catálogo: su tipo, sus restricciones, su lista de valores y a qué sistemas viaja. Hoy esas reglas están regadas en tablas y en código, y cada canal valida distinto. Esta épica deja un solo catálogo de atributos que dicta cómo se valida un valor en la pantalla, la carga masiva y la API, y qué viaja a cada sistema, incluidos los bloques de varias filas y los atributos que aparecen según otro.

  • Módulo dueño: MS-01 Catálogo. También participan: MS-13 Identidad y acceso, MS-02 Producto, MS-08 Adaptadores de salida.
  • Etapa C · Configura el catálogo. Recibe «PE-T · Usuario con permisos y bitácora» y entrega «PE-C · Catálogo vigente».
  • APIs: construye 4 y usa 6 que construyen otras épicas.
  • Eventos: publica 1 y consume 3.

1. Dónde encaja

Recibe

DeQué
PE-T · Usuario con permisos y bitácoraEl administrador de Gobierno de Producto ya identificado, con sus roles del directorio de MS-13.
FT-PLT-01 · Fundamentos de gobierno de plantillasEl mecanismo común de escritura: plan, solicitud con aprobación, ID inmutables y recibo; cada cambio aprobado sale como evento con su antes y después.

Entrega

AQué
PE-C · Catálogo vigenteLos atributos vigentes con su tipo, restricciones, lista, bloque, regla condicional y metadatos por sistema, que todos leen de MS-01 y refrescan con ATTRIBUTE_CHANGED.
FT-PLT-03 · Listas de valores y modelo canónico con equivalencias por…Los atributos de tipo lista, cada uno con su lista y la que usa cada negocio.
FT-PLT-04 · Grupos de atributos y mínimos de información por sistema…La relevancia de cada atributo por destino y su pertenencia a grupos, de donde sale la salida por sistema.
FT-PLT-06 · Configuración de atributos por plantilla y por negocio…El catálogo del que se toman los atributos para configurar cada plantilla, con sus restricciones y su regla condicional por omisión.

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 atributos
Detalle de un atributo
y 3 más

Roles efectivos de quien llama

ATTRIBUTE_CHANGED

ATTRIBUTE_CHANGED

ATTRIBUTE_CHANGED

POST /internal/product/catalog-usage

Exige el tipo nuevo, no hay valores q…

Salida efectiva por destino

Datos para los archivos de SAP

Manda los archivos sin los atributos…

permisos

Administración del catálogo

Entrada Única · Vendor Center

BFF del portal

★ MS-01 Catálogo

MS-13 Identidad y acceso

MS-02 Producto

MS-08 Adaptadores de salida

Base pim

Eventos

SAP

Contexto de FT-PLT-02

3. Diagrama de flujo

El camino principal, paso por paso. Cuando una pantalla llama a un módulo se ven dos flechas: la pantalla al BFF y el BFF al módulo. Los eventos salen del outbox del módulo después de guardar; quien los consume ignora los repetidos.

MS-02 ProductoMS-08 Adaptadores de salidaEventosBase·pimMS-13 Identidad y accesoMS-01 CatálogoEntrada Única · Vendor CenterMS-02 ProductoMS-08 Adaptadores de salidaEventosBase·pimMS-13 Identidad y accesoMS-01 CatálogoEntrada Única · Vendor CenterAdministración del catálogoBFF1. Busca si ya existe un atributo parecido2. Busca por código o nombre en el catálogoGET /api/v2/attributes3. Abre el detalle con tipo, lista y metadatosGET /api/v2/attributes/{id}4. Captura tipo, restricciones y destinos del atributo nuevo5. Pide el plan del alta del atributoPOST /api/v2/attributes/plans6. Revisa que pueda administrar atributosGET /internal/identity/permissions?userId=7. Confirma y abre la solicitud de cambioPOST /api/v2/catalog-plans/{planId}/apply8. Otro administrador aprueba la solicitudPOST /api/v2/catalog-change-requests/{changeRequestId}/decision9. Guarda el atributo activo con su ID nuevo10. Avisa el atributo nuevoATTRIBUTE_CHANGED11. Entrega el cambio: ya sabe a qué destinos viajaATTRIBUTE_CHANGED12. Entrega el cambio para validar contra tipo y restriccionesATTRIBUTE_CHANGEDAdministración del catálogoBFF
Flujo principal de FT-PLT-02
Los pasos en texto
PasoDeAQué haceAPI o evento
1Administración del catálogoEntrada Única · Vendor CenterBusca si ya existe un atributo parecido—
2Entrada Única · Vendor CenterMS-01 Catálogo (por el BFF)Busca por código o nombre en el catálogoAPI-01-001
3Entrada Única · Vendor CenterMS-01 Catálogo (por el BFF)Abre el detalle con tipo, lista y metadatosAPI-01-002
4Administración del catálogoEntrada Única · Vendor CenterCaptura tipo, restricciones y destinos del atributo nuevo—
5Entrada Única · Vendor CenterMS-01 Catálogo (por el BFF)Pide el plan del alta del atributoAPI-01-003
6MS-01 CatálogoMS-13 Identidad y accesoRevisa que pueda administrar atributosAPI-13-001
7Entrada Única · Vendor CenterMS-01 Catálogo (por el BFF)Confirma y abre la solicitud de cambioAPI-01-004
8Entrada Única · Vendor CenterMS-01 Catálogo (por el BFF)Otro administrador aprueba la solicitudAPI-01-103
9MS-01 CatálogoBase pimGuarda el atributo activo con su ID nuevo—
10MS-01 CatálogoEventosAvisa el atributo nuevocatalog.governance.changed/ATTRIBUTE_CHANGED
11EventosMS-08 Adaptadores de salidaEntrega el cambio: ya sabe a qué destinos viajacatalog.governance.changed/ATTRIBUTE_CHANGED
12EventosMS-02 ProductoEntrega el cambio para validar contra tipo y restriccionescatalog.governance.changed/ATTRIBUTE_CHANGED

3.1 Cambiar el tipo de un atributo de lista

EventosMS-02 ProductoMS-01 CatálogoEntrada Única · Vendor CenterEventosMS-02 ProductoMS-01 CatálogoEntrada Única · Vendor CenterBFF1. Pide quitarle la lista a un atributoPOST /api/v2/attributes/plans2. Pregunta si algún producto ya tiene valorPOST /internal/product/catalog-usage3. Exige el tipo nuevo, no hay valores que cuidar4. Confirma con el tipo texto y abre la solicitudPOST /api/v2/catalog-plans/{planId}/apply5. Otro administrador aprueba la solicitudPOST /api/v2/catalog-change-requests/{changeRequestId}/decision6. Avisa el tipo nuevo del atributoATTRIBUTE_CHANGEDBFF
Cambiar el tipo de un atributo de lista

3.2 Bloques de filas y atributos condicionales

MS-02 ProductoEventosMS-01 CatálogoEntrada Única · Vendor CenterMS-02 ProductoEventosMS-01 CatálogoEntrada Única · Vendor CenterAdministración del catálogoBFF1. Define la composición textil como bloque de filas2. Pide el plan del atributo compuestoPOST /api/v2/attributes/plans3. Declara cuándo aparece y cuándo se exige el certificado4. Pide el plan de la regla condicionalPOST /api/v2/attributes/plans5. Confirma los dos planes y abre la solicitudPOST /api/v2/catalog-plans/{planId}/apply6. Otro administrador aprueba la solicitudPOST /api/v2/catalog-change-requests/{changeRequestId}/decision7. Avisa los dos atributos cambiadosATTRIBUTE_CHANGED8. Entrega el cambio: la captura pide filas y condicionesATTRIBUTE_CHANGEDAdministración del catálogoBFF
Bloques de filas y atributos condicionales

3.3 Lo que no es de SAP no viaja a SAP

SAPMS-02 ProductoMS-01 CatálogoMS-08 Adaptadores de salidaEventosSAPMS-02 ProductoMS-01 CatálogoMS-08 Adaptadores de salidaEventos1. Entrega el atributo con su relevancia por destinoATTRIBUTE_CHANGED2. Lee qué atributos viajan a SAPGET /api/v2/attribute-outputs3. Pide la foto del producto para los archivos de SAPGET /internal/product/products/{id}/sap-snapshot4. Manda los archivos sin los atributos que no son de SAP
Lo que no es de SAP no viaja a SAP

4. Si algo sale mal

  • Se quiere cambiar el tipo o la lista de un atributo que ya tiene valores. El plan responde 409 IMMUTABLE_ID con cuántos productos tienen valor. Se crea un atributo nuevo y el viejo se desactiva; los productos conservan su valor en el viejo.
  • Se pide borrar un atributo usado por una plantilla, una regla o un producto. El plan responde 422 BUSINESS_ERROR y ofrece desactivarlo: deja de pedirse en las capturas nuevas y nadie pierde un valor.
  • Un valor capturado no cumple las restricciones (101 caracteres en un texto de 100). La validación en línea de MS-02 lo rechaza con VALIDATION_ERROR en la ruta del campo; la regla sale del atributo y es la misma en la pantalla, la carga masiva y la API.
  • Un usuario sin perfil intenta crear, editar o borrar un atributo. MS-01 decide con los roles de MS-13 y responde 403 AUTHORIZATION_ERROR; no se abre ninguna solicitud.

5. APIs

Las que construye esta épica (4)

GET /api/v2/attributes · Buscar atributos
CampoValor
APIAPI-01-001 · MS-01 Catálogo
Para quéBusca en el catálogo de atributos por código o nombre, con filtros por tipo, estado, grupo y destino, y dice cuántos hay. Con esto Gobierno de Producto decide un cambio sin abrir P360.
En esta épicaBuscar atributos por código o nombre, con su total
Quién la llamaBFF del portal, MS-02 Producto, MS-15 IA y enriquecimiento
PermisoCAT-L (consulta del catálogo); los módulos, con su cuenta de servicio
CabecerasAuthorization, X-Request-Id
Parámetrosq = potencia, status = ACTIVE, dataType = DECIMAL, groupId = CARACTERISTICAS, relevantFor = TIENDA, page = 1, size = 50
También la usanFT-IA-05, FT-PLT-06, FT-REF-01

Request

null

Response · 200

{
  "success": true,
  "data": {
    "items": [
      {
        "attributeId": "ATR-0003001",
        "name": {
          "es": "Potencia",
          "en": "Power"
        },
        "dataType": "DECIMAL",
        "constraints": {
          "min": 0,
          "max": 5000,
          "decimals": 1,
          "unit": "W"
        },
        "multivalued": false,
        "lovId": null,
        "groups": [
          "CARACTERISTICAS",
          "DESTINO:TIENDA"
        ],
        "relevantFor": [
          "TIENDA",
          "MARKETPLACE",
          "DWH"
        ],
        "systemOfRecord": "PIM",
        "origin": "LIVERPOOL",
        "status": "ACTIVE",
        "version": 3
      }
    ],
    "page": 1,
    "size": 50,
    "total": 1
  }
}

Errores

HTTPCódigoCuándo
400VALIDATION_ERRORUn filtro trae un tipo, un estado o un destino que no existe
GET /api/v2/attributes/{id} · Detalle de un atributo
CampoValor
APIAPI-01-002 · MS-01 Catálogo
Para quéMuestra un atributo completo: nombre por idioma, tipo, restricciones, lista (y la que usa cada negocio), bloque de filas, regla condicional por omisión, metadatos por sistema, identificadores de SAP y de dónde viene.
En esta épicaVer un atributo completo
Quién la llamaBFF del portal, MS-02 Producto, MS-15 IA y enriquecimiento
PermisoCAT-L; los módulos, con su cuenta de servicio
CabecerasAuthorization, X-Request-Id
Parámetrosid = MARCA

Request

null

Response · 200

{
  "success": true,
  "data": {
    "attributeId": "MARCA",
    "name": {
      "es": "Marca",
      "en": "Brand"
    },
    "helpText": {
      "es": "La marca comercial del producto, como la registra SAP"
    },
    "dataType": "LOV",
    "lov": {
      "lovId": "MARCAS_ECC_LOV",
      "lovByBusiness": {
        "SUB": "MARCAS_S4H_LOV"
      },
      "newValuePolicy": "REJECT"
    },
    "multivalued": false,
    "constraints": {},
    "composite": null,
    "dependency": null,
    "metadata": {
      "systemOfRecord": "SAP",
      "origin": "ERP",
      "relevantFor": [
        "SAP",
        "TIENDA",
        "OMS",
        "MARKETPLACE",
        "SENALIZACION",
        "DWH"
      ],
      "uniqueByBusiness": false,
      "validity": [
        "TODOS"
      ],
      "variantLevel": "GENERIC"
    },
    "externalIds": {
      "ECC": "BRAND_ID",
      "S4H": "BRAND_ID"
    },
    "groups": [
      "DATOS_MAESTROS",
      "DESTINO:SAP",
      "DESTINO:TIENDA",
      "SECCION:DATOS_BASE"
    ],
    "status": "ACTIVE",
    "version": 7,
    "audit": {
      "origin": "MIGRATION",
      "loadedAt": "2026-12-05T06:00:00Z",
      "updatedAt": "2027-01-12T17:40:00Z"
    }
  }
}

Errores

HTTPCódigoCuándo
404NOT_FOUNDEl atributo no existe
POST /api/v2/attributes/plans · Plan de alta o cambio de atributos
CampoValor
APIAPI-01-003 · MS-01 Catálogo
Para quéRevisa sin escribir el alta, el cambio, la activación o la baja de hasta 200 atributos y dice qué va a pasar. Si el cambio toca el tipo o la lista, pregunta a Producto si algún producto ya tiene valor. El ID nuevo se asigna al aprobar.
En esta épicaAlta, cambio, activación o baja de atributos
Quién la llamaBFF del portal
PermisoCAT-E; capturar el ID al crear exige además el permiso de capturar ID
CabecerasAuthorization, X-Request-Id, Idempotency-Key
También la usanFT-USR-02

Request

{
  "operation": "CREATE",
  "channel": "PORTAL",
  "items": [
    {
      "attributeId": null,
      "name": {
        "es": "Potencia",
        "en": "Power"
      },
      "helpText": {
        "es": "Potencia del motor en watts"
      },
      "dataType": "DECIMAL",
      "constraints": {
        "min": 0,
        "max": 5000,
        "decimals": 1,
        "unit": "W"
      },
      "multivalued": false,
      "metadata": {
        "systemOfRecord": "PIM",
        "origin": "LIVERPOOL",
        "relevantFor": [
          "TIENDA",
          "MARKETPLACE",
          "DWH"
        ],
        "variantLevel": "GENERIC"
      },
      "groups": [
        "CARACTERISTICAS"
      ]
    }
  ]
}

Response · 200

{
  "success": true,
  "data": {
    "planId": "pln-a41c09",
    "expiresAt": "2027-01-12T15:14:05Z",
    "requiresApproval": true,
    "summary": {
      "create": 1,
      "update": 0,
      "blocked": 0
    },
    "items": [
      {
        "attributeId": null,
        "idAssignedOn": "APPROVAL",
        "idPattern": "ATR-{número}",
        "action": "CREATE",
        "changes": [
          {
            "path": "dataType",
            "before": null,
            "after": "DECIMAL"
          },
          {
            "path": "constraints.max",
            "before": null,
            "after": 5000
          }
        ]
      }
    ],
    "applyUrl": "/api/v2/catalog-plans/pln-a41c09/apply"
  }
}

Errores

HTTPCódigoCuándo
403AUTHORIZATION_ERRORQuien llama no tiene CAT-E o captura un ID sin el permiso de capturar ID
409IMMUTABLE_IDCambia el código, o el tipo o la lista de un atributo que ya tiene valores en productos
409ID_ALREADY_EXISTSEl ID capturado ya es de otro objeto del catálogo
422BUSINESS_ERRORPide borrar un atributo usado por una plantilla, una regla o un producto: se ofrece desactivarlo
409WRITE_DISABLEDP360 todavía es la fuente del catálogo (antes del corte de R1)
POST /internal/product/catalog-usage · Producto cuenta cuántos productos usan una plantilla, un atr
CampoValor
APIAPI-02-113 · MS-02 Producto
Para quéProducto cuenta cuántos productos usan una plantilla, un atributo o un valor de lista, por negocio y por estado, para que el catálogo muestre el impacto de un cambio antes de aprobarlo y decida si un tipo o una lista todavía se pueden cambiar.
En esta épicaSaber si algún producto ya tiene valor antes de cambiar tipo o lista
También la usanFT-PLT-03, FT-PLT-05, FT-PLT-06, FT-PLT-09

Request

{
  "by": "ATTRIBUTE",
  "keys": [
    "COLOR_PRINCIPAL"
  ],
  "business": [
    "MER",
    "SUB",
    "MKP"
  ]
}

Response · 200

{
  "success": true,
  "data": {
    "countedAt": "2027-01-12T15:06:00Z",
    "items": [
      {
        "key": "COLOR_PRINCIPAL",
        "products": 0,
        "withValue": 0,
        "published": 0,
        "byStatus": {
          "BORRADOR": 0,
          "EN_REVISION": 0,
          "APROBADO": 0
        },
        "byBusiness": {
          "MER": 0,
          "SUB": 0,
          "MKP": 0
        }
      }
    ]
  }
}

Errores

HTTPCódigoCuándo
403AUTHORIZATION_ERRORQuien llama no tiene el permiso o no es el módulo autorizado
422VALIDATION_ERRORFalta un dato o viene con un formato inválido; el detalle dice qué campo
409IDEMPOTENCY_MISMATCHSe repite la llave de idempotencia con otro cuerpo

Las que usa y construye otra épica (6)

Su request y su response están en la página de la épica que la construye.

APIMétodo y rutaPara qué, aquíLa construye
API-01-004POST /api/v2/catalog-plans/{planId}/applyConfirmar el plan y abrir la solicitudFT-PLT-01 · Fundamentos de gobierno de plantillas
API-01-103POST /api/v2/catalog-change-requests/{changeRequestId}/decisionAprobar la solicitud del atributoFT-PLT-01 · Fundamentos de gobierno de plantillas
API-13-001GET /internal/identity/permissions?userId=Permisos efectivos de quien administra atributosFT-USR-01 · Identidad y autenticación de usuarios internos…
API-01-105GET /api/v2/attribute-outputsQué atributos viajan a cada destinoFT-PLT-04 · Grupos de atributos y mínimos de información por sistema…
API-02-055GET /internal/product/products/{id}/sap-snapshotLa foto del producto que arma los archivos de SAPFT-PRD-02 · Creación de SKU con SAP
API-01-053POST /internal/governance/bulk-load/{coleccion}Migrar los 2,996 atributos con su ID externo y su origenFT-PLT-01 · Fundamentos de gobierno de plantillas

6. Eventos

Publica

EventoCuándoQuién lo consume
catalog.governance.changed/ATTRIBUTE_CHANGEDSe aprueba el alta, el cambio, la activación o la desactivación de un atributoFT-ARQ-02, FT-PLT-04, FT-PLT-06

Consume

EventoPara quéQuién lo publica
catalog.governance.changed/ATTRIBUTE_CHANGEDMS-02 refresca el tipo, las restricciones y la regla condicional con que valida en líneaesta misma épica
catalog.governance.changed/ATTRIBUTE_CHANGEDMS-08 refresca a qué destinos viaja cada atributoesta misma épica
catalog.governance.changed/ATTRIBUTE_CHANGEDMS-05 guarda el antes y el después de cada campo del atributoesta misma épica

7. Datos

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

ColecciónDueñoQué guardaEsta épica
attributesMS-01Cada atributo: tipo, lista, restricciones, grupos e identificadores externos.escribe
id_sequencesMS-01El siguiente identificador de plantillas y catálogos.escribe
governance_receiptsMS-01El recibo de cada escritura confirmada en el catálogo (antes operation_receipts).escribe
governance_outboxMS-01Los cambios del catálogo que esperan salir como evento (antes outbox).escribe
attributesMS-01Cada atributo: tipo, lista, restricciones, grupos e identificadores externos.lee
lovsMS-01Cabecera de cada lista de valores.lee
attribute_groupsMS-01Grupos de atributos, incluidos los de permiso (quién ve y quién edita).lee

8. Historias que cubre

HistoriaPrioridadCómo la cubre
FT-PLT-02·H1 · Consultar el catálogoP1pasos 1, 2, 3; API-01-001, API-01-002, API-01-053
FT-PLT-02·H2 · Tipo y restriccionesP1pasos 4, 5, 6, 7, 8, 9; flujo «Cambiar el tipo de un atributo de lista»; API-01-003, API-02-113
FT-PLT-02·H3 · Metadatos de comportamientoP2pasos 4, 11; flujo «Lo que no es de SAP no viaja a SAP»; API-01-105, API-01-053
FT-PLT-02·H4 · Bloques y condicionalesP2flujo «Bloques de filas y atributos condicionales»; API-01-003

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-02-1. Tipos de dato: los ocho de hoy (texto, entero, decimal, verdadero o falso, fecha, fecha y hora, lista y compuesto) más texto enriquecido, moneda y referencia a otro objeto. Las restricciones (longitud, mínimo, máximo, decimales, unidad, patrón) viven en el atributo, no en tablas sueltas, y una plantilla sólo puede endurecerlas. Por qué: DEC-ARQ-12 mete lo que pide la ERF. Hoy ninguna de las 24,217 características usa las cotas del modelo y las restricciones están en la configuración por plantilla. Se apoya en DEC-ARQ-12, PD-14, DUD-01.
  • D-PLT-02-2. El código de un atributo nunca cambia. Su tipo y su lista tampoco, en cuanto un producto tiene valor; mientras nadie lo use, el plan permite cambiarlos y exige el tipo nuevo al quitar la lista. Para saberlo, MS-01 le pregunta a Producto (PEDIDA-PLT-02-1). Por qué: Concilia lo que pide la ERF (quitar la lista exige el tipo nuevo) con la inmutabilidad que protege los valores ya capturados. Se apoya en PD-16, DEC-PLT-06.
  • D-PLT-02-3. Los metadatos de comportamiento son campos del atributo: sistema dueño, origen (ERP o Liverpool, como los …VaD), relevancia por destino, único por negocio, validez por tipo de producto y si se captura por variante. Ningún adaptador guarda listas de campos en código: MS-08 y MS-10 leen la salida de MS-01 (API-01-105). Por qué: Hoy la relevancia vive en tres diccionarios y las salidas la deciden con listas propias; con un solo dueño, cambiar qué viaja a un sistema es una solicitud, no un despliegue. Se apoya en DEC-PLT-08, DEC-ARQ-09.
  • D-PLT-02-4. Atributos condicionales: la regla por omisión (mostrar, ocultar o volver obligatorio según el valor de otro atributo) se declara en el atributo; cada plantilla puede cambiarla en su configuración y la vista efectiva resuelve cuál aplica, con más de un nivel de dependencia. Por qué: Hoy la dependencia es una propiedad suelta de la configuración y sólo llega a un nivel; sin la fachada de compatibilidad (decisión 20) no hay que copiar esa limitación. Se apoya en DEC-ARQ-12, DEC-PLT-11, ADR-12.
  • D-PLT-02-5. Los bloques de N filas son el tipo compuesto, con sus campos (porcentaje, material, parte) y un máximo de filas. La composición textil aplanada en cinco atributos se convierte al migrar con la regla que valide Gobierno de Producto. Por qué: Guardar filas en vez de columnas numeradas deja capturar los materiales que haga falta y validarlos igual. Se apoya en DEC-PLT-07.
  • D-PLT-02-6. La validez por tipo de producto se modela desde ya y se llena con los seis tipos propuestos cuando se ratifiquen; mientras, todo atributo vale para todos los tipos. Las hijas de rechazo no son atributos: el motivo de rechazo viaja con el producto (MS-02). Por qué: No se bloquea el catálogo esperando una tabla que no existe, y no se migran 2,632 árboles de rechazo como si fueran atributos. Se apoya en PD-17, DUD-19, DEC-ARQ-09.

Qué falta decidir

IDQué falta
DUD-01Gobierno de Producto con Seguridad fijan las etiquetas que admite el texto enriquecido.
PD-17Gobierno de Producto ratifica la tabla de tipos de producto que usa la validez de cada atributo.
PD-03Confirmar con tres plantillas reales que la lista de atributos es la de la configuración más lo global y lo heredado.
DUD-02Revisar las specs de atributos contra la ERF 1.1 del 24-sep (sección del portal en el atributo o en la plantilla).

Fuentes

  1. [D] trazabilidad/features/FT-PLT-02-catalogo-de-atributos.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.