Actualizado el 18-oct-2026. Primera versión de la arquitectura de esta épica.
Qué responde. Cómo funciona por dentro FT-PLT-09: 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-09.json, generada con generar.py; la ficha de la épica es trazabilidad/features/FT-PLT-09-carga-masiva-configuracion-plantillas.md.
En 30 segundos
Configurar miles de plantillas una por una es imposible, y hoy se hace con programas de un solo uso que no validan nada. Esta épica deja cargar la configuración del catálogo por archivo CSV o por API: el archivo se valida completo, renglón por renglón, sin tocar la base; si todo está bien, se aplica con la misma aprobación que la pantalla y con los mismos avisos. Sirve para cargar el nivel de cada atributo por negocio en muchas plantillas y para preparar un ambiente vacío.
- Módulo dueño: MS-01 Catálogo. También participan: MS-02 Producto, MS-04 Reportes, MS-14 Avisos y ayuda, MS-15 IA y enriquecimiento.
- Etapa C · Configura el catálogo. Recibe «PE-T · Usuario con permisos y bitácora» y entrega «PE-C · Catálogo vigente».
- APIs: construye 7 y usa 5 que construyen otras épicas.
- Eventos: publica 5 y consume 1.
1. Dónde encaja
Recibe
| De | Qué |
|---|---|
| PE-T · Usuario con permisos y bitácora | El administrador de Gobierno de Producto ya identificado, con sus roles del directorio de MS-13. |
| FT-PLT-06 · Configuración de atributos por plantilla y por negocio… | El modelo de configuración por plantilla y negocio (nivel, capa, sección, filtro) y sus reglas de validación, que la carga reutiliza tal cual. |
| FT-PLT-01 · Fundamentos de gobierno de plantillas | La solicitud de cambio con canal IMPORT, API o IA, su aprobación y la secuencia de ID para los nodos nuevos. |
| FT-RAC-01 · Motor de validación en línea y candados de datos… | El formato común de errores por renglón y campo (fila, columna, código y mensaje), para que la carga reporte igual que la validación en línea. |
Entrega
| A | Qué |
|---|---|
| PE-C · Catálogo vigente | La configuración cargada por archivo, ya aprobada y vigente, con los mismos avisos de catalog.governance.changed que si se hubiera editado en pantalla. |
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 | Descarga la plantilla del perfil de configuración | — |
| 2 | Entrada Única · Vendor Center | MS-01 Catálogo (por el BFF) | Pide las columnas del perfil y su CSV vacío | API-01-030 |
| 3 | Administración del catálogo | Entrada Única · Vendor Center | Sube el CSV con el nivel por negocio de 37 plantillas | — |
| 4 | Entrada Única · Vendor Center | MS-01 Catálogo (por el BFF) | Sube el archivo para validarlo sin escribir | API-01-031 |
| 5 | MS-01 Catálogo | Archivos e imágenes (almacén y CDN) | Guarda el archivo original con su huella | — |
| 6 | MS-01 Catálogo | MS-02 Producto | Cuenta los productos de las plantillas tocadas | API-02-113 |
| 7 | MS-01 Catálogo | MS-14 Avisos y ayuda | Avisa que la validación terminó | API-14-005 |
| 8 | Entrada Única · Vendor Center | MS-01 Catálogo (por el BFF) | Lee el resumen con altas, cambios e impacto | API-01-033 |
| 9 | Entrada Única · Vendor Center | MS-01 Catálogo (por el BFF) | Aplica la carga y abre la solicitud | API-01-032 |
| 10 | Entrada Única · Vendor Center | MS-01 Catálogo (por el BFF) | Otro administrador aprueba la solicitud | API-01-103 |
| 11 | MS-01 Catálogo | Base pim | Aplica cada registro en su propia transacción | — |
| 12 | MS-01 Catálogo | Eventos | Avisa las vistas nuevas por negocio | catalog.governance.changed/TEMPLATE_VIEW_CHANGED |
| 13 | Eventos | MS-02 Producto | Entrega los cambios para validar con lo nuevo | catalog.governance.changed/TEMPLATE_VIEW_CHANGED |
3.1 Archivo con errores
3.2 Inicializar un ambiente vacío
3.3 Validación por API y centro de archivos
4. Si algo sale mal
- El archivo trae una columna que no es de su perfil. Se rechaza completo con 400 UNKNOWN_COLUMN antes de leer una sola fila; nada cambia.
- Algún renglón tiene errores (código repetido, nivel o negocio que no existe). La carga queda VALIDATED_WITH_ERRORS con fila, columna, código y mensaje de cada error y ningún dato cambia; no se puede aplicar a medias.
- El archivo pasa el límite de su perfil. Se rechaza completo con 413 LIMIT_EXCEEDED; nunca se trunca.
- Algo que toca la carga cambió entre la validación y la aprobación. La aprobación deja la solicitud en conflicto sin aplicar nada (409 VERSION_CONFLICT) y se valida otra vez el archivo; una carga lista vale 24 horas.
- Un registro falla al aplicarse aunque pasó la validación. Cada registro va en su propia transacción: los demás se aplican y el recibo dice cuál falló y por qué, para reintentar sólo ése.
5. APIs
Las que construye esta épica (7)
GET /api/v2/catalog-imports/profiles · Perfiles de carga masiva del catálogo
| Campo | Valor |
|---|---|
| API | API-01-029 · MS-01 Catálogo |
| Para qué | Lista los 12 perfiles de carga de catálogo y estructura (listas, valores, atributos, grupos, nodos, metadatos y configuración por plantilla y negocio), con su orden de dependencia y su límite de renglones. |
| En esta épica | Los 12 perfiles de carga con su orden de dependencia |
| Quién la llama | BFF del portal, MS-15 IA y enriquecimiento |
| Permiso | CAT-L |
| Cabeceras | Authorization, X-Request-Id |
Request
null
Response · 200
{
"success": true,
"data": {
"items": [
{
"profile": "LOOKUP_VALUES_V1",
"name": "Valores de lista",
"objectType": "LOV_VALUE",
"dependencyOrder": 2,
"maxRows": 50000
},
{
"profile": "ATTRIBUTES_V1",
"name": "Atributos",
"objectType": "ATTRIBUTE",
"dependencyOrder": 3,
"maxRows": 5000
},
{
"profile": "STRUCTURE_GROUP_CREATE_V1",
"name": "Alta de nodos",
"objectType": "TEMPLATE_NODE",
"dependencyOrder": 5,
"maxRows": 5000
},
{
"profile": "TEMPLATE_BINDINGS_V1",
"name": "Configuración por plantilla y negocio",
"objectType": "BINDING",
"dependencyOrder": 7,
"maxRows": 50000
}
],
"page": 1,
"size": 50,
"total": 12
}
}
Errores
| HTTP | Código | Cuándo |
|---|---|---|
| 403 | AUTHORIZATION_ERROR | Quien llama no tiene CAT-L |
GET /api/v2/catalog-imports/profiles/{p}/template · Plantilla de columnas de un perfil
| Campo | Valor |
|---|---|
| API | API-01-030 · MS-01 Catálogo |
| Para qué | Da las columnas de un perfil (obligatorias, valores permitidos y un ejemplo) y el CSV vacío para descargar, igual que los CSV que ya usa Gobierno de Producto. |
| En esta épica | Las columnas de un perfil y su CSV vacío |
| Quién la llama | BFF del portal, MS-15 IA y enriquecimiento |
| Permiso | CAT-L |
| Cabeceras | Authorization, X-Request-Id |
| Parámetros | p = TEMPLATE_BINDINGS_V1, format = json |
| También la usan | FT-CAT-01 |
Request
null
Response · 200
{
"success": true,
"data": {
"profile": "TEMPLATE_BINDINGS_V1",
"format": "CSV",
"encoding": "UTF-8",
"separator": ",",
"columns": [
{
"name": "TEMPLATE_ID",
"required": true,
"example": "EU4-0412"
},
{
"name": "ATTRIBUTE_ID",
"required": true,
"example": "MATERIAL_VASO"
},
{
"name": "BUSINESS",
"required": true,
"allowed": [
"MER",
"SUB",
"MKP"
]
},
{
"name": "LEVEL",
"required": true,
"allowed": [
"REQUIRED",
"RECOMMENDED",
"OPTIONAL"
]
},
{
"name": "LAYER",
"required": false,
"allowed": [
"1",
"2",
"3",
"4",
"5"
]
},
{
"name": "SECTION",
"required": false,
"example": "CARACTERISTICAS"
},
{
"name": "VALUE_FILTER",
"required": false,
"example": "VID|PLA"
}
],
"downloadUrl": "/api/v2/catalog-imports/profiles/TEMPLATE_BINDINGS_V1/template?format=csv"
}
}
Errores
| HTTP | Código | Cuándo |
|---|---|---|
| 404 | NOT_FOUND | El perfil no existe |
POST /api/v2/catalog-imports · Subir una carga para validarla
| Campo | Valor |
|---|---|
| API | API-01-031 · MS-01 Catálogo |
| Para qué | Recibe un CSV por formulario, o los mismos renglones en JSON cuando llama una integración, y lo valida completo sin escribir nada, con las mismas reglas que la pantalla. Responde de inmediato y valida aparte; el resultado se consulta con el importId. |
| En esta épica | Subir y validar una carga sin escribir, por archivo o por API |
| Quién la llama | BFF del portal, MS-15 IA y enriquecimiento |
| Permiso | CAT-E |
| Cabeceras | Authorization, X-Request-Id, Idempotency-Key |
| Escribe en | import_jobs |
| También la usan | FT-CAT-01, FT-CAT-03, FT-IA-04, FT-PLT-01, FT-RAC-07 |
Request
{
"profile": "TEMPLATE_BINDINGS_V1",
"channel": "IMPORT",
"file": "configuracion-licuadoras.csv (multipart/form-data, campo file)",
"rows": "sólo por API: los mismos renglones del CSV en JSON, sin archivo"
}
Response · 202
{
"success": true,
"data": {
"importId": "imp-7c21",
"status": "VALIDATING",
"rows": 1240,
"sha256": "9f2c41e0b7d3a8c5",
"links": {
"self": "/api/v2/catalog-imports/imp-7c21"
}
}
}
Errores
| HTTP | Código | Cuándo |
|---|---|---|
| 400 | UNKNOWN_COLUMN | El archivo trae una columna ajena al perfil: se rechaza completo antes de leer filas |
| 413 | LIMIT_EXCEEDED | El archivo pasa el límite de renglones del perfil: se rechaza completo |
| 409 | WRITE_DISABLED | P360 todavía es la fuente del catálogo (antes del corte de R1) |
POST /api/v2/catalog-imports/{id}/apply · Aplicar una carga validada
| Campo | Valor |
|---|---|
| API | API-01-032 · MS-01 Catálogo |
| Para qué | Confirma una carga READY: abre una sola solicitud de cambio con su canal (IMPORT, API o IA) que se aprueba completa; al aprobarse, se aplica registro por registro, cada uno en su transacción con sus idiomas, y el recibo dice qué pasó con cada uno. |
| En esta épica | Aplicar una carga lista: abre la solicitud |
| Quién la llama | BFF del portal, MS-15 IA y enriquecimiento |
| Permiso | CAT-E; el mismo que subió la carga |
| Cabeceras | Authorization, X-Request-Id, Idempotency-Key |
| Parámetros | id = imp-7c21 |
| Escribe en | import_jobs, governance_receipts |
| También la usan | FT-CAT-01, FT-CAT-03, FT-IA-04, FT-PLT-01, FT-RAC-07 |
Request
{
"comment": "Niveles por negocio que entregó Mercaderías para cocina"
}
Response · 202
{
"success": true,
"data": {
"requestId": "req-3e9a71",
"status": "PENDING_APPROVAL",
"changeRequestId": "chg-7f0a33",
"receiptUrl": "/api/v2/catalog-receipts/req-3e9a71"
}
}
Errores
| HTTP | Código | Cuándo |
|---|---|---|
| 409 | NOT_EDITABLE_IN_STATUS | La carga no está READY: tiene errores, sigue validando o ya se aplicó |
| 409 | PLAN_EXPIRED | Pasaron más de 24 horas desde la validación: se valida otra vez |
| 409 | VERSION_CONFLICT | Algo que toca la carga cambió desde la validación |
GET /api/v2/catalog-imports/{id} · Resultado de una carga
| Campo | Valor |
|---|---|
| API | API-01-033 · MS-01 Catálogo |
| Para qué | Da el avance y el resultado de una carga: READY con el resumen de altas, cambios e impacto en plantillas y productos, o VALIDATED_WITH_ERRORS con fila, columna, código y mensaje de cada error. Con format=csv entrega el reporte para corregir el archivo. |
| En esta épica | El avance, el resumen y los errores de una carga |
| Quién la llama | BFF del portal, MS-15 IA y enriquecimiento |
| Permiso | Quien subió la carga y los aprobadores del catálogo |
| Cabeceras | Authorization, X-Request-Id |
| Parámetros | id = imp-5a02, view = errors, format = json |
| También la usan | FT-CAT-01 |
Request
null
Response · 200
{
"success": true,
"data": {
"importId": "imp-5a02",
"profile": "LOOKUP_VALUES_V1",
"status": "VALIDATED_WITH_ERRORS",
"progress": 100,
"stats": {
"rows": 500,
"valid": 498,
"errors": 2
},
"summary": {
"create": 412,
"update": 86
},
"impact": {
"templates": 37,
"products": 5120,
"views": 111
},
"errors": [
{
"row": 14,
"column": "CODE",
"code": "CONFLICTING_ROWS",
"message": "El código 0712 se repite en la fila 233"
},
{
"row": 233,
"column": "CODE",
"code": "CONFLICTING_ROWS",
"message": "El código 0712 se repite en la fila 14"
}
],
"changeRequestId": null,
"receiptUrl": null
}
}
Errores
| HTTP | Código | Cuándo |
|---|---|---|
| 404 | NOT_FOUND | La carga no existe o no es visible para quien llama |
GET /api/v2/catalog-imports · Cargas de configuración de un usuario
| Campo | Valor |
|---|---|
| API | API-01-107 · MS-01 Catálogo |
| Para qué | Lista las cargas de configuración del catálogo de quien llama (o de su área), con perfil, estado, fechas y su solicitud de cambio. La usa el BFF para armar el centro de importaciones y exportaciones. |
| En esta épica | Las cargas de configuración de un usuario |
| Quién la llama | BFF del portal |
| Permiso | CAT-L: ve las suyas y las de su área |
| Cabeceras | Authorization, X-Request-Id |
| Parámetros | mine = True, status = APPLIED, profile = TEMPLATE_BINDINGS_V1, page = 1, size = 50 |
Request
null
Response · 200
{
"success": true,
"data": {
"items": [
{
"importId": "imp-7c21",
"profile": "TEMPLATE_BINDINGS_V1",
"channel": "IMPORT",
"status": "APPLIED",
"rows": 1240,
"createdAt": "2027-01-15T15:00:00Z",
"appliedAt": "2027-01-16T10:12:00Z",
"changeRequestId": "chg-7f0a33"
}
],
"page": 1,
"size": 50,
"total": 1
}
}
Errores
| HTTP | Código | Cuándo |
|---|---|---|
| 400 | VALIDATION_ERROR | Un filtro trae un estado o un perfil que no existe |
GET /bff/v1/catalog/files · La pantalla del centro de importaciones y exportaciones del
| Campo | Valor |
|---|---|
| API | API-BFF-108 · BFF del portal |
| Para qué | La pantalla del centro de importaciones y exportaciones del catálogo: junta en una sola lista las cargas de configuración del usuario (MS-01, API-01-107) y sus exportaciones de catálogo y estructura (MS-04, API-04-012), con su estado y el enlace a su resultado. |
| En esta épica | La pantalla del centro de importaciones y exportaciones del catálogo |
Request
null
Response · 200
{
"success": true,
"data": {
"items": [
{
"kind": "IMPORT",
"id": "imp-7c21",
"profile": "TEMPLATE_BINDINGS_V1",
"status": "APPLIED",
"createdAt": "2027-01-15T15:00:00Z",
"link": "/api/v2/catalog-imports/imp-7c21"
},
{
"kind": "EXPORT",
"id": "job-40e8",
"type": "CATALOG_FILTER",
"status": "DONE",
"createdAt": "2027-01-14T18:20:00Z",
"link": "/api/v2/exports/job-40e8"
}
],
"page": 1,
"size": 50,
"total": 2
}
}
Errores
| HTTP | Código | Cuándo |
|---|---|---|
| 403 | AUTHORIZATION_ERROR | Quien llama no tiene el permiso o no es el módulo autorizado |
| 404 | NOT_FOUND | No existe lo que se pide o no es visible para quien llama |
Las que usa y construye otra épica (5)
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-103 | POST /api/v2/catalog-change-requests/{changeRequestId}/decision | Aprobar la solicitud de la carga | FT-PLT-01 · Fundamentos de gobierno de plantillas |
| API-14-005 | POST /internal/notifications/messages | Avisar que terminó la validación de un archivo grande | FT-RAC-05 · Estatus del producto y motivos visibles para seller y… |
| API-04-012 | GET /api/v2/receipts?user=&from=&to= | Las exportaciones del usuario, para el centro de archivos | FT-RAC-07 · Reportes, exportes, importes y búsquedas por atributos |
| API-04-001 | POST /api/v2/exports | Exportar la configuración vigente para editarla y volverla a subir | FT-RAC-07 · Reportes, exportes, importes y búsquedas por atributos |
| API-02-113 | POST /internal/product/catalog-usage | Cuántos productos tienen las plantillas que toca la carga | FT-PLT-02 · Catálogo de atributos |
6. Eventos
Publica
| Evento | Cuándo | Quién lo consume |
|---|---|---|
catalog.governance.changed/TEMPLATE_VIEW_CHANGED | Se aplica una carga que cambia la configuración de plantillas por negocio | FT-ACT-01, FT-ACT-05, FT-IA-03, FT-PLT-06, FT-PRD-01, FT-RAC-01, FT-RAC-02 |
catalog.governance.changed/TAXONOMY_NODE_CHANGED | Se aplica una carga que crea o mueve nodos | FT-CAT-04, FT-IA-02, FT-PLT-05, FT-PLT-06 |
catalog.governance.changed/ATTRIBUTE_CHANGED | Se aplica una carga de atributos | FT-ARQ-02, FT-PLT-02, FT-PLT-04, FT-PLT-06 |
catalog.governance.changed/LOV_VALUE_CHANGED | Se aplica una carga de valores de lista | FT-ARQ-02, FT-PLT-03, FT-PLT-06, FT-RAC-07 |
catalog.governance.changed/TEMPLATE_CHANGED | Se aplica una carga de metadatos o configuración de plantillas | FT-ARQ-02, FT-PLT-01, FT-PLT-08 |
Consume
| Evento | Para qué | Quién lo publica |
|---|---|---|
catalog.governance.changed/TEMPLATE_VIEW_CHANGED | MS-02 valida las propuestas con la configuración cargada, igual que si se hubiera editado en pantalla | 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 |
|---|---|---|---|
import_jobs | MS-01 | Cargas masivas de configuración del catálogo, con revisión previa y resultado por fila. | escribe |
governance_change_requests | MS-01 | Cada solicitud de cambio del catálogo: qué objetos toca, el antes y el después por campo, el canal (pantalla, carga, API, IA o migración), quién la pidió y quién la decidió, su estado (pendiente, aprobada, rechazada, aplicada, en conflicto o vencida) y su recibo. | escribe |
attributes | MS-01 | Cada atributo: tipo, lista, restricciones, grupos e identificadores externos. | escribe |
attribute_groups | MS-01 | Grupos de atributos, incluidos los de permiso (quién ve y quién edita). | 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 |
taxonomy_nodes | MS-01 | Plantillas y nodos de grupo de artículo, con la configuración de atributos de cada plantilla. | escribe |
template_views | MS-01 | La vista efectiva ya resuelta por plantilla y negocio: qué atributos pide y cuáles son obligatorios. | escribe |
id_sequences | MS-01 | El siguiente identificador de plantillas y catálogos. | 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 |
import_jobs | MS-01 | Cargas masivas de configuración del catálogo, con revisión previa y resultado por fila. | lee |
attributes | MS-01 | Cada atributo: tipo, lista, restricciones, grupos e identificadores externos. | 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 |
taxonomy_nodes | MS-01 | Plantillas y nodos de grupo de artículo, con la configuración de atributos de cada plantilla. | lee |
taxonomies | MS-01 | Los árboles: plantillas, grupos de artículo y sitios web. | lee |
8. Historias que cubre
| Historia | Prioridad | Cómo la cubre |
|---|---|---|
| FT-PLT-09·H1 · Validar antes de aplicar | P1 | pasos 3, 4, 5, 6, 8; flujo «Archivo con errores»; API-01-031, API-01-033 |
| FT-PLT-09·H2 · Aplicar con aprobación | P1 | pasos 9, 10, 11; API-01-032, API-01-103 |
| FT-PLT-09·H3 · Configuración por negocio en lote | P1 | pasos 1, 2, 3, 4, 8, 12; API-01-030, API-01-031 |
| FT-PLT-09·H4 · Inicializar un ambiente | P2 | flujo «Inicializar un ambiente vacío»; API-01-029, API-01-031 |
| FT-PLT-09·H5 · Validación por API | P2 | flujo «Validación por API y centro de archivos»; API-01-031, API-01-033 |
| FT-PLT-09·H6 · Centro de importaciones y exportaciones | P2 | flujo «Validación por API y centro de archivos»; API-BFF-108, API-01-107, API-04-012, API-04-001 |
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-09-1. Se valida todo antes de tocar la base, con las mismas reglas que la pantalla: una columna ajena rechaza el archivo antes de leer filas y un solo error deja la carga en VALIDATED_WITH_ERRORS, con fila, columna, código y mensaje, sin aplicar nada. Por qué: La ERF pide validación previa por fila y celda, y la plantilla masiva de hoy tenía un «Validar» que no validaba. Se apoya en DEC-ARQ-12, DEC-PLT-05.
- D-PLT-09-2. Aplicar una carga lista abre una sola solicitud de cambio con su canal (IMPORT, API o IA), que se aprueba completa. Al aprobarse, se aplica registro por registro, cada uno en su transacción con sus idiomas, y el recibo dice qué pasó con cada uno. Por qué: Mismo control que la pantalla sin pedirle al aprobador miles de decisiones, y sin que un registro malo deshaga todo el archivo. Se apoya en DEC-PLT-05, DEC-ARQ-12.
- D-PLT-09-3. Formatos: CSV en UTF-8 con los perfiles y columnas de hoy, y la API con los mismos renglones en JSON y el mismo reporte. Excel queda fuera del primer corte. Por qué: Excel reformatea identificadores y códigos (notación científica, ceros a la izquierda); el CSV del perfil se abre en Excel de todos modos. Se apoya en DUD-02.
- D-PLT-09-4. Toda validación corre aparte: subir responde de inmediato con el identificador de la carga, el avance se consulta y MS-14 avisa al terminar. Una carga lista vale 24 horas. Por qué: Lo que tarda es asíncrono con recibo; la meta de tiempo no tiene fuente y la fija el plan. Se apoya en ADR-12.
- D-PLT-09-5. Un paquete de varios perfiles se procesa en orden de dependencia (listas, valores, atributos, grupos, nodos, metadatos y configuración) y los nodos sin ID reciben el siguiente EU{nivel+1}-{número}. Reemplaza los programas de un solo uso y el copiado de diccionarios entre ambientes con credenciales en claro. Por qué: Preparar un ambiente vacío sin programas sueltos y sin credenciales en archivos. Se apoya en RSG-40, PD-16.
- D-PLT-09-6. La IA que crea plantillas usa la misma API de carga con canal IA y pasa por la misma aprobación; ya no escribe directo como hoy. Por qué: Hoy la IA de plantillas escribe nodos, atributos y configuración sin validación previa; así queda con el mismo control que todos. Se apoya en P-19, DEC-PLT-05.
- D-PLT-09-7. El centro de importaciones y exportaciones es una pantalla del BFF que junta las cargas de MS-01 y las exportaciones de MS-04 (PEDIDA-PLT-09-1); ni MS-01 ni MS-04 componen la lista del otro. Por qué: Decisión 19 del backend compartido que adopta ADR-12: lo que junta datos de varios módulos para una pantalla va al BFF. Se apoya en ADR-12.
Qué falta decidir
| ID | Qué falta |
|---|---|
| DUD-02 | Gobierno de Producto fija los campos mínimos de cada perfil de carga que pide la ERF del 24-sep. |
| PD-12 | Arquitectura con Gobierno de Datos confirma el orden de corte: hasta R1 la carga sólo valida (P360 es la fuente). |
| PD-16 | Ratificar que un ID existente de otro objeto es error y nunca se modifica. |
También siguen abiertos: RSG-40, Confirmar el retiro del script que copia diccionarios entre ambientes con credenciales en claro.
Fuentes
- [D]
trazabilidad/features/FT-PLT-09-carga-masiva-configuracion-plantillas.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.