Todos los servicios › fleet-reports
106302 Un informe programado no se generó en su periodo (se reintenta)
INFORME_NO_GENERADO_EN_SU_VENTANA
El servicio tiene este código declarado, pero todavía no lo emite.
Qué ha pasado
La generación es idempotente por (suscripción, periodo): un run marca cada intento. Si un periodo falla (fuente caída) o queda HUÉRFANO (el proceso murió entre reclamar y persistir), no se da por hecho: el siguiente tick, o el catch-up, lo reintenta. Lo que nunca pasa es un hueco permanente silencioso ni una doble generación por dos intentos concurrentes.
Cómo se soluciona
Normalmente se resuelve solo en el siguiente ciclo. Si un periodo NO aparece tras el catch-up, mirar por qué la fuente falló repetidamente (los códigos 106900+). El catch-up declara lo que excede su ventana, nunca lo omite en silencio.
Qué hacer mientras tanto
El periodo pendiente se recupera en el siguiente tick/catch-up; no hay que regenerarlo a mano.
Ya costó tiempo
2026-08-09 · run huérfano dejaba un hueco permanente (F-02); y dos claims concurrentes ganaban ambos → doble generación + aviso duplicado (F3-01), resuelto refrescando created_at para que el row-lock de Postgres serialice.
Dónde se lanza
scheduler.py — _finish_run(...'failed'), _claim_run (re-reclamo de 'failed'/huérfano), _pending_periods
El número viaja en la respuesta o en el registro: todavía no.
Cómo se lee el código
1- origen: Fortiseg
06- servicio: fleet-reports
302- error propio del servicio