Catálogo
Tuxpas S.A.C / AJE Group / Pedido Sugerido MLOps

Schema de datos por país

Caracterización de los inputs del pipeline disponibles en el bucket aje-dev-analytics-artifacts-s3 con matriz de diferencias entre países
Código
DOC-AF-02
Fase
Análisis Funcional · sem 1 (18 → 22 may)
Fecha
2026-05-15
Autor
Adrian Ulloa · Squad Lead Tuxpas

Resumen

Este documento perfila los inputs del pipeline de Pedido Sugerido disponibles en el bucket aje-dev-analytics-artifacts-s3 al 15 de mayo de 2026. Cubre los cuatro inputs canónicos del flujo (maestro_productos, visitas, ventas, stock) para los países cuya data está presente, identifica los países sin data y construye una matriz consolidada de diferencias entre países.

Hallazgos clave:


Bucket analizado

Solo se profileó el bucket aje-dev-analytics-artifacts-s3 por instrucción explícita del alcance del análisis. Otros buckets relevantes para el proyecto que no se analizaron en este documento:

Bucket Rol declarado en código Estado
aje-dev-analytics-artifacts-s3 Inputs canónicos del pipeline + outputs intermedios bajo ps-pipeline/ ✓ analizado
aje-analytics-ps-backup Backup de pedido recurrente (read-only) Fuera de alcance de este AF
aje-prd-analytics-artifacts-s3 Bucket de PRD · origen histórico de los datos Fuera de alcance de este AF
sagemaker-us-east-2-832257724409 Default bucket de SageMaker · usado para artifacts SDK Fuera de alcance de este AF

Estructura del prefix pedido_sugerido/

pedido_sugerido/
├── cam/             · datos consolidados de CR · GT · NI · PA
├── ecuador/         · datos de Ecuador
├── mexico/          · vacío
└── peru/            · vacío

Adicionalmente, el bucket contiene dos prefijos de outputs generados por el pipeline (no son inputs del análisis):


Inputs · Ecuador

Prefix: pedido_sugerido/ecuador/ · 6 archivos · ~5.5 GB total.

maestro_productos_ecuador000

cod_compania ; desc_compania ; cod_sucursal ; desc_sucursal ;
cod_zona ; desc_zona ; cod_ruta ; desc_ruta ;
cod_modulo ; desc_modulo ; cod_cliente ;
cod_articulo_magic ; desc_articulo
0090;AJECUADOR S.A.;04;CEDIS QUITO NORTE;90404;TRADICONAL;5404;5404 - TRADICIONAL;90423;Lu;460172;599653;BIG COLA PET NO RETORNABLE 1100 ML 12

EC_maestro_productos.csv

cod_articulo_magic,desc_articulo
32573,PREFORMA DE 21 GRS VERDE PT-INYECCION
33287,PREFORMA DE 50.84 GRS CRISTAL CON UV CUELLO CORTO (MAQUILA) MATERIA PRIMA

visitas_ecuador000

codigo_canal__c ; codigo_cliente__c ; codigo_giro__c ;
codigo_subgiro__c ; codigo_unico__c ; id ;
eje_potencial__c ; compania__c ; sucursal__c ; pais__c ;
id_sucursal ; dias_de_visita__c ; periodo_de_visita__c ;
cod_ruta ; cod_modulo ; ultima_visita ; personalizacion
003;457818;200;202;0090|457818;0014P00004B0ZBNQA3;;0090;19;EC;a0p4P00000EyR3uQAF;"1;2;3;4;5;6;7";F1;1219;262;;false

ventas_ecuador000

