Site d utilite publique - Vigilance Meteo France temps reel
Find a file
Florian cb8d111a12
Some checks are pending
Deploy info-canicule / deploy (push) Waiting to run
feat: normales journalières + dedupe SYNOP + carte plus large
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>
2026-05-26 01:43:10 +02:00
.forgejo/workflows init: info-canicule MVP (Vigilance + climato + conseils) 2026-05-25 18:17:56 +02:00
data-sources init: info-canicule MVP (Vigilance + climato + conseils) 2026-05-25 18:17:56 +02:00
public feat: OG png + sentry + dept api + drom notice + registre canicule 2026-05-25 20:59:11 +02:00
scripts feat: normales journalières + dedupe SYNOP + carte plus large 2026-05-26 01:43:10 +02:00
src feat: normales journalières + dedupe SYNOP + carte plus large 2026-05-26 01:43:10 +02:00
tests/e2e test: E2E onglet 24h + station PARIS-MONTSOURIS (sentinelle MF API live) 2026-05-26 00:43:29 +02:00
.dockerignore init: info-canicule MVP (Vigilance + climato + conseils) 2026-05-25 18:17:56 +02:00
.env.example refactor(mf): API Key longue durée au lieu d OAuth2 client_credentials 2026-05-26 00:25:54 +02:00
.env.tmpl refactor(mf): API Key longue durée au lieu d OAuth2 client_credentials 2026-05-26 00:25:54 +02:00
.gitignore feat: graph T° interactif + widget iframe + MF auth + E2E Playwright 2026-05-26 00:14:05 +02:00
astro.config.mjs feat: OG png + sentry + dept api + drom notice + registre canicule 2026-05-25 20:59:11 +02:00
CLAUDE.md refactor(mf): API Key longue durée au lieu d OAuth2 client_credentials 2026-05-26 00:25:54 +02:00
docker-compose.yml init: info-canicule MVP (Vigilance + climato + conseils) 2026-05-25 18:17:56 +02:00
Dockerfile init: info-canicule MVP (Vigilance + climato + conseils) 2026-05-25 18:17:56 +02:00
Makefile fix(makefile): make env -f pour overwrite (pass-cli v2 ne force pas par défaut) 2026-05-26 00:18:10 +02:00
package.json feat: graph T° interactif + widget iframe + MF auth + E2E Playwright 2026-05-26 00:14:05 +02:00
playwright.config.ts feat: graph T° interactif + widget iframe + MF auth + E2E Playwright 2026-05-26 00:14:05 +02:00
pnpm-lock.yaml feat: graph T° interactif + widget iframe + MF auth + E2E Playwright 2026-05-26 00:14:05 +02:00
README.md doc: roadmap updated post-MVP go-live 2026-05-25 18:40:54 +02:00
tailwind.config.mjs feat: tooltip carte + tri/group alertes + safelist couleurs + legal Nocleus 2026-05-25 20:23:02 +02:00
tsconfig.json init: info-canicule MVP (Vigilance + climato + conseils) 2026-05-25 18:17:56 +02:00

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.).

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