Operación de mem-api
Cuándo usar este documento
Para verificar que la sincronización de precios está corriendo, o para recuperar un periodo faltante.
Audiencia
Soporte y desarrollo.
Estado documental
- Estado: Borrador
- Última actualización: 2026-08-02
- Owner: Pendiente
- SME requerido: desarrollo
- Fuente resumida: scheduler y comandos del repositorio.
Tareas recurrentes
Todas en zona horaria America/Mexico_City.
Diarias
| Hora | Tarea | Comando |
|---|---|---|
| 05:00 | Sincroniza nodos de MTR con 7 días de desfase | sync:node --type=node --market=mtr --date=<hoy-7> |
| 05:10 | Sincroniza nodos de MDA del día | sync:node --type=node --market=mda --date=<hoy> |
| 05:10 | Sincroniza zonas de carga de MDA del día | sync:node --type=charge_zone --market=mda --date=<hoy> |
Dos desfases distintos
MDA se sincroniza el mismo día: son precios del día siguiente, ya publicados.
MTR se sincroniza con 7 días de desfase: son precios de la operación real, que CENACE publica después. Confundirlos lleva a reportar un faltante que no existe.
Cada hora, en ventana
Disparo del bot que descarga los reportes de CENACE:
| Ventana | Frecuencia | Tarea |
|---|---|---|
| 17:00 – 22:00 | Cada hora, en punto | bot:sync-prices --system=SIN --report=nodes --market=mtr |
| 17:00 – 22:30 | Cada hora, al minuto 10 | bot:sync-prices --system=SIN --report=nodes --market=mda |
La ventana de la tarde corresponde al horario en que CENACE publica. Reintentar cada hora cubre publicaciones tardías sin machacar el portal todo el día.
Solo SIN está programado
Las tareas automáticas cubren únicamente el sistema SIN. Los sistemas BCA y BCS están soportados por los comandos pero no se sincronizan automáticamente. Si se requieren, hay que ejecutarlos a mano — o es un gap por resolver.
Comandos
| Comando | Qué hace |
|---|---|
sync:node --type= --slug= --system= --market= --date= --ending_at= | Sincroniza datos de nodos o zonas de carga desde la API de CENACE. --type es obligatorio: node o charge_zone. Sin --date usa ayer. |
bot:sync-prices --market= --report= --date= --system= --retry= | Llama al bot que descarga los reportes de CENACE. --report: marginals, nodes o services. |
sync:commodity --slug= --currency= --date= --ending_at= | Sincroniza precios de insumos. Por omisión gas natural en dólares, del día en curso. |
dispatch:commodity --slug= --currency= --date= --ending_at= | Encola la sincronización de insumos. |
token:create | Administra los tokens de acceso a la API. |
Los comandos que aceptan --ending_at procesan un rango de fechas: útil para recuperar un periodo, y con efecto multiplicador si el rango es largo.
Verificaciones
| Qué | Cómo |
|---|---|
| El scheduler está vivo | Existe la entrada de cron de este servicio en el servidor. |
| El worker está arriba | El programa de este servicio aparece en RUNNING en Supervisor. |
| Llegaron los precios del día | Consultar los precios de la fecha esperada, respetando el desfase de cada mercado. |
| No hay trabajos fallidos | php artisan queue:failed |
Recuperar un periodo
# Nodos de MDA para un rango
php artisan sync:node --type=node --market=mda --date=<Y-m-d> --ending_at=<Y-m-d>
# Nodos de MTR para un rango
php artisan sync:node --type=node --market=mtr --date=<Y-m-d> --ending_at=<Y-m-d>
# Zonas de carga
php artisan sync:node --type=charge_zone --market=mda --date=<Y-m-d> --ending_at=<Y-m-d>Si CENACE no publicó todavía, la sincronización no traerá nada: verificar la fecha contra el desfase antes de asumir una falla.
Si falla
| Síntoma | Causa probable | Acción |
|---|---|---|
| No hay precios del día | La fecha aún no corresponde por el desfase del mercado. | Verificar el desfase antes de investigar. |
| Faltan precios de varios días | El bot o la API de CENACE fallaron. | Revisar logs y recuperar el rango. |
| Faltan precios de BCA o BCS | No están programados. | Ejecutar a mano con --system=. |
| Los comandos corren sin efecto | El worker está caído. | Revisar Supervisor. |
sy-energy no tiene precios | El problema puede estar aquí o en la cadena previa. | Verificar primero que los precios existen en el MEM. |
Riesgos y gaps
- BCA y BCS no se sincronizan automáticamente.
- No hay alerta cuando falta un día de precios.
- No está documentado el volumen esperado por día, así que no hay forma de detectar una sincronización parcial.
- La ventana de la tarde asume el horario de publicación de CENACE; si cambia, no hay quien lo detecte.
Próxima revisión
Al confirmar el tratamiento de BCA y BCS con desarrollo.