id_cliente ; id_sucursal ; id_producto ; id_vendedor ; id_supervisor ;
id_forma_pago ; id_lista_precio ; id_origen_pedido ; id_venta ;
instancia ; fecha_emision ; fecha_liquidacion ; fecha_pedido ;
desc_subregion ; desc_region ; desc_division ;
cod_zona ; cod_ruta ; cod_modulo ; es_exportacion ;
cant_cajafisicavta ; cant_cajaunitvta ; cant_cajafisicapro ; cant_cajaunitpro ;
imp_netovta ; imp_netovta_me ;
cod_compania ; desc_compania ; cod_sucursal ; desc_sucursal ; cod_pais ;
fecha_creacion_cliente ; cod_cliente ;
desc_marca ; desc_formato ; desc_categoria ;
cod_giro ; cod_subgiro ; desc_giro ; desc_subgiro ;
fecha_proceso
EC|0090|460172;EC|0090|04;EC|0090|599653;EC|0090|447614;EC|0090|429277;EC|0090|001;EC|0090|1;EC|0090|005;EC|0090|04|02|FXC|9050232;EC;2026-02-17;2026-02-17;2026-02-16;...

ventas_ecuador_tomorrow.csv

D_stock_ec.csv

COMPANIA,SUCURSAL,ARTICULO,STOCK,Fecha,Database
0090,03,28,2382,20260429,ECBDAJE
0090,03,21241,856,20260429,ECBDAJE

Inputs · CAM consolidado (CR · GT · NI · PA)

Prefix: pedido_sugerido/cam/ · 8 archivos · ~13.4 GB total (la mayor parte de la volumetría del bucket).

La estrategia "CAM consolidado" agrega los datos de los cuatro países centroamericanos en un solo set de archivos. La separación por país se hace luego en runtime mediante el campo cod_pais (o desc_compania según la tabla).

maestro_productos_cam000

visitas_cam000

ventas_cam000 + ventas_cam001

ventas_sellout_cam000

fecha_liquidacion ; cod_compania ; cod_sucursal ; cod_cliente ;
cod_canal ; desc_canal ; cod_zona ; cod_ruta ; cod_modulo ;
cod_articulo_magic ; desc_marca ; desc_formato ; desc_categoria ;
cant_cajafisicavta ; cant_cajaunitvta ; cant_cajafisicapro ; cant_cajaunitpro ;
imp_netovta ; cant_pedidos_concretados ;
cod_giro ; desc_giro ; cod_subgiro ; desc_subgiro

Stocks por país (CSVs separados dentro del prefix cam/)

Archivo Tamaño País Compañía
D_stock_cr.csv 41 KB Costa Rica 0070 (CRBDAJE)
D_stock_gt.csv 98 KB Guatemala 0076 (GTBDAJE)
D_stock_ni.csv 16 KB Nicaragua 0081 (NIBDAJE)
D_stock_pa.csv 33 KB Panamá 0096 (PABDAJE)

Todos comparten el mismo schema de 6 columnas (idéntico al de Ecuador):

COMPANIA,SUCURSAL,ARTICULO,STOCK,Fecha,Database

Inputs · México

Prefix: pedido_sugerido/mexico/

Estado: VACÍO El prefix existe pero no contiene archivos. El último contenido data del 2026-04-29 cuando se creó el folder (objeto de 0 bytes).

Impacto: el schedule de México (aje-dev-ps-schedulerule-MX-eventbridge) dispara todos los días hábiles a las 10:30 UTC. Al no haber inputs, el step Limpieza falla en comprobar_inputs con ValueError: ERROR: No se encontraron archivos en pedido_sugerido/mexico/. Esta falla actualmente está bloqueando 1 de las 7 ejecuciones diarias.

Acción requerida a AJE: confirmar si los datos de México deberían:

  1. Cargarse a este bucket (probablemente desde un proceso ETL upstream de AJE).
  2. O leerse de otro bucket / prefix (si es así, ajustar la config DynamoDB del país).

Inputs · Perú

Prefix: pedido_sugerido/peru/

Estado: VACÍO · mismo patrón que México: prefix existe, 0 archivos.

Impacto adicional sobre México: el script canónico tiene una rama especial para Perú (pe_special config con allowlist Excel desde sagemaker-us-east-2-832257724409, blocking de Lima, marca TRES CRUCES). Esa lógica nunca se ejecuta hoy porque la corrida falla antes.

