Operación de cfe-rates-microservice
Cuándo usar este documento
Para solicitar tarifas al bot, cargar un archivo de tarifas, o diagnosticar por qué faltan tarifas de un periodo.
Audiencia
Soporte y desarrollo.
Estado documental
- Estado: Borrador
- Última actualización: 2026-08-02
- Owner: Pendiente
- SME requerido: desarrollo / operación
- Fuente resumida: comandos y configuración de colas del repositorio.
Tareas recurrentes
Este servicio no tiene scheduler: todo se ejecuta a mano. Su ritmo lo marca el cierre mensual de sy-energy.
Mensual — antes del día 1
Es el paso previo a la facturación de los contratos de costo fijo: sin la tarifa CFE calculada, el cliente no puede registrar su tarifa fija y ese contrato no se puede facturar.
| Orden | Tarea | Comando |
|---|---|---|
| 1 | Registrar las tarifas publicadas por CFE | php artisan app:import-rates-from-csv --filename=cfe-rates-<AAAA>-<MM>.csv |
| 2 | Calcular la tarifa del centro de carga | php artisan app:calculate-rate-command --rmu=<RMU> --period=<AAAA>-<MM> --owner=<participante> |
El cálculo requiere el consumo completo del mes
La tarifa se calcula sobre la demanda ("Consumo") del centro de carga. Si falta demanda, la tarifa sale mal, y con ella el contrato que el cliente registrará en sy-energy.
Verificar la completitud de la demanda antes de calcular. Corregirlo después implica rehacer el contrato.
Ver Ciclo mensual de facturación.
El registro de tarifas es manual
Las tarifas se cargan desde un archivo CSV que alguien tiene que obtener de CFE y depositar. No hay automatización ni alerta si el archivo del mes no se cargó: se descubre cuando falla el cálculo.
Bajo demanda — solicitud de tarifas al bot
| Tarea | Comando |
|---|---|
| Pedir tarifas al bot que consulta el portal de CFE | php artisan app:ask-bot-cfe-rates --region=all --year=<AAAA> --month=<MM> --rate=<tarifa> |
Comandos
| Comando | Qué hace |
|---|---|
app:import-rates-from-csv --filename= | Carga las tarifas del mes desde un archivo CSV. |
app:calculate-rate-command --rmu= --period= --owner= | Calcula la tarifa CFE de un centro de carga para un periodo y participante. |
app:ask-bot-cfe-rates --region= --year= --month= --rate= [--state= --municipality= --division=] | Publica una solicitud por región en la cola del bot. --region=all cubre todas. |
queue:work <conexión de almacenamiento> | Consume los trabajos de guardado de tarifas. |
queue:work <conexión de respuestas> | Consume las respuestas del bot y guarda las tarifas devueltas. |
Tarifas soportadas: gdmth, dist, dit, pdbt.
En producción los workers los gestiona Supervisor; no lanzarlos a mano salvo para diagnóstico.
Dos comandos no aparecen en el repositorio
app:import-rates-from-csv y app:calculate-rate-command se ejecutan en producción, pero no existen en la rama principal de este repositorio, que solo declara app:ask-bot-cfe-rates. El cálculo de tarifas sí existe ahí, pero como acción de API, no como comando de consola.
Puede ser trabajo sin integrar a la rama principal, o un despliegue que difiere del repositorio. Hasta aclararlo, ambos comandos quedan documentados según la operación, no verificados contra código.
Carga de un archivo de tarifas
Subir un CSV de tarifas desde la interfaz web dispara el cálculo de la tarifa compuesta por división y tipo, y publica un trabajo de almacenamiento por cada combinación.
Es una operación de volumen: verificar que el worker de almacenamiento esté arriba antes de cargar un archivo grande.
Verificaciones
| Qué | Cómo |
|---|---|
| Los workers están arriba | El programa de este servicio aparece en RUNNING en Supervisor. |
| Las tarifas del periodo llegaron | Consultar las tarifas por año, mes, división y tipo. |
| No hay trabajos fallidos | php artisan queue:failed |
Si falla
| Síntoma | Causa probable | Acción |
|---|---|---|
| El cálculo de tarifa da un resultado anómalo | El consumo del centro de carga estaba incompleto. | Completar la demanda del mes y recalcular antes de que el cliente registre el contrato. |
| No hay tarifas del mes al calcular | El archivo CSV de CFE no se cargó. | Ejecutar app:import-rates-from-csv con el archivo del mes. |
| Se solicitaron tarifas y nunca llegaron | El bot falló, o el worker de respuestas está caído. | Verificar primero el worker; después revisar los logs de la Lambda. |
| Llegan algunas regiones y otras no | El bot falló en regiones específicas, típicamente por cambios en el portal. | Revisar los logs del bot para esas regiones. |
| El archivo de tarifas se cargó y no se guardó nada | El worker de almacenamiento está caído. | Revisar Supervisor y queue:failed. |
sy-energy no tiene tarifas de CFE | Verificar primero que existen aquí. | Si existen aquí, el problema está en la integración. |
Distinguir bot de worker
Ambos síntomas se ven igual — "no llegaron las tarifas" — y la causa es distinta. Verificar siempre el worker de respuestas antes de culpar al bot: es más barato y más frecuente.
Riesgos y gaps
- El registro de tarifas es manual. Depende de que alguien obtenga el archivo de CFE y lo cargue. No hay alerta si falta.
- Dos comandos de producción no están en la rama principal del repositorio.
- No hay verificación de que el consumo esté completo antes de calcular la tarifa, siendo esa la precondición del cálculo.
- No hay alerta cuando una solicitud al bot no recibe respuesta.
- No está documentado el tiempo esperado de respuesta del bot.
- No está documentado qué ocurre si se solicita o se calcula dos veces el mismo periodo.
Próxima revisión
Al aclarar la discrepancia de comandos con desarrollo.