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.
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
| Slug | Qué hace | Cuándo se dispara |
|---|---|---|
cenace-notifications | Retira la notificación inicial del SIM que bloquea la navegación de los demás bots. | Bajo demanda, antes de los otros bots. |
rea | Descarga la REA para desplegarla en sy-energy. | Diario, 08:30. |
cenace-documents | Descarga las facturas emitidas por CENACE para generar los complementos de pago. Requiere --date. | Bajo demanda. |
bank-one | Entra 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-two | Crea el FOP en el SIM. | Bajo demanda, después de bank-one. |
bank-three | Enví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ón | Comando | Qué hace |
|---|---|---|
| Carga de facturas al SIM | ecd:upload_invoices | Encola los documentos que el bot debe recoger de S3 y subir al portal. |
| Estatus de facturas | ecd:invoices_status | Pide al bot que verifique en el SIM el resultado de lo cargado. |
Uso
# Bot sin fecha
php artisan bot:queue --slug=rea
# Bot que requiere fecha
php artisan bot:queue --slug=cenace-documents --date=2026-08-01Slugs 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:
php artisan bot:queue --slug=cenace-notifications2. Las tres etapas bancarias, en orden.
bank-one valida FUF y totales
↓
bank-two crea el FOP
↓
bank-three devuelve el FOP a sy-energyEjecutar 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íntoma | Primera 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 nada | El mensaje se encoló pero la Lambda falló o no se disparó. Revisar en AWS. |
| Varios bots fallan al mismo tiempo | Notificación pendiente en el SIM, o credenciales del participante vencidas. |
El bot responde pero sy-energy no refleja el resultado | Falla 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-twoybank-threeno 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.