feat: ingestion automatique toutes les 6h + indicateur fraîcheur UI

- Symfony Scheduler (MainSchedule) : cron 0,6,12,18h UTC
- IngestionScheduleMessage + IngestionScheduleHandler : pipeline complet
  ingestion → forecasts → impact scores pour toutes les zones Antilles
- messenger.yaml : transport scheduler_main + async Redis (rs971_async)
- entrypoint.sh : 2 workers en background (scheduler_main + async)
- GET /api/status : date/heure de la dernière observation
- SargassesMap : badge "Données du JJ/MM à HH:MM" en bas à gauche

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Gwadaking
2026-04-03 22:31:58 -04:00
parent 55caca001c
commit 48e6e5060c
9 changed files with 223 additions and 0 deletions

View File

@@ -0,0 +1,20 @@
framework:
messenger:
transports:
# Transport du scheduler — traité en synchrone dans le worker scheduler_main
scheduler_main:
dsn: 'scheduler://main'
# Transport async Redis pour les messages lourds (ingestion)
async:
dsn: '%env(REDIS_URL)%'
options:
stream: rs971_async
retry_strategy:
max_retries: 3
delay: 60000 # 1 min entre chaque retry
multiplier: 2
routing:
# L'ingestion planifiée tourne dans le worker async (pas dans le worker scheduler)
App\Message\IngestionScheduleMessage: async