Site d utilite publique - Vigilance Meteo France temps reel
|
Some checks are pending
Deploy info-canicule / deploy (push) Waiting to run
3 fixes en un :
1. lib/observations.ts : dedupe par validity_time sur le parse hourly.
L API MF SYNOP retourne chaque obs en doublon exact sur les ranges
multi-step (bug gateway WSO2). Constaté 7/8 paires identiques sur 24h.
2. Normales 1991-2020 passées de mensuelles à journalières (lissées 7j).
- scripts/build-normales.mjs : agrégation par day-of-year (1..366)
avec moving average ±3j pour stabiliser le bruit jour-à-jour.
- src/data/normales.json : 2.28 MB (vs 78 KB), 96 × 366 entrées.
- lib/normales.ts : normaleForDay/Date + normalesForRange, computeAnomaly
compare maintenant chaque jour observé à SA normale (pas à la moyenne
du mois) → bien plus précis sur les jours de transition mensuelle.
- TemperatureChartInteractive : overlay normales en COURBE qui suit
la saison (7j/30j) au lieu d une ligne horizontale unique.
24h reste ligne horizontale (normale du jour courant).
- Tooltip 7j/30j ajoute "↳ normale TX X°C (+Y)" pour montrer l écart
par point.
3. Carte sur la home libérée du container-tight (max-w-5xl = 1024px) :
wrapper dédié max-w-[1400px] → carte ~37% plus grande sur PC large.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
||
|---|---|---|
| .forgejo/workflows | ||
| data-sources | ||
| public | ||
| scripts | ||
| src | ||
| tests/e2e | ||
| .dockerignore | ||
| .env.example | ||
| .env.tmpl | ||
| .gitignore | ||
| astro.config.mjs | ||
| CLAUDE.md | ||
| docker-compose.yml | ||
| Dockerfile | ||
| Makefile | ||
| package.json | ||
| playwright.config.ts | ||
| pnpm-lock.yaml | ||
| README.md | ||
| tailwind.config.mjs | ||
| tsconfig.json | ||
info-canicule
Site d'utilité publique affichant les alertes Vigilance Météo France en temps réel et les conseils officiels en cas d'événements météo dangereux (canicule, orages, vent, etc.).
- Prod : https://info-canicule.nocleus.com
- Source données : meteo.data.gouv.fr via Opendatasoft (Licence Ouverte 2.0)
- Stack : Astro 5 SSR + Node adapter, TailwindCSS, ioredis (cache Valkey)
Dev local
make install
# Optionnel : Valkey local pour tester le cache
docker run -d --name valkey-dev -p 6379:6379 valkey/valkey:8-alpine
cp .env.example .env
make dev
Ouvrir http://localhost:4321.
Prod (VPS)
# Premier déploiement (depuis le VPS)
git clone git@git.nocleus.com:florian/info-canicule.git /opt/projects/info-canicule
cd /opt/projects/info-canicule
make env # matérialise .env depuis vault Infra
make up # build + start, joint shared-net, atteint `valkey:6379`
Les déploiements suivants passent par la CI Forgejo (push main → workflow deploy.yml).
Endpoints
/— carte Vigilance par département (J)/departement/<code>— détail dept (alertes J + J1 + conseils contextuels)/conseils— conseils officiels pour les 7 phénomènes Vigilance/api/health— JSON{status, cache, time}pour UptimeRobot/api/vigilance— JSON public du snapshot Vigilance courant (CORS *)
Structure
src/
├── layouts/Base.astro # shell HTML + header/footer
├── components/ # VigilanceChip, DepartementGrid, VigilanceLegend
├── lib/
│ ├── cache.ts # ioredis wrapper + cacheOrFetch helper
│ ├── vigilance.ts # fetch Opendatasoft + parse + maps utilitaires
│ ├── phenomena.ts # référentiel 7 phénomènes + couleurs
│ ├── departements.ts # liste INSEE des départements
│ └── advice.ts # conseils officiels par phénomène
└── pages/ # index, departement/[code], conseils, api/*
Roadmap
- Vraie carte SVG géographique (GeoJSON départements + paths)
- Historique T° (données climato base quotidiennes — CSV.GZ par département)
- Pages contenu (à propos, mentions légales, dépendances, soutenir)
- SEO (sitemap, robots, OG image, JSON-LD)
- Umami analytics (RGPD, sans cookies)
- SDK Sentry/GlitchTip côté Astro pour reporter les erreurs serveur (DSN déjà provisionné)
- Détail "qui appeler / s'inscrire au registre canicule" par mairie/préfecture
- Switch optionnel vers l'API Météo France officielle (plus fraîche que Opendatasoft)
- Section "comparer avec moyennes saisonnières" pour signaler les vagues de chaleur anormales