Skip to content

mem-parse-csv-prices

Qué es

La Lambda que convierte los CSV de precios de CENACE en mensajes estructurados, uno por nodo, para que mem-api los persista.

Es el eslabón intermedio de la cadena de precios: traduce el formato de CENACE al formato interno.

Tipo de sistema

CampoValor
TipoBot AWS Lambda
LenguajePython 3.14
EmpaquetadoPaquete ZIP
DisparoCarga de un archivo en S3, o mensaje SQS que apunta a un CSV
DespliegueAWS SAM (us-east-2), ambientes de desarrollo y producción

Estado documental

  • Estado: Borrador
  • Última actualización: 2026-08-02
  • Owner: Pendiente
  • SME requerido: desarrollo
  • Fuente resumida: código y documentación del repositorio.

Qué hace

text
evento S3 o SQS  ──►  lee el CSV desde S3

                            ├─ identifica mercado y sistema por el nombre del archivo
                            ├─ extrae la fecha del contenido
                            ├─ agrupa los precios por nodo
                            ├─ publica un mensaje SQS por nodo
                            └─ elimina el CSV de S3 si todo salió bien

Ante un error, envía el contenido a una cola de mensajes muertos para reintentar.

Dos supuestos frágiles

Este servicio depende de dos convenciones que no controla:

1. El nombre del archivo

El mercado y el sistema se deducen buscando texto dentro del nombre del archivo:

Debe contenerValores
SistemaSIN, BCS, BCA
MercadoMDA, MTR

Si el nombre no contiene esos valores, el parser no puede construir el mensaje de salida.

2. Las posiciones dentro del CSV

El parser usa posiciones fijas, no encabezados:

PosiciónContenido
Fila 5, columna AFecha, en formato separable por ": "
Desde la fila 9Registros de precios

Y por cada registro de precio, columnas fijas:

ColumnaCampo
AHora
BNodo
CPrecio
DEnergía
EPérdidas
FCongestión

Un cambio de formato rompe el parser en silencio

Si CENACE mueve una columna o cambia el encabezado, el parser seguirá leyendo las mismas posiciones y producirá datos incorrectos, no un error.

Es el modo de falla más peligroso de la cadena: no se detiene, se equivoca.

Funciones desplegadas

FunciónDisparo
Parser por evento de S3Se dispara al depositarse un CSV en el bucket.
Parser por mensaje SQSSe dispara con un mensaje que apunta a un CSV.
ReprocesoReintenta archivos que fallaron.

Relación con otros sistemas

SistemaRelación
mem-sync-pricesDeposita los CSV que este servicio consume.
mem-apiConsume los mensajes por nodo y los persiste.

Operación

No tiene calendario propio: reacciona a eventos.

SíntomaCausa probable
Los CSV se acumulan en S3 sin procesarseLa Lambda no se está disparando; revisar la configuración del evento.
Precios faltantes de un díaEl CSV no llegó, o su nombre no cumplía la convención.
Precios presentes pero incorrectosCambio de formato en el CSV de CENACE. Verificar contra el archivo original.
Mensajes en la cola de mensajes muertosErrores repetidos; revisar los logs de la Lambda.

Riesgos y gaps

  • El parser depende de posiciones fijas y no valida la estructura del archivo.
  • No hay validación de coherencia de los datos extraídos.
  • No hay alerta cuando un CSV queda sin procesar.
  • No está documentado el tratamiento de la cola de mensajes muertos.

Próxima revisión

Al definir validaciones de formato y alertamiento de la cadena de precios.