Actualizado el 18-oct-2026. Primera versión de la arquitectura de esta épica.
Qué responde. Cómo funciona por dentro FT-CAT-04: 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-CAT-04.json, generada con generar.py; la ficha de la épica es trazabilidad/features/FT-CAT-04-grupo-de-articulos-derivado.md.
En 30 segundos
El grupo de artículos de SAP es obligatorio para crear el SKU, pero el proveedor o seller no entiende esa clasificación y hoy los productos llegan mal clasificados. Esta épica hace que el PIM la derive de lo que el proveedor sí entiende (plantilla y tipo de producto), que valide siempre dirección, sección y grupo, y que asigne plantilla a lo que llega directo de SAP.
- Módulo dueño: MS-01 Catálogo. También participan: MS-02 Producto, MS-07 Ingesta de archivos, MS-15 IA y enriquecimiento.
- Etapa 5 · SKU en SAP. Recibe «PE-3 · Plantilla asignada», «PE-C · Catálogo vigente» y entrega «PE-6 · SKU asignado».
- APIs: construye 2 y usa 9 que construyen otras épicas.
- Eventos: publica 5 y consume 2.
1. Dónde encaja
Recibe
| De | Qué |
|---|---|
| PE-3 · Plantilla asignada | El producto con plantilla, tipo de producto y negocio, que es lo que el proveedor o seller sí entiende. |
| PE-C · Catálogo vigente | Las reglas de clasificación (grupo más tipo de producto a plantilla, plantilla a grupos permitidos) y las jerarquías de grupos de ECC y S/4HANA. |
| FT-INT-04 · Catálogos maestros, precios y costos desde SAP/S4H | Los catálogos y jerarquías de grupos de artículos que manda SAP. |
| FT-PLT-05 · Taxonomía de plantillas por familia, metadatos de… | Las plantillas por familia, base de la clasificación que entiende el seller. |
| FT-INT-03 · Entrada de SKUs creados en SAP | Cada SKU que llega de SAP en el 122, con su grupo de artículos y su tipo de producto. |
| FT-REF-01 · Datos de referencia administrables | La tabla de Gobierno de Producto para derivar el grupo de artículos y los catálogos de grupos de ECC y S/4HANA. |
| FT-IA-04 · Integración de los modelos de IA existentes | El grupo de artículos, la sección y la dirección elegidos por la IA con su confianza, o «no alcanza» para abrir Gobierno de Datos. |
Entrega
| A | Qué |
|---|---|
| FT-PRD-02 · Creación de SKU con SAP | Grupo de artículos de ECC y S/4HANA, sección y dirección validados en el producto, obligatorios para pedir el SKU. |
| PE-6 · SKU asignado | Lo que llega de SAP ya con plantilla asignada por regla (marcada automática) o en «Sin categorizar» con su tarea, y con sus hojas de grupo creadas. |
| FT-IA-04 · Integración de los modelos de IA existentes | Los casos en que la tabla de Catálogo da varios grupos posibles (o ninguno) para un producto de Marketplace. |
Tareas que abre o cierra: Gobierno de Datos.
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 | Seller | Entrada Única · Vendor Center | Elige plantilla y tipo de producto con nombres comunes | — |
| 2 | Entrada Única · Vendor Center | MS-02 Producto (por el BFF) | Pide el plan del paso de datos base | API-02-006 |
| 3 | MS-02 Producto | MS-01 Catálogo | Pide derivar grupo, sección y dirección | API-01-204 |
| 4 | MS-01 Catálogo | Base pim | Busca en la tabla de plantilla a grupo | — |
| 5 | MS-02 Producto | MS-15 IA y enriquecimiento | Si hay varios candidatos, pide elegir con confianza | API-15-002 |
| 6 | MS-15 IA y enriquecimiento | Modelos de IA | Consulta el modelo de grupo de artículos | — |
| 7 | Entrada Única · Vendor Center | MS-02 Producto (por el BFF) | Confirma el paso sin ver códigos SAP | API-02-057 |
| 8 | MS-02 Producto | Base pim | Guarda la clasificación con su origen y confianza | — |
| 9 | MS-02 Producto | Eventos | Avisa la clasificación nueva | catalog.product.changed/CLASSIFICATION_CHANGED |
| 10 | MS-02 Producto | MS-01 Catálogo | Revalida grupo contra sección antes del SKU | API-01-204 |
| 11 | MS-02 Producto | Eventos | Pide el artículo a SAP con la clasificación | catalog.product.publication/SAP_CREATION_REQUESTED |
3.1 Lo que llega de SAP sin pasar por el portal
3.2 Gobierno de Producto asigna plantilla a lo «Sin categorizar»
3.3 La IA no alcanza la confianza
4. Si algo sale mal
- La tabla da varios grupos para la plantilla en Mercaderías o Suburbia. No se usa IA, como hoy: el proveedor elige entre los candidatos, que ve con su nombre y sin códigos, y Compras confirma o corrige el grupo en su visto bueno.
- El grupo no pertenece a la sección o a la dirección del producto. El plan de MS-02 responde 422 con el campo y no se guarda; si viene de SAP, el producto queda con una tarea de Gobierno de Datos.
- Un SKU llega de SAP sin regla de plantilla. Queda en «Sin categorizar» sólo con los atributos de raíz y con una tarea de Gobierno de Datos con motivo «Sin plantilla» en la cola de Gobierno de Producto; no puede terminar su enriquecimiento.
- MS-15 no responde o la confianza es baja. La clasificación queda pendiente y se abre Gobierno de Datos; sin grupo o sin sección el producto no pasa a Creación de SKU.
- Al pedir el SKU falta el grupo o la sección. El plan de la acción de visto bueno responde 422 y la propuesta no pasa a Creación de SKU hasta corregirlo.
5. APIs
Las que construye esta épica (2)
POST /api/v2/rules/derive-item-group · Derivar la clasificación SAP
| Campo | Valor |
|---|---|
| API | API-01-204 · MS-01 Catálogo |
| Para qué | A partir de lo que el proveedor o seller entiende (plantilla y tipo de producto) deriva el grupo de artículos de ECC y S/4HANA, la sección y la dirección con la tabla de Gobierno de Producto, sin mostrar códigos SAP. Si el producto ya trae un grupo, revisa que pertenezca a su sección y dirección. Si la tabla da varios, responde AMBIGUOUS con los candidatos. |
| En esta épica | Derivar grupo, sección y dirección de la plantilla y el tipo de producto, y validar un grupo dado |
| Quién la llama | MS-02 Producto, BFF del portal |
| Permiso | MS-02 con su cuenta de servicio; Gobierno de Producto para probar la tabla |
| Cabeceras | Authorization, X-Request-Id |
| También la usan | FT-IA-04 |
Request
{
"business": "MKP",
"templateId": "EU4-0412",
"productType": "CAMISA",
"supplierId": "SELLER-0001",
"itemGroup": null
}
Response · 200
{
"success": true,
"data": {
"result": "UNIQUE",
"classification": {
"itemGroup": {
"ecc": "424104421",
"s4h": "424104421"
},
"section": "424",
"direction": "9"
},
"labels": {
"template": "Camisas",
"productType": "Camisa",
"itemGroup": "Camisas de caballero"
},
"source": "TABLE",
"rule": {
"ruleId": "rul-000113",
"type": "ALLOWED_ITEM_GROUPS_BY_TEMPLATE",
"version": 6
},
"candidates": []
}
}
Errores
| HTTP | Código | Cuándo |
|---|---|---|
| 404 | NOT_FOUND | La plantilla no existe |
| 400 | VALIDATION_ERROR | El grupo de artículos no existe en las jerarquías de SAP |
POST /api/v2/rules/classify · Clasificar lo que llega de SAP
| Campo | Valor |
|---|---|
| API | API-01-018 · MS-01 Catálogo |
| Para qué | Para cada SKU que llega de SAP (lotes de hasta 100) dice qué plantilla le toca: primero la regla de grupo de artículos más tipo de producto, luego la de sólo grupo; sin regla responde «Sin categorizar». Si la combinación no tiene hoja en las jerarquías ECC o S/4HANA, la crea en la misma llamada, y marca la asignación como automática. |
| En esta épica | Plantilla para lo que llega de SAP, con hojas de grupo que se crean si faltan |
| Quién la llama | MS-02 Producto |
| Permiso | Sólo MS-02 (cuenta de servicio) |
| Cabeceras | Authorization, X-Request-Id, Idempotency-Key |
| Escribe en | taxonomy_nodes, governance_outbox |
| Publica | catalog.governance.changed/TAXONOMY_NODE_CHANGED |
| También la usan | FT-INT-03, FT-PLT-05 |
Request
{
"fileId": "sap-122-20261018-03",
"items": [
{
"sku": "1000004812",
"business": "MER",
"supplierId": "PROV-0001",
"itemGroup": {
"ecc": "424104421",
"s4h": "424104421"
},
"productType": "CAMISA"
},
{
"sku": "1000004813",
"business": "MER",
"supplierId": "PROV-0001",
"itemGroup": {
"ecc": "531220110",
"s4h": "531220110"
},
"productType": "BOTA"
}
]
}
Response · 200
{
"success": true,
"data": {
"items": [
{
"sku": "1000004812",
"result": "CLASSIFIED",
"templateId": "EU4-0412",
"assignment": "AUTOMATIC",
"rule": {
"ruleId": "rul-018822",
"type": "CLASSIFY_ITEM_GROUP_PRODUCT_TO_TEMPLATE",
"version": 2
},
"section": "424",
"direction": "9",
"leaves": {
"ecc": {
"nodeId": "ECC-424104421-CAMISA",
"created": false
},
"s4h": {
"nodeId": "S4H-424104421-CAMISA",
"created": true
}
}
},
{
"sku": "1000004813",
"result": "NO_RULE",
"templateId": "SIN_CATEGORIZAR",
"assignment": "UNCATEGORIZED",
"rule": null,
"section": "531",
"direction": "5",
"leaves": {
"ecc": {
"nodeId": "ECC-531220110-BOTA",
"created": false
},
"s4h": {
"nodeId": "S4H-531220110-BOTA",
"created": false
}
}
}
]
}
}
Errores
| HTTP | Código | Cuándo |
|---|---|---|
| 400 | VALIDATION_ERROR | El lote trae más de 100 SKU o un grupo de artículos que no existe en las jerarquías que manda SAP |
| 409 | IDEMPOTENCY_MISMATCH | Se repite la llave de idempotencia con otro lote |
Las que usa y construye otra épica (9)
Su request y su response están en la página de la épica que la construye.
| API | Método y ruta | Para qué, aquí | La construye |
|---|---|---|---|
| API-01-017 | POST /api/v2/rules/plans | Crear o cambiar las reglas de la tabla de clasificación | FT-PLT-07 · Reglas de atributos |
| API-01-004 | POST /api/v2/catalog-plans/{planId}/apply | Confirmar la regla de clasificación | FT-PLT-01 · Fundamentos de gobierno de plantillas |
| API-02-006 | POST /api/v2/products/guided/plans | Plan del paso de datos base de la captura guiada | FT-PRD-07 · Captura guiada por pasos con los mínimos primero |
| API-02-057 | POST /api/v2/product-plans/{planId}/apply | Confirmar los planes de producto | FT-FLU-01 · Motor de estados configurable con dos carreteras y reglas… |
| API-02-049 | POST /internal/product/sap/122 | Lote del 122 que entrega MS-07 | FT-PRD-02 · Creación de SKU con SAP |
| API-02-001 | POST /api/v2/products/search | Buscar productos «Sin categorizar» | FT-PRD-01 · Modelo canónico de producto |
| API-02-016 | POST /api/v2/products/classifications/plans | Asignar plantilla o corregir la clasificación | FT-CAT-03 · Categorización de productos |
| API-02-032 | GET /api/v2/tasks | Bandeja de tareas de Gobierno de Datos | FT-PRD-06 · Bandeja de pendientes y depuración de borradores… |
| API-15-002 | POST /api/v2/ai/category-suggestions | Predicción de grupo, sección y dirección con su confianza | FT-IA-04 · Integración de los modelos de IA existentes |
6. Eventos
Publica
| Evento | Cuándo | Quién lo consume |
|---|---|---|
catalog.governance.changed/TAXONOMY_NODE_CHANGED | Se crea una hoja de grupo más tipo de producto en ECC o S/4HANA | FT-IA-02, FT-PLT-05, FT-PLT-06 |
catalog.governance.changed/RULE_CHANGED | Gobierno de Producto agrega o cambia una regla de la tabla de clasificación | FT-ACT-01, FT-CAT-03, FT-CAT-05, FT-PLT-07, FT-RAC-01, FT-REF-02 |
catalog.product.changed/CLASSIFICATION_CHANGED | MS-02 guarda la clasificación derivada, asignada por regla o corregida | FT-ACT-05, FT-ACT-06, FT-CAT-05, FT-IA-02, FT-IA-04 |
catalog.product.changed/TASK_CHANGED | Se abre Gobierno de Datos por baja confianza o por «Sin plantilla» | FT-ACT-05, FT-ACT-06, FT-ARQ-02, FT-CAT-06, FT-FLU-01, FT-IA-06, FT-PRD-02, FT-PRD-05, FT-PRD-06, FT-PRD-07, FT-PRD-08, FT-RAC-02, FT-RAC-03, FT-RAC-04, FT-RAC-05, FT-RAC-06 |
catalog.product.publication/SAP_CREATION_REQUESTED | La propuesta con su clasificación completa pasa a Creación de SKU | FT-PRD-02 |
Consume
| Evento | Para qué | Quién lo publica |
|---|---|---|
catalog.egress.files/OBJECT_FINALIZE | MS-07 lee el 122 que dejó SAP | D-ARCHIVOS |
catalog.governance.changed/TAXONOMY_NODE_CHANGED | MS-02 refresca su caché de jerarquías de grupo y MS-05 registra la hoja nueva | esta misma épica |
7. Datos
Cada colección tiene un solo dueño, el único que escribe en ella.
| Colección | Dueño | Qué guarda | Esta épica |
|---|---|---|---|
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. | escribe |
taxonomy_nodes | MS-01 | Plantillas y nodos de grupo de artículo, con la configuración de atributos de cada plantilla. | escribe |
governance_receipts | MS-01 | El recibo de cada escritura confirmada en el catálogo (antes operation_receipts). | escribe |
governance_outbox | MS-01 | Los cambios del catálogo que esperan salir como evento (antes outbox). | escribe |
products | MS-02 | La familia del producto con sus variantes, valores, imágenes (URL), clasificaciones, estado, tareas abiertas y rechazos. | escribe |
tasks | MS-02 | Todo el trabajo asignado: visto bueno, corrección, Gobierno de Datos, foto, secciones, QA, revisión del cambio y repoblamiento. | escribe |
taxonomies | MS-01 | Los árboles: plantillas, grupos de artículo y sitios web. | lee |
taxonomy_nodes | MS-01 | Plantillas y nodos de grupo de artículo, con la configuración de atributos de cada plantilla. | lee |
8. Historias que cubre
| Historia | Prioridad | Cómo la cubre |
|---|---|---|
| FT-CAT-04·H1 · Describir mi producto con términos que entiendo y que el PIM calcule el GA | P1 | pasos 1, 2, 3, 4, 7, 8; API-01-204 |
| FT-CAT-04·H2 · Que todo producto quede en la dirección, sección y GA correctos, siempre | P1 | pasos 10, 11; API-01-204 |
| FT-CAT-04·H3 · Que lo que llega de SAP se clasifique en plantilla con la tabla GA + producto | P1 | flujo «Lo que llega de SAP sin pasar por el portal»; API-01-018 |
| FT-CAT-04·H4 · Recibir las propuestas con baja confianza de IA en el GA | P2 | flujo «La IA no alcanza la confianza»; API-15-002 |
| FT-CAT-04·H5 · Confirmar la clasificación antes de publicar, como el comprador en Mercaderías | P3 | Fuera: PEN-14 sigue abierto y los sellers son Fase 2 salvo PD-02: el seller ve la clasificación derivada con nombres en el resumen de su captura, pero no hay un estado de confirmación antes de publicar. |
| FT-CAT-04·H6 · Asignar plantilla a productos sin categorizar | P1 | flujo «Gobierno de Producto asigna plantilla a lo «Sin categorizar»»; API-02-001, API-02-016 |
9. Decisiones de esta épica
Las tomó el TL como arquitecto; quedan como [Propuesta] hasta que el equipo de la épica las revise.
- D-CAT-04-1. La clasificación SAP se deriva, no se captura: MS-01 traduce plantilla y tipo de producto a grupo de artículos de ECC y S/4HANA, sección y dirección con la tabla de Gobierno de Producto (reglas ALLOWED_ITEM_GROUPS_BY_TEMPLATE); el proveedor y el seller ven nombres, nunca códigos. MS-02 la guarda en el producto con su origen. Por qué: El grupo es el dato que más se clasifica mal y del que dependen el SKU, la lista negra, el envase y las comisiones; derivarlo quita la decisión a quien no la entiende. Se apoya en RF-CAT-01, PEN-32, DEC-PLT-14.
- D-CAT-04-2. Tabla primero, IA después: si la tabla da un solo grupo, ése es; si da varios, en Marketplace decide la IA de MS-15 con su umbral (hoy 0.999517) y, abajo del umbral o sin grupo o sección, se abre Gobierno de Datos. En Mercaderías y Suburbia no se usa IA: Compras confirma el grupo en su visto bueno. Por qué: Cierra PEN-32 con lo que ya funciona: la tabla es explicable y la IA sólo decide lo ambiguo, como hoy sólo en Marketplace. Se apoya en PEN-32, DUD-35, PD-02, DEC-ARQ-05.
- D-CAT-04-3. Para lo que llega de SAP manda la regla más específica: grupo más tipo de producto y, si no hay, sólo grupo. Las dos tablas de hoy se migran como reglas explícitas; sin ninguna, el producto queda en «Sin categorizar». Por qué: Resuelve DUD-23 sin escoger una de las dos vías: la más específica gana y ninguna asignación automática de hoy se pierde. Se apoya en DUD-23, DEC-PLT-14.
- D-CAT-04-4. La clasificación de lo que llega de SAP crea, en la misma llamada (API-01-018), la hoja de grupo más producto que falte en ECC o S/4HANA, sin repetirla si llega dos veces. Las jerarquías de grupo siguen siendo de sólo lectura para las personas. Por qué: Reproduce el cambio de julio de 2026 sin que MS-02 escriba en datos de Catálogo y sin una segunda llamada. Se apoya en DEC-PLT-14, ADR-12.
- D-CAT-04-5. Grupo y sección son candado del SKU: MS-02 los revalida con MS-01 al cambiar plantilla, tipo de producto o grupo, y otra vez antes de pasar a Creación de SKU; si faltan o no cuadran con la jerarquía de SAP, la acción se bloquea. Por qué: Concreta la regla «de cajón»: se valida contra las jerarquías que manda SAP, al guardar y al pedir el SKU, que es donde un error cuesta más. Se apoya en RN-CAT-05, FT-RAC-01.
- D-CAT-04-6. Lo «Sin categorizar» se trabaja como tarea de Gobierno de Datos con motivo «Sin plantilla», en la cola de Gobierno de Producto; al asignar la plantilla, la pantalla ofrece crear la regla para que el siguiente entre solo. Por qué: Usa una tarea que ya existe en el motor y convierte cada caso resuelto a mano en una regla. Se apoya en DEC-PLT-14, PD-29.
Qué falta decidir
| ID | Qué falta |
|---|---|
| PD-02 | Si los sellers entran en la primera salida: define si la clasificación que entiende el seller entra ya o en la Fase 2. |
| DUD-23 | Confirmar qué regla aplica hoy el 122, para probar la paridad de la precedencia. |
| DUD-35 | Contrato del modelo de grupo de artículos detrás de MS-15. |
| PD-17 | Firmar la tabla oficial de tipos de producto, que es parte de la llave de clasificación. |
También siguen abiertos: PEN-32, Ratificar tabla primero e IA sólo para lo ambiguo (D-CAT-04-2); PEN-14, Decidir si el seller confirma la clasificación antes de publicar.
Fuentes
- [D]
trazabilidad/features/FT-CAT-04-grupo-de-articulos-derivado.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.