Carte de tension
1. Carte de tension (indexation H3)
Section titled “1. Carte de tension (indexation H3)”1.1 En un coup d’œil
Section titled “1.1 En un coup d’œil”1.2 Comment ça marche
Section titled “1.2 Comment ça marche”1.3 Choix de conception (ADR)
Section titled “1.3 Choix de conception (ADR)”1.4 Invariants & modes de panne
Section titled “1.4 Invariants & modes de panne”1.5 Scalabilité
Section titled “1.5 Scalabilité”Périmètre — fichiers & dépendances
Section titled “Périmètre — fichiers & dépendances”Fichiers
Services/TensionMapService— l’orchestrateur : calcule la tension autour d’un point (GEORADIUSmissions →SMEMBERShexagones →HMGETcompteurs), et réagit à l’ouverture, au déplacement et à la fermeture des missions.Services/RedisCache/TensionCacheService— les compteurs de tension par hexagone dans Redis (tension:hex:counts), incrémentés/décrémentés à chaque mission (HINCRBY).Services/H3ClientService— appelle le service externe H3 (services.h3.url) pour convertir une zone en hexagones (gridDisk).Jobs/TensionMapJobs/*— recalcul asynchrone de la tension à l’ouverture, au déplacement et à la fermeture d’une mission.Events/TensionEvents/*—TensionUpdatedEvent,TensionRefreshedEvent: diffusion des changements de tension (broadcast mis en file).
Dépendances
- Redis — les compteurs par hexagone (
tension:hex:counts) et les sets d’hexagones par mission. - H3 (service externe
h3:3000) — l’indexation hexagonale du territoire. - Géo & cache chaud — réutilise le GeoSet des missions (
GEORADIUS) pour trouver les missions d’un rayon (voir la page dédiée). - MySQL — source de vérité pour la réhydratation (recalcul depuis les missions ouvertes).
- Queue (Horizon) — le recalcul de tension tourne en jobs asynchrones.
Nature — une feature produit (la carte de chaleur de la demande, affichée aux workers). Elle consomme la couche Géo & cache chaud et pousse ses mises à jour au front en WebSocket. Ce n’est pas une couche transverse, c’est un domaine à part entière.