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
| Campo | Valor |
|---|---|
| Tipo | Bot AWS Lambda |
| Lenguaje | Python 3.14 |
| Empaquetado | Paquete ZIP |
| Disparo | Carga de un archivo en S3, o mensaje SQS que apunta a un CSV |
| Despliegue | AWS 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
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ó bienAnte 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 contener | Valores |
|---|---|
| Sistema | SIN, BCS, BCA |
| Mercado | MDA, 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ón | Contenido |
|---|---|
| Fila 5, columna A | Fecha, en formato separable por ": " |
| Desde la fila 9 | Registros de precios |
Y por cada registro de precio, columnas fijas:
| Columna | Campo |
|---|---|
| A | Hora |
| B | Nodo |
| C | Precio |
| D | Energía |
| E | Pérdidas |
| F | Congestió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ón | Disparo |
|---|---|
| Parser por evento de S3 | Se dispara al depositarse un CSV en el bucket. |
| Parser por mensaje SQS | Se dispara con un mensaje que apunta a un CSV. |
| Reproceso | Reintenta archivos que fallaron. |
Relación con otros sistemas
| Sistema | Relación |
|---|---|
mem-sync-prices | Deposita los CSV que este servicio consume. |
mem-api | Consume los mensajes por nodo y los persiste. |
Operación
No tiene calendario propio: reacciona a eventos.
| Síntoma | Causa probable |
|---|---|
| Los CSV se acumulan en S3 sin procesarse | La Lambda no se está disparando; revisar la configuración del evento. |
| Precios faltantes de un día | El CSV no llegó, o su nombre no cumplía la convención. |
| Precios presentes pero incorrectos | Cambio de formato en el CSV de CENACE. Verificar contra el archivo original. |
| Mensajes en la cola de mensajes muertos | Errores 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.