Skip to content

Bots y automatizaciones

Objetivo

Documentar los bots que sy-energy dispara para operar el portal SIM de CENACE: qué hace cada uno, cómo se lanza y qué devuelve.

Audiencia

Soporte operativo y desarrollo interno.

Alcance

Bots del SIM disparados desde sy-energy. El código de los bots vive en el repositorio memsim-cenace-scrapers, no aquí.

Estado documental

  • Estado: Borrador
  • Última actualización: 2026-08-02
  • Owner: Pendiente
  • SME requerido: soporte operativo / integraciones
  • Fuente resumida: comando de despacho de bots, adaptadores de respuesta y configuración de colas.

Cómo funciona el mecanismo

sy-energy no controla el navegador: publica un mensaje en una cola SQS y una Lambda hace el trabajo.

text
sy-energy ──► bot:queue --slug=<bot> ──► SQS ──► Lambda (Selenium + Chrome)


                                                portal SIM de CENACE

sy-energy ◄─────── respuesta (SQS / API) ◄────────────┘

Cada bot tiene su propia cola, resuelta por el slug. El mensaje incluye siempre el participante propietario; en el caso de los documentos de CENACE lleva además la fecha a consultar.

Consecuencia operativa: bot:queue termina exitosamente en cuanto el mensaje se publica. Que el comando reporte éxito no significa que el bot hizo su trabajo, solo que la petición se encoló.

Bots disponibles

SlugQué haceCuándo se dispara
cenace-notificationsRetira la notificación inicial del SIM que bloquea la navegación de los demás bots.Bajo demanda, antes de los otros bots.
reaDescarga la REA para desplegarla en sy-energy.Diario, 08:30.
cenace-documentsDescarga las facturas emitidas por CENACE para generar los complementos de pago. Requiere --date.Bajo demanda.
bank-oneEntra a la sección de Pagos del SIM y extrae los FUF y totales, para validar que no falten documentos antes de crear el FOP.Semanal, lunes 07:00.
bank-twoCrea el FOP en el SIM.Bajo demanda, después de bank-one.
bank-threeEnvía la información del FOP de vuelta a sy-energy.Bajo demanda, después de bank-two.

Además, la cadena diaria usa dos automatizaciones que no se lanzan con bot:queue sino con sus propios comandos:

AutomatizaciónComandoQué hace
Carga de facturas al SIMecd:upload_invoicesEncola los documentos que el bot debe recoger de S3 y subir al portal.
Estatus de facturasecd:invoices_statusPide al bot que verifique en el SIM el resultado de lo cargado.

Uso

bash
# Bot sin fecha
php artisan bot:queue --slug=rea

# Bot que requiere fecha
php artisan bot:queue --slug=cenace-documents --date=2026-08-01

Slugs válidos: rea · bank-one · bank-two · bank-three · cenace-notifications · cenace-documents.

Un slug inválido se rechaza antes de publicar nada en la cola.

Orden que importa

Dos secuencias no son opcionales:

1. Notificaciones primero. Si el SIM tiene una notificación pendiente, el portal la muestra antes que cualquier otra pantalla y el resto de los bots no logra navegar. Ante fallas simultáneas de varios bots, la primera hipótesis es esta:

bash
php artisan bot:queue --slug=cenace-notifications

2. Las tres etapas bancarias, en orden.

text
bank-one    valida FUF y totales

bank-two    crea el FOP

bank-three  devuelve el FOP a sy-energy

Ejecutar bank-two sin que bank-one haya validado significa crear el FOP sin saber si faltan documentos.

Credenciales

Los bots entran al SIM con las credenciales del participante: certificado (.cer), llave (.key), usuario y contraseña. Se administran en la infraestructura de AWS, no en el código ni en esta documentación.

Un error de autenticación en varios bots a la vez suele significar credenciales vencidas o rotadas, no una falla del bot.

Diagnóstico

SíntomaPrimera hipótesis
bot:queue responde "AWS Error"Problema de credenciales de AWS o cola mal configurada. El mensaje nunca se publicó.
bot:queue responde éxito pero no pasa nadaEl mensaje se encoló pero la Lambda falló o no se disparó. Revisar en AWS.
Varios bots fallan al mismo tiempoNotificación pendiente en el SIM, o credenciales del participante vencidas.
El bot responde pero sy-energy no refleja el resultadoFalla en la cola o el worker de respuesta. Revisar Supervisor y queue:failed.

Ver también Diagnóstico de batch, scheduler y bot.

Riesgos y gaps

  • No está documentado el tiempo esperado de respuesta de cada bot, así que no hay criterio para decidir cuándo un bot "se tardó demasiado".
  • No hay alerta cuando un bot se encola y nunca responde.
  • bank-two y bank-three no están programados: se ejecutan a mano y no está documentado quién lo hace ni con qué criterio.
  • Falta documentar el manejo de reintentos cuando un bot falla a mitad del proceso en el portal.

Próxima revisión

Al documentar memsim-cenace-scrapers.