Actualizado el 18-oct-2026. Primera versión de la arquitectura de esta épica.
Qué responde. Cómo funciona por dentro FT-REF-01: 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-REF-01.json, generada con generar.py; la ficha de la épica es trazabilidad/features/FT-REF-01-datos-de-referencia-administrables.md.
En 30 segundos
Las reglas de alta, el archivo a SAP y la publicación consultan tablas que no son productos ni plantillas: tallas normalizadas, impuestos y márgenes, excepciones de publicación, proveedores exentos de EAN, la secuencia de variantes. Hoy se cargan con programas de un solo uso y se editan a mano. Esta épica las vuelve diccionarios administrables, cada uno con su llave, su área dueña y su bitácora, cargados tal cual desde P360, y deja los catálogos de SAP como copia de consulta que sólo escribe SAP.
- Módulo dueño: MS-01 Catálogo. También participan: MS-13 Identidad y acceso, MS-02 Producto, MS-03 Migración y convivencia, MS-05 Auditoría, MS-06 Evaluación, MS-07 Ingesta de archivos.
- Etapa C · Configura el catálogo. Recibe «PE-T · Usuario con permisos y bitácora» y entrega «PE-C · Catálogo vigente».
- APIs: construye 8 y usa 11 que construyen otras épicas.
- Eventos: publica 2 y consume 5.
1. Dónde encaja
Recibe
| De | Qué |
|---|---|
| PE-T · Usuario con permisos y bitácora | El analista del área dueña de cada tabla ya identificado, con sus roles del directorio de MS-13. |
| FT-INT-04 · Catálogos maestros, precios y costos desde SAP/S4H | Los catálogos maestros de SAP (marcas, grupos de artículo, impuestos y proveedores, de ECC y de S4H) ya leídos del archivo por MS-07. |
| FT-MIG-02 · Migración de plantillas, atributos y listas de valores | Los diccionarios que se conservan, leídos de la base de P360 productivo y entregados por lote con sus llaves de P360. |
Entrega
| A | Qué |
|---|---|
| PE-C · Catálogo vigente | Los diccionarios vigentes con su llave, sus valores y sólo las entradas activas para las reglas; cada cambio sale en REFERENCE_TABLE_CHANGED. |
| FT-PLT-07 · Reglas de atributos | Las tablas que leen los calculados y las reglas: talla normalizada, margen por indicador de impuesto, impuesto por negocio y envase. |
| FT-CAT-04 · Clasificación SAP derivada | La tabla de Gobierno de Producto para derivar el grupo de artículo y los catálogos de grupos de ECC y S4H. |
| FT-CAT-01 · Administración del árbol de categorías web | El catálogo único de sitios (los 14 y el reservado UNLINKED) con su código de departamento y su ID de catálogo, que administra Category (API-01-046 a API-01-049). |
| FT-CAT-05 · Sitios, enrutamiento y visibilidad por negocio | La lista oficial de sitios con sus códigos y su ID de catálogo (API-01-046), que usa la regla de sitios por negocio. |
| FT-PRD-03 · EAN | La tabla de proveedores y sellers exentos de EAN, de la que sólo responden las entradas activas. |
| FT-REF-02 · Blacklist de Marketplace por marca, negocio y grupo de… | Los catálogos de marcas y de grupos de artículo a los que apuntan las reglas de la lista negra. |
| FT-REF-03 · Servicio de matching | Los catálogos de marcas, grupos y proveedores que usa la búsqueda de coincidencias. |
| FT-INT-03 · Entrada de SKUs creados en SAP | La tabla de exclusiones de SKU de SAP por grupo de artículo y negocio, que MS-07 lee en memoria. |
| FT-FLU-07 · Excepciones de catalogación y preventas con publicación… | Las seis tablas de excepciones por negocio (sección y negocio, sección y marca, sección y proveedor, grupo de artículo, SKU y anuladas), con sus llaves de P360. |
| FT-INT-04 · Catálogos maestros, precios y costos desde SAP/S4H | Las tablas de referencia de proveedores, grupos de artículo e impuestos, con SAP como dueño y la copia de consulta en MS-01. |
2. Diagrama de contexto
Quién participa y cómo se conecta. Las pantallas llegan por el BFF del portal, que valida el token y compone; cada módulo vuelve a validar el token y decide sus permisos con los roles de MS-13.
🟩 Verde: nuevo, se construye · 🟦 Azul: ya existe y se queda, se reutiliza su código · 🟧 Naranja: temporal o se retira (se apaga en R3) · ⬜ Gris: sistema externo · ★ módulo dueño
3. Diagrama de flujo
El camino principal, paso por paso. Cuando una pantalla llama a un módulo se ven dos flechas: la pantalla al BFF y el BFF al módulo. Los eventos salen del outbox del módulo después de guardar; quien los consume ignora los repetidos.
Los pasos en texto
| Paso | De | A | Qué hace | API o evento |
|---|---|---|---|---|
| 1 | Administración del catálogo | Entrada Única · Vendor Center | Abre el diccionario de tallas normalizadas | — |
| 2 | Entrada Única · Vendor Center | MS-01 Catálogo (por el BFF) | Pide la definición con su llave compuesta | API-01-011 |
| 3 | Entrada Única · Vendor Center | MS-01 Catálogo (por el BFF) | Busca las entradas vigentes de una marca | API-01-012 |
| 4 | Administración del catálogo | Entrada Única · Vendor Center | Agrega una talla con la llave marca y talla | — |
| 5 | Entrada Única · Vendor Center | MS-01 Catálogo (por el BFF) | Pide el plan de la entrada nueva | API-01-013 |
| 6 | MS-01 Catálogo | MS-13 Identidad y acceso | Revisa que su área sea dueña de la tabla | API-13-001 |
| 7 | Entrada Única · Vendor Center | MS-01 Catálogo (por el BFF) | Confirma el plan; esta tabla no pide aprobación | API-01-004 |
| 8 | MS-01 Catálogo | Base pim | Guarda la entrada con quién y cuándo | — |
| 9 | MS-01 Catálogo | Eventos | Avisa el cambio del diccionario | catalog.governance.changed/REFERENCE_TABLE_CHANGED |
| 10 | Eventos | MS-05 Auditoría | Entrega el cambio para la bitácora | catalog.governance.changed/REFERENCE_TABLE_CHANGED |
| 11 | Eventos | MS-06 Evaluación | Entrega el cambio para sus reglas de evaluación | catalog.governance.changed/REFERENCE_TABLE_CHANGED |
| 12 | Eventos | MS-02 Producto | Entrega el cambio: sus reglas usan ya el valor vigente | catalog.governance.changed/REFERENCE_TABLE_CHANGED |
3.1 Catálogos de SAP y sitios
3.2 Carga tal cual desde P360
3.3 Lo que consulta la captura
4. Si algo sale mal
- La llave no sigue el esquema declarado de la tabla. El plan responde 422 VALIDATION_ERROR con la parte de la llave que falta o sobra; no se guarda nada.
- Alguien intenta editar en el PIM un catálogo de SAP. El plan responde 422 BUSINESS_ERROR: esas listas sólo las escribe la ingesta de MS-07; el cambio se pide a SAP por el área de SAP.
- Llega otra vez el mismo archivo de SAP. La carga es idempotente por archivo y por registro y no duplica nada; si trae otro contenido, responde 409 IDEMPOTENCY_MISMATCH y MS-07 lo deja para revisión.
- La migración trae un diccionario dudoso, vacío o de operación interna. No entra (diccionario 17, Dos, vacíos y de operación) o entra inactivo; ninguna regla lo lee hasta que Gobierno de Producto lo active, y queda en la lista de DUD-34.
- Un módulo no alcanzó a refrescar su copia en memoria. Cada aviso lleva versión: el consumidor aplica en orden y descarta lo viejo; al arrancar vuelve a leer las tablas completas. Ninguna regla lee la base de P360 ni archivos en disco.
5. APIs
Las que construye esta épica (8)
GET /api/v2/reference-tables · Diccionarios
| Campo | Valor |
|---|---|
| API | API-01-011 · MS-01 Catálogo |
| Para qué | Lista los diccionarios que se conservan, cada uno con su llave compuesta declarada, sus columnas, el área dueña, si sus cambios piden aprobación, quién lo consume y cuántas entradas vivas tiene. |
| En esta épica | Ver los diccionarios con su llave, su área dueña y quién los consume |
| Quién la llama | BFF del portal, MS-02 Producto, MS-03 Migración y convivencia |
| Permiso | CAT-L; los módulos, con su cuenta de servicio |
| Cabeceras | Authorization, X-Request-Id |
| Parámetros | q = talla, ownerArea = GOBIERNO-PRODUCTO, status = ACTIVE |
Request
null
Response · 200
{
"success": true,
"data": {
"items": [
{
"table": "TALLA_NORMALIZADA",
"name": {
"es": "Talla normalizada por marca"
},
"keySchema": [
"marca",
"talla"
],
"keySeparator": "<::>",
"valueSchema": [
{
"name": "tallaNormalizada",
"type": "STRING"
}
],
"ownerArea": "GOBIERNO-PRODUCTO",
"changesRequireApproval": false,
"consumers": [
"MS-02"
],
"entries": 30,
"activeEntries": 30,
"status": "ACTIVE",
"version": 4
}
],
"page": 1,
"size": 50,
"total": 1
}
}
Errores
| HTTP | Código | Cuándo |
|---|---|---|
| 400 | VALIDATION_ERROR | Un filtro trae un valor que no existe |
GET /api/v2/reference-tables/{t}/entries · Entradas de un diccionario
| Campo | Valor |
|---|---|
| API | API-01-012 · MS-01 Catálogo |
| Para qué | Devuelve las entradas de un diccionario por llave completa o parcial. Por omisión sólo las activas, que son las únicas que deben usar las reglas; MS-02, MS-06, MS-07 y MS-08 las cargan en memoria y las refrescan con el aviso de cambio. |
| En esta épica | Leer las entradas vigentes de un diccionario |
| Quién la llama | BFF del portal, MS-02 Producto, MS-03 Migración y convivencia, MS-06 Evaluación, MS-07 Ingesta de archivos, MS-08 Adaptadores de salida |
| Permiso | CAT-L; los módulos, con su cuenta de servicio |
| Cabeceras | Authorization, X-Request-Id |
| Parámetros | t = TALLA_NORMALIZADA, key = MARCA01<::>, active = True, page = 1, size = 100 |
| También la usan | FT-ACT-05, FT-INT-03, FT-PLT-05, FT-PLT-10, FT-PRD-03 |
Request
null
Response · 200
{
"success": true,
"data": {
"items": [
{
"key": "MARCA01<::>CH",
"keyParts": {
"marca": "MARCA01",
"talla": "CH"
},
"values": {
"tallaNormalizada": "S"
},
"active": true,
"version": 2,
"updatedAt": "2027-01-10T14:00:00Z",
"updatedBy": {
"area": "GOBIERNO-PRODUCTO"
}
}
],
"page": 1,
"size": 100,
"total": 1
}
}
Errores
| HTTP | Código | Cuándo |
|---|---|---|
| 404 | NOT_FOUND | El diccionario no existe |
POST /api/v2/reference-tables/{t}/entries/plans · Plan de cambio de entradas
| Campo | Valor |
|---|---|
| API | API-01-013 · MS-01 Catálogo |
| Para qué | Revisa sin escribir altas, cambios y bajas lógicas de entradas: la llave debe seguir el esquema de la tabla y sólo el área dueña puede cambiarla. Dice si el cambio se aplica al confirmar o si la tabla pide aprobación. |
| En esta épica | Alta, cambio y baja lógica de entradas |
| Quién la llama | BFF del portal |
| Permiso | CAT-E del área dueña del diccionario |
| Cabeceras | Authorization, X-Request-Id, Idempotency-Key |
| Parámetros | t = TALLA_NORMALIZADA |
| También la usan | FT-INT-03 |
Request
{
"operation": "CREATE",
"items": [
{
"key": "MARCA01<::>XCH",
"values": {
"tallaNormalizada": "XS"
},
"active": true
}
]
}
Response · 200
{
"success": true,
"data": {
"planId": "pln-0c8a5e",
"expiresAt": "2027-01-12T17:10:00Z",
"requiresApproval": false,
"summary": {
"create": 1,
"update": 0,
"deactivate": 0
},
"items": [
{
"key": "MARCA01<::>XCH",
"action": "CREATE"
}
],
"applyUrl": "/api/v2/catalog-plans/pln-0c8a5e/apply"
}
}
Errores
| HTTP | Código | Cuándo |
|---|---|---|
| 422 | VALIDATION_ERROR | La llave no sigue el esquema declarado o falta una columna obligatoria |
| 409 | ID_ALREADY_EXISTS | La llave ya existe: se pide como cambio, no como alta |
| 403 | AUTHORIZATION_ERROR | El área de quien llama no es dueña de la tabla |
POST /internal/governance/sap/suppliers · Proveedores que manda SAP
| Campo | Valor |
|---|---|
| API | API-01-052 · MS-01 Catálogo |
| Para qué | MS-07 entrega, ya leído del archivo, un lote de proveedores de SAP (código, nombre, tipo y activo) que se guardan en la lista de proveedores, con dueño SAP. Sus grupos de artículo, marcas y negocios no vienen de SAP: los mantiene Gobierno de Producto como reglas. |
| En esta épica | Recibir los proveedores que manda SAP |
| Quién la llama | MS-07 Ingesta de archivos |
| Permiso | Sólo MS-07 (cuenta de servicio) |
| Cabeceras | Authorization, X-Request-Id, Idempotency-Key |
| Escribe en | lov_values, governance_receipts, governance_outbox |
| Publica | catalog.governance.changed/LOV_VALUE_CHANGED |
| También la usan | FT-INT-04 |
Request
{
"fileId": "prov-ecc-20270112-01",
"system": "ECC",
"records": [
{
"recordNo": 1,
"supplierId": "PROV-0001",
"name": "Proveedor uno",
"supplierType": "NACIONAL",
"active": true
}
]
}
Response · 200
{
"success": true,
"data": {
"fileId": "prov-ecc-20270112-01",
"applied": 1,
"rejected": 0,
"items": [
{
"recordNo": 1,
"supplierId": "PROV-0001",
"result": "UPDATED"
}
]
}
}
Errores
| HTTP | Código | Cuándo |
|---|---|---|
| 409 | IDEMPOTENCY_MISMATCH | El mismo archivo llega otra vez con contenido distinto |
| 422 | VALIDATION_ERROR | Un registro llega sin código o con un tipo de proveedor desconocido |
GET /api/v2/brands · Los sitios
| Campo | Valor |
|---|---|
| API | API-01-046 · MS-01 Catálogo |
| Para qué | Lista los 14 sitios (banners) más el reservado UNLINKED, con su código de departamento de P360 y el ID de catálogo que reconoce la tienda. Los sitios no se borran. |
| En esta épica | La lista oficial de sitios con su código de departamento y su ID de catálogo |
| Quién la llama | BFF del portal, MS-02 Producto, MS-04 Reportes |
| Permiso | ENT-L |
| Cabeceras | Authorization, X-Request-Id |
| Parámetros | status = ACTIVE |
| También la usan | FT-CAT-01, FT-CAT-05 |
Request
null
Response · 200
{
"success": true,
"data": {
"items": [
{
"code": "LIVERPOOL",
"departmentCode": "NA",
"name": "Liverpool",
"slug": "liverpool",
"catalogId": "ICatalog1000",
"status": "ACTIVE",
"reserved": false,
"version": 2
},
{
"code": "SUBURBIA",
"departmentCode": "SB",
"name": "Suburbia",
"slug": "suburbia",
"catalogId": "catalogSB",
"status": "ACTIVE",
"reserved": false,
"version": 1
},
{
"code": "UNLINKED",
"departmentCode": null,
"name": "Categorías desligadas",
"slug": "unlinked",
"catalogId": null,
"status": "ACTIVE",
"reserved": true,
"version": 1
}
],
"page": 1,
"size": 50,
"total": 15
}
}
Errores
| HTTP | Código | Cuándo |
|---|---|---|
| 403 | AUTHORIZATION_ERROR | Quien llama no tiene ENT-L |
POST /api/v2/brands · Dar de alta un sitio
| Campo | Valor |
|---|---|
| API | API-01-047 · MS-01 Catálogo |
| Para qué | Da de alta un sitio nuevo con su código de departamento y su ID de catálogo, para que sus categorías puedan viajar a la tienda. |
| En esta épica | Category da de alta un sitio |
| Quién la llama | BFF del portal |
| Permiso | CAT-E |
| Cabeceras | Authorization, X-Request-Id, Idempotency-Key |
| Escribe en | brands, governance_outbox |
| Publica | catalog.governance.changed/REFERENCE_TABLE_CHANGED |
Request
{
"code": "SITIO15",
"departmentCode": "S15",
"name": "Sitio de ejemplo",
"slug": "sitio-ejemplo",
"catalogId": "catalogS15"
}
Response · 201
{
"success": true,
"data": {
"code": "SITIO15",
"status": "ACTIVE",
"version": 1
}
}
Errores
| HTTP | Código | Cuándo |
|---|---|---|
| 409 | ID_ALREADY_EXISTS | Ya existe un sitio con ese código, departamento o ID de catálogo |
| 400 | VALIDATION_ERROR | Falta el código, el nombre o el ID de catálogo |
GET /api/v2/brands/{id} · Ver un sitio
| Campo | Valor |
|---|---|
| API | API-01-048 · MS-01 Catálogo |
| Para qué | Devuelve un sitio con su código de departamento, su ID de catálogo y su versión. |
| En esta épica | Ver un sitio con su versión |
| Quién la llama | BFF del portal, MS-02 Producto |
| Permiso | ENT-L |
| Cabeceras | Authorization, X-Request-Id |
| Parámetros | id = LIVERPOOL |
Request
null
Response · 200
{
"success": true,
"data": {
"code": "LIVERPOOL",
"departmentCode": "NA",
"name": "Liverpool",
"slug": "liverpool",
"catalogId": "ICatalog1000",
"status": "ACTIVE",
"reserved": false,
"version": 2
}
}
Errores
| HTTP | Código | Cuándo |
|---|---|---|
| 404 | NOT_FOUND | El sitio no existe |
PUT /api/v2/brands/{id} · Cambiar un sitio
| Campo | Valor |
|---|---|
| API | API-01-049 · MS-01 Catálogo |
| Para qué | Cambia el nombre, el slug o el ID de catálogo de un sitio, con su versión. No hay baja: un sitio que deja de usarse se marca inactivo. |
| En esta épica | Category cambia un sitio o lo marca inactivo; nunca se borra |
| Quién la llama | BFF del portal |
| Permiso | CAT-E |
| Cabeceras | Authorization, X-Request-Id, Idempotency-Key, If-Match |
| Parámetros | id = SITIO15 |
| Escribe en | brands, governance_outbox |
| Publica | catalog.governance.changed/REFERENCE_TABLE_CHANGED |
Request
{
"name": "Sitio de ejemplo 2",
"catalogId": "catalogS15",
"status": "INACTIVE"
}
Response · 200
{
"success": true,
"data": {
"code": "SITIO15",
"status": "INACTIVE",
"version": 2
}
}
Errores
| HTTP | Código | Cuándo |
|---|---|---|
| 409 | VERSION_CONFLICT | El sitio cambió desde que se leyó |
| 422 | BUSINESS_ERROR | Se intenta inactivar un sitio con categorías aprobadas o cambiar el reservado UNLINKED |
Las que usa y construye otra épica (11)
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-050 | POST /internal/governance/sap/lov | Recibir marcas, grupos e impuestos que manda SAP | FT-PLT-03 · Listas de valores y modelo canónico con equivalencias por… |
| API-01-004 | POST /api/v2/catalog-plans/{planId}/apply | Confirmar el plan: aplica directo si la tabla no pide aprobación | FT-PLT-01 · Fundamentos de gobierno de plantillas |
| API-13-001 | GET /internal/identity/permissions?userId= | Saber si el área de quien llama es dueña de la tabla | FT-USR-01 · Identidad y autenticación de usuarios internos… |
| API-01-053 | POST /internal/governance/bulk-load/{coleccion} | Cargar tal cual los diccionarios que se conservan | FT-PLT-01 · Fundamentos de gobierno de plantillas |
| API-BFF-103 | GET /bff/v1/catalog/capture-scope | La pantalla de captura pide marcas y grupos permitidos por el BFF, ya no por /public/rt | FT-PLT-10 · Fachada v1 compatible con P360 para Entrada Única y Foro |
| API-01-202 | GET /api/v2/rules/allowed-values | Marcas y grupos permitidos por plantilla, negocio y proveedor (FT-PLT-07) | FT-PLT-07 · Reglas de atributos |
| API-BFF-105 | GET /bff/v1/catalog/margin-factors | La pantalla pide por el BFF los factores de margen por indicador de impuesto | FT-PLT-10 · Fachada v1 compatible con P360 para Entrada Única y Foro |
| API-01-007 | GET /api/v2/lovs/{id}/values | Las etiquetas de los indicadores de impuesto (lista de SAP) | FT-PLT-03 · Listas de valores y modelo canónico con equivalencias por… |
| API-01-001 | GET /api/v2/attributes | El catálogo de atributos que administra el mismo módulo | FT-PLT-02 · Catálogo de atributos |
| API-01-025 | POST /api/v2/taxonomies/PRODUCT/nodes/{id}/bindings/plans | La configuración global de atributos en la raíz del árbol | FT-PLT-06 · Configuración de atributos por plantilla y por negocio… |
| API-01-028 | GET /api/v2/taxonomies/PRODUCT/nodes/{id}/effective | La vista efectiva donde aparece lo configurado | FT-PLT-06 · Configuración de atributos por plantilla y por negocio… |
6. Eventos
Publica
| Evento | Cuándo | Quién lo consume |
|---|---|---|
catalog.governance.changed/REFERENCE_TABLE_CHANGED | Se confirma un alta, un cambio o una baja de entradas, o el alta o cambio de una definición | FT-INT-03 |
catalog.governance.changed/LOV_VALUE_CHANGED | Llegan de SAP proveedores, marcas, grupos o impuestos nuevos o dados de baja | FT-ARQ-02, FT-PLT-03, FT-PLT-06, FT-RAC-07 |
Consume
| Evento | Para qué | Quién lo publica |
|---|---|---|
catalog.governance.changed/REFERENCE_TABLE_CHANGED | MS-02 refresca en memoria las tablas que leen sus reglas de alta, el EAN y las excepciones | esta misma épica |
catalog.governance.changed/REFERENCE_TABLE_CHANGED | MS-06 refresca las tablas que usa al evaluar | esta misma épica |
catalog.governance.changed/REFERENCE_TABLE_CHANGED | MS-05 guarda quién cambió qué entrada, con el antes y el después | esta misma épica |
catalog.governance.changed/REFERENCE_TABLE_CHANGED | MS-07 refresca la tabla de exclusiones de SKU de SAP | esta misma épica |
catalog.egress.files/OBJECT_FINALIZE | MS-07 lee el archivo de catálogos de SAP | D-ARCHIVOS |
7. Datos
Cada colección tiene un solo dueño, el único que escribe en ella.
| Colección | Dueño | Qué guarda | Esta épica |
|---|---|---|---|
reference_table_defs | MS-01 | Definición de cada diccionario. | escribe |
reference_tables | MS-01 | Las entradas de los diccionarios: tallas, colores, impuestos, excepciones y demás datos de referencia. | escribe |
lovs | MS-01 | Cabecera de cada lista de valores. | escribe |
lov_values | MS-01 | Cada valor de lista: código, etiqueta, orden y equivalencias por sistema. | escribe |
brands | MS-01 | Los sitios (banners): Liverpool, Suburbia y los demás. | 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 |
reference_table_defs | MS-01 | Definición de cada diccionario. | lee |
reference_tables | MS-01 | Las entradas de los diccionarios: tallas, colores, impuestos, excepciones y demás datos de referencia. | lee |
lovs | MS-01 | Cabecera de cada lista de valores. | lee |
lov_values | MS-01 | Cada valor de lista: código, etiqueta, orden y equivalencias por sistema. | lee |
governance_rules | MS-01 | Reglas de captura y clasificación: marcas por plantilla, grupo de artículo a plantilla, alcance del proveedor y lista negra de Marketplace. | lee |
8. Historias que cubre
| Historia | Prioridad | Cómo la cubre |
|---|---|---|
| FT-REF-01·H1 · Mantener tablas sin TI | P1 | pasos 1, 2, 3, 4, 5, 6, 7, 8, 9, 10; API-01-011, API-01-012, API-01-013 |
| FT-REF-01·H2 · Paridad desde el día uno | P1 | flujo «Carga tal cual desde P360»; API-01-053 |
| FT-REF-01·H3 · Lo que hoy consulta el portal | P1 | flujo «Catálogos de SAP y sitios», «Lo que consulta la captura»; API-BFF-103, API-01-202, API-01-012 |
| FT-REF-01·H4 · Impuesto y margen | P2 | flujo «Lo que consulta la captura»; API-BFF-105, API-01-012, API-01-007 |
| FT-REF-01·H5 · Excepciones por negocio | P2 | flujo «Carga tal cual desde P360»; API-01-011, API-01-053 |
| FT-REF-01·H6 · Módulo de administración del modelo | P1 | API-01-001, API-01-025, API-01-028. Fuera: La administración de atributos, listas, estructuras y secciones la construyen FT-PLT-02 a FT-PLT-06; el «diccionario de configuración» global es la configuración de la raíz del árbol (FT-PLT-06), que heredan todas las plantillas y aparece en la vista efectiva con la que cataloga el proveedor. |
9. Decisiones de esta épica
Las tomó el TL como arquitecto; quedan como [Propuesta] hasta que el equipo de la épica las revise.
- D-REF-01-1. Un solo modelo de diccionario: una definición con llave compuesta declarada (sus partes y el separador), columnas con tipo, área dueña, si sus cambios piden aprobación (por omisión no) y quién lo consume; las entradas tienen baja lógica y las reglas sólo reciben las activas. Por qué: Reemplaza los programas de un solo uso por una tabla que administra su área, con bitácora, y deja la aprobación donde el área la pida (por ejemplo, excepciones). Se apoya en DEC-PLT-08, DUD-34.
- D-REF-01-2. Paridad desde el día uno: se carga tal cual, desde la base de P360 productivo del mismo día, sólo lo que el inventario marca para conservar. No entran el diccionario 17, Dos, los vacíos ni los de operación interna; lo dudoso de DUD-34 entra inactivo hasta que Gobierno de Producto lo active. Por qué: Si una tabla que usa una regla no se migra, el producto se crea mal y nadie ve el error; si se migra una copia vencida, se contradicen dos fuentes. Se apoya en DUD-34, DEC-ARQ-06, PD-19.
- D-REF-01-3. Los catálogos de SAP (marcas, grupos de artículo, impuestos y proveedores) son listas con dueño SAP: sólo las escribe la ingesta de MS-07 (API-01-050 y API-01-052) y el PIM guarda la copia de consulta, sin administrarlas. Suburbia usa los de S4H y Liverpool y Marketplace los de ECC; la lista se elige por negocio en el atributo. Por qué: SAP sigue siendo el maestro de marcas y de proveedores; el PIM sólo los consulta, como propone DUD-21. Se apoya en DUD-21, DUD-23.
- D-REF-01-4. Impuesto y margen viven en diccionarios del PIM por negocio: en Marketplace el indicador es siempre E2 y el multiplicador por indicador es una tabla de P360 que se conserva (G5 = 1.2528). En R1 la pantalla pide los factores por el BFF (API-BFF-105, que junta este diccionario con la lista de impuestos de SAP); desde R2 el margen lo devuelve calculado el plan de valores de MS-02. Por qué: Un solo lugar para la tabla y un cálculo en el servidor con el valor vigente, igual para la pantalla, la carga masiva y la API. Se apoya en RF-PLA-13, RN-PLA-14, DUD-23.
- D-REF-01-5. Las seis tablas de excepciones se conservan separadas para Liverpool y para Suburbia, con sus llaves de P360. MS-01 sólo las guarda; las evalúa FT-FLU-07 en MS-02, con la cascada de hoy y la anulación. Por qué: Un dueño para el dato (MS-01) y otro para la regla que lo usa (MS-02), sin cambiar la cascada en el corte. Se apoya en DUD-34, DEC-PLT-08.
- D-REF-01-6. Lo que hoy el portal pide a P360 por /public/rt (marcas y grupos permitidos, sellers sin EAN, margen por indicador) no se construye: desde R1 la pantalla lo pide por el BFF a la API v2 de MS-01, y lo que es de producto (sellers sin EAN) se lee en MS-02 desde este diccionario. Por qué: Decisión 20 del backend compartido que adopta ADR-12: sin capa de compatibilidad para los fronts; cada pantalla se cambia una sola vez. Se apoya en ADR-12, PD-06.
- D-REF-01-7. MS-02, MS-06, MS-07 y MS-08 consultan los diccionarios desde su copia en memoria: la cargan al arrancar y la refrescan con REFERENCE_TABLE_CHANGED. La secuencia de variantes por plantilla es uno más de estos diccionarios. Por qué: Hoy las reglas leen copias en disco que nadie refresca; con el aviso, todos usan el valor vigente sin consultar la base en cada regla. Se apoya en RSG-52, DEC-PLT-08.
- D-REF-01-8. Los sitios (los 14 banners y el reservado UNLINKED) son datos de referencia del catálogo en la colección brands: los administra Category con API-01-046 a API-01-049, con versión y sin borrado (un sitio que se deja de usar queda inactivo). Esta épica los construye; categorías y regla de sitios sólo los leen. Las marcas comerciales no son sitios: son la lista de SAP. Por qué: La lista oficial de sitios necesita un solo dueño y una sola tabla con sus tres códigos, como propone DUD-21, y no debe confundirse con las 40,910 marcas. Se apoya en DUD-21.
Qué falta decidir
| ID | Qué falta |
|---|---|
| DUD-34 | Gobierno de Producto decide tabla por tabla qué se migra, qué se convierte en configuración y qué se retira. |
| DUD-21 | Category y Gobierno de Producto ratifican que SAP sigue como maestro de marcas y el PIM guarda la copia. |
| DUD-23 | SAP confirma el contrato de los catálogos sin broker y qué viaja por archivo. |
| DUD-25 | Revisar en el cliente de P360 las reglas de tallas por división que no aparecen en el código. |
| PD-15 | Gobierno de Producto con Publicación y Foro ratifican Conjunto Look y proveedores como reglas, no como árboles. |
Fuentes
- [D]
trazabilidad/features/FT-REF-01-datos-de-referencia-administrables.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.