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.