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:
- Países con data completa (en este bucket): Ecuador y CAM consolidado (que cubre CR · GT · NI · PA).
- Países sin data en el bucket: México y Perú (prefijos
pedido_sugerido/mexico/ypedido_sugerido/peru/existen pero están vacíos) RIESGO. - Patrones de schema:
- El maestro completo (
maestro_productos_<país>000) tiene 13 columnas separadas por;. Idéntico en Ecuador y CAM. - Los CSVs de stock (
D_stock_<país>.csv) son comma-separated y tienen estructura idéntica entre países. - Las ventas (
ventas_<país>000) tienen 41 columnas separadas por;. Estructura idéntica entre EC y CAM. - Volumen total en el bucket: ~13 GB (ventas concentran la mayor parte).
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):
PS_Ecuador/Input/— backups diarios escritos por el script de Limpiezaps-pipeline/<país>/<etapa>/— outputs intermedios del SM Pipeline
Inputs · Ecuador
Prefix: pedido_sugerido/ecuador/ · 6 archivos · ~5.5 GB total.
maestro_productos_ecuador000
- Path:
s3://aje-dev-analytics-artifacts-s3/pedido_sugerido/ecuador/maestro_productos_ecuador000 - Tamaño: 281 MB
- Última modificación: 2026-05-12
- Separador:
; - Encoding: UTF-8 (inferred)
- Extension: ninguna (plain CSV)
- Columnas (13):
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
- Sample row:
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
- Uso en pipeline: Limpieza lo descarga y proyecta a 2 columnas (
cod_articulo_magic,desc_articulo) para producirEC_maestro_productos.csv.
EC_maestro_productos.csv
- Path:
s3://aje-dev-analytics-artifacts-s3/pedido_sugerido/ecuador/EC_maestro_productos.csv - Tamaño: 424 KB
- Última modificación: 2026-05-12
- Separador:
, - Columnas (2):
cod_articulo_magic,desc_articulo - Sample:
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
- Uso: Output procesado por Limpieza · referencia para el resto del pipeline.
visitas_ecuador000
- Path:
s3://aje-dev-analytics-artifacts-s3/pedido_sugerido/ecuador/visitas_ecuador000 - Tamaño: 14 MB
- Última modificación: 2026-05-12
- Separador:
; - Columnas (17):
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
- Sample row:
003;457818;200;202;0090|457818;0014P00004B0ZBNQA3;;0090;19;EC;a0p4P00000EyR3uQAF;"1;2;3;4;5;6;7";F1;1219;262;;false
- Particularidad: la columna
dias_de_visita__ccontiene valores entre comillas dobles con;internos (ej:"1;2;3;4;5;6;7"). El parser CSV debe respetar quoting.
ventas_ecuador000
- Path:
s3://aje-dev-analytics-artifacts-s3/pedido_sugerido/ecuador/ventas_ecuador000 - Tamaño: 4.6 GB (el archivo más pesado del bucket por país)
- Última modificación: 2026-05-12
- Separador:
; - Columnas (41):
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
- Sample row (truncado a las primeras columnas):
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;...
- Particularidad: los IDs compuestos siguen el patrón
<instancia>|<cod_compania>|<id>(ej:EC|0090|460172). Es la única columna donde aparece el separador|.
ventas_ecuador_tomorrow.csv
- Path:
s3://aje-dev-analytics-artifacts-s3/pedido_sugerido/ecuador/ventas_ecuador_tomorrow.csv - Tamaño: 583 MB
- Última modificación: 2026-05-12
- Uso: Snapshot prospectivo de ventas · no es input directo del pipeline (los scripts canónicos no lo referencian)
D_stock_ec.csv
- Path:
s3://aje-dev-analytics-artifacts-s3/pedido_sugerido/ecuador/D_stock_ec.csv - Tamaño: 108 KB
- Última modificación: 2026-05-12
- Separador:
, - Columnas (6):
COMPANIA,SUCURSAL,ARTICULO,STOCK,Fecha,Database - Sample:
COMPANIA,SUCURSAL,ARTICULO,STOCK,Fecha,Database
0090,03,28,2382,20260429,ECBDAJE
0090,03,21241,856,20260429,ECBDAJE
- Uso: Reglas de Negocio · filtra SKUs sin stock.
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
- Path:
s3://aje-dev-analytics-artifacts-s3/pedido_sugerido/cam/maestro_productos_cam000 - Tamaño: 450 MB
- Última modificación: 2026-04-29
- Separador:
; - Columnas: idénticas a Ecuador (13 columnas)
- Diferencia: contiene productos de CR · GT · NI · PA mezclados (identificables por
cod_compania)
visitas_cam000
- Tamaño: 36 MB
- Última modificación: 2026-04-29
- Separador:
; - Columnas: idénticas a Ecuador (17 columnas)
- Diferencia: el campo
pais__ctoma valoresCR,GT,NI,PA,SV(la propuesta cubre 4 países de CAM pero los datos pueden incluir El Salvador como remanente · validar en Sesión 1)
ventas_cam000 + ventas_cam001
- Path:
s3://aje-dev-analytics-artifacts-s3/pedido_sugerido/cam/ventas_cam000 - Tamaño total: 6.7 GB + 1.2 GB = 7.9 GB (dos partes; el script las concatena vía
ventas_keysen la config DDB) - Última modificación: 2026-04-29
- Separador:
; - Columnas: idénticas a Ecuador (41 columnas)
- Diferencia: prefix de IDs es
CAM|<cod_compania>|<id>en lugar deEC|...
ventas_sellout_cam000
- Tamaño: 4.9 GB
- Última modificación: 2026-04-29
- Separador:
; - Columnas (23) (estructura distinta a
ventas_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
- Diferencia importante: este archivo tiene menos columnas que
ventas_cam000y está orientado a sellout (venta final al consumidor). El script canónico lo omite explícitamente de la validación de inputs (vercomprobar_inputsenPS_MP_1_limpieza.py, línea 54).
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:
- Cargarse a este bucket (probablemente desde un proceso ETL upstream de AJE).
- 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:
- 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).
- Reglas de negocio sí divergen por país · pero esa lógica ya está en el script canónico (
PS_MP_1_limpieza.pylíneas 96-167) y no requiere cambios de schema. - 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
- 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.
- 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ú).
- Documentar en
DOC-AF-07 RTM· el requisito "soportar los 4 países de CAM consolidados" como criterio testeable de la VT1. - Pre-Desarrollo · agregar a
comprobar_inputsun mensaje de error explícito que diferencie entre "prefix no existe" vs "prefix vacío" para acelerar el debugging futuro.