Le CSV liste-stations-synop de Météo France arrive en CRLF, le split('\n')
laissait un \r en fin de chaque header → header.indexOf('name') = -1
→ stations[].name = undefined → 'station undefined' affiché côté front.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- normales.ts : computeAnomaly évalue 2 fenêtres (3j pour détecter un pic
récent, 7j pour la tendance lissée), retient la pire catégorie. Évite
de noyer un +15°C sur 3 jours dans 4 jours précédents normaux.
- FranceMap : max-w-3xl → max-w-5xl (1024px sur PC, plus lisible).
Mapping dept → station SYNOP (script build-stations-synop.mjs + json statique)
pour préparer l'intégration hourly via API Météo France officielle.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- scripts/build-normales.mjs : agrégation TN/TX mensuelles par dept sur
la période WMO 1991-2020 depuis les fichiers Q_<DEPT>_previous-1950-2024.
Output src/data/normales.json (78 KB, committé). Run annuel max.
- Corse : Météo France utilise le code historique "20" (avant split 2A/2B
en 1976), donc 2A et 2B partagent la même normale issue de Q_20_*.
- src/lib/normales.ts : computeAnomaly() qui moyenne TX/TN des 7 derniers
jours, compare à la normale du mois, calcule l'écart en °C et en σ,
catégorise (normal / warm / cool / anomaly_warm / anomaly_cool /
extreme_warm / extreme_cool / unknown).
- src/components/AnomalyBadge.astro : badge coloré (vert/jaune/orange/rouge)
visible sur /departement/[code] juste au-dessus du graphe T°.
Différencie "il fait chaud" de "il fait anormalement chaud pour ce mois".
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Astro 5 SSR + ioredis cache Valkey, déployable sur shared-net.
- Vigilance temps réel via Opendatasoft (no-auth, LOv2)
- Carte SVG des 96 départements (gregoiredavid/france-geojson)
- Climato T° 30j par dept (CSV.GZ Météo France, cache 24h)
- Conseils officiels par phénomène (7 types Vigilance)
- /api/health (UptimeRobot) + /api/vigilance (JSON public CORS *)
- Dockerfile multi-stage, CI Forgejo deploy.yml (pattern Reteno)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>