Acción requerida a AJE: mismo planteo que México · confirmar bucket y prefix correctos.


Matriz consolidada de diferencias entre países

Característica Ecuador CAM (CR · GT · NI · PA) México Perú
Data presente en bucket
Estructura del maestro 13 cols · ; 13 cols · ; (idéntico)
Estructura de visitas 17 cols · ; 17 cols · ; (idéntico)
Estructura de ventas 41 cols · ; 41 cols · ; (idéntico)
Estructura del stock 6 cols · , 6 cols · , (idéntico)
Archivos de ventas 1 (ventas_ecuador000) 2 (ventas_cam000 + cam001) + ventas_sellout_cam000
Prefix de IDs compuestos EC|0090|... CAM|0070|... (o 0076, 0081, 0096) MX|0085|... (esperado) PE|0080|... (esperado)
compania_ventas_int (config DDB) 90 70 (CR) · 76 (GT) · 81 (NI) · 96 (PA) 85 (esperado) 80 (esperado)
Reglas especiales en el script Filtra por pais__c Filtra por compania__c (rama pais == "MX") Filtra por allowlist Excel + sucursales de Lima + bloqueo TRES CRUCES
has_pedido_recurrente true depende del país (per config DDB) false (esperado) true (esperado)
Frecuencia de actualización observada 12 may (actualizado durante el smoke test) 29 abr (no actualizado desde el bootstrap inicial)

Lecturas clave:

  1. Schema homogéneo · los inputs que existen comparten exactamente la misma estructura entre Ecuador y CAM. El refactor a un solo código parametrizado es viable a nivel de schema (mitiga el riesgo #1 de la propuesta v2).
  2. Reglas de negocio sí divergen por país · pero esa lógica ya está en el script canónico (PS_MP_1_limpieza.py líneas 96-167) y no requiere cambios de schema.
  3. El gap real es de disponibilidad de datos, no de estructura · México y Perú son la prioridad #1 de habilitación para llegar a "7 países corren autónomamente" del Nivel 1.

Riesgos identificados

# Riesgo Probabilidad Impacto Mitigación
1 Datos de México y Perú no disponibles en el bucket dev Materializada (falla diaria) Alto · bloquea 2 de los 7 países del Nivel 1 Confirmar con AJE en Sesión 1: ¿se cargan acá o en otro bucket?
2 CAM puede incluir El Salvador (visto en sample de visitas_cam000 con pais__c=SV) Media Bajo · el filtro cod_pais lo descarta, pero infla la volumetría Verificar volumen de filas con pais__c=SV y considerar pre-filtro en el extract de AJE
3 Datos CAM no actualizados desde 29-abr Materializada Medio · si se promueve a producción sin refresh, las recomendaciones salen sobre data vieja Coordinar con el equipo ETL de AJE la cadencia de refresh del bucket
4 ventas_sellout_cam000 con schema distinto (23 cols vs 41 cols de ventas_cam*) Conocida Bajo · el script ya lo omite explícitamente (línea 54 de PS_MP_1_limpieza.py) Documentar el motivo del skip en el código para futuras mantenciones
5 ventas_ecuador_tomorrow.csv presente pero no referenciado por el script canónico Conocida Bajo · ocupa 583 MB sin uso operativo Confirmar si era para una capacidad futura o residuo de pruebas. Decidir si archivar

Próximos pasos

  1. Sesión 1 (Lun 18-may) · validar con AJE los hallazgos de México y Perú (riesgo #1) — es el bloqueador más urgente para que el cron diario quede en verde para los 7 países.
  2. Mid-AF Sesión 2 (Mié 20-may) · confirmar la matriz de diferencias y acordar el alcance de las reglas especiales por país (México · Perú).
  3. Documentar en DOC-AF-07 RTM · el requisito "soportar los 4 países de CAM consolidados" como criterio testeable de la VT1.
  4. Pre-Desarrollo · agregar a comprobar_inputs un mensaje de error explícito que diferencie entre "prefix no existe" vs "prefix vacío" para acelerar el debugging futuro.