Repository navigation
Description
📋 Description
Mettre en place le job planifié (apps/jobs) qui orchestre l'ensemble du calcul de scoring pour les zones H3 d'une région : récupération des features par zone × période depuis la base, calcul des sous-indices (#41), calcul de l'indice global (#43), puis stockage dans stress_score_by_zone (indice global + sous-indices + métadonnées). C'est le point d'entrée opérationnel du système de scoring.
Idempotence : clé unique (zone_id, bucket_id, score_method), écriture en UPSERT (pas de doublon au recalcul). Traçabilité : date/heure, méthode utilisée, nb de zones traitées, erreurs — via les logs structurés. Planification : recalcul tous les deux mois, calé sur la fréquence de mise à jour des données satellites (source la plus dynamique) ; OSM/espèces/protection utilisent leur dernière version disponible.
✅ Acceptance Criteria
- Le job de calcul du score peut être exécuté via la CLI
- Le job orchestre correctement l'ensemble du workflow de calcul
- Les sous-indices et l'indice global sont calculés pour chaque zone
- Les résultats sont stockés dans
stress_score_by_zone - Le job est idempotent (clé
(zone_id, bucket_id, score_method), UPSERT) - La planification d'exécution est configurée (tous les deux mois)
- Les logs d'exécution permettent de suivre le calcul
🔗 Prerequisite Issues
- Depends on 1. Calcul des sous-indices #41 (DoR : « les fonctions de calcul des sous-indices sont implémentées »)
- Depends on 2. Construction des méthodes de calcul de l'indice global #43 (DoR : « les méthodes de calcul de l'indice global sont disponibles »)
Foundations communes (le job ne contourne pas les outils communs) :
- Idempotence & Exécution #21 (Idempotence & Exécution —
job_runs, clés d'idempotence) - Logging Backend Python #16 (Logging Backend Python — logs JSON structurés)
- Normalisation temporelle (core.time_bucket) #17 (Normalisation temporelle —
bucket_id/period) - Init DB #12 (Init DB — table
stress_score_by_zoneet contrainte d'unicité) - Mise en place des jobs avec systemd timers #27 (systemd timers — planification de l'exécution)
La méthode score_method utilisée par défaut est celle retenue par #45.
Source : Notion « 6. Industrialisation du calcul des scores » (Indices & Analyses).
Activity