Repository navigation
Décider du stockage des réponses Mapbox Directions au regard des Product Terms #378
Copy link
Copy link
Closed
Labels
area:orchestrationpackages/orchestrationpackages/orchestrationneeds-designQuestion ou maquette à produire en mode DESIGNQuestion ou maquette à produire en mode DESIGNprio:P0BloquantBloquanttype:choreOutillage, infra, processOutillage, infra, process
Milestone
Description
Contexte
Epic : #9
Orchestration › Transitions · Orchestration › Recalcul périodique · D-032 · D-002
Maquette : sans objet — décision de produit et de conformité, aucun écran
Décision attendue d'Ilan, puis reportée dans le wiki par DESIGN (entrée D-xxx). CODE ne prend pas ce ticket.
La PR #377 (#34) a vérifié les Mapbox Product Terms dans leur version du 21 juillet 2026 :
- § 2.10.1 Navigation APIs : « Customer shall not export, download, cache or store results from any request to a Navigation API. » Directions est une Navigation API.
- § 1.9 Default Restrictions (v) : « not export, download, cache or store Licensed Map Content or other results from the Service Offerings » ; et (i)/(ii) : requêtes seulement en réponse à une interaction humaine, pas de requêtes automatisées en masse.
- Aucune durée de conservation autorisée pour Directions ; le délai de 30 jours du § 2.8.1 ne vise que le cache sur l'appareil des tuiles.
Conséquences :
- La PR livre la table
direction_cachedésactivée :MAPBOX_DIRECTIONS_CACHE_DAYS=0par défaut (30 au plus si un accord le permet), comme D-081 pour le géocodage. - D-032 (expiration de 30 jours à défaut) et le ticket Calculer les transitions entre étapes (Directions + cache) dans packages/orchestration #34 (« cache Postgres ») sont en contradiction avec les CGU.
- La même clause vise le stockage des transitions et de la géométrie :
steps.transition,routes.computed(Calculer agrégats, timeline et règles de cohérence #35), géométrie exposée (Exposer GET /routes/:id et /routes/:id/timeline, stocker computed #36) pour le tracé le long des rues (Tracer le parcours sélectionné le long des rues (E-04) #154). - Le recalcul nocturne (Planifier le recalcul nocturne et le passage en needs_fix #56), s'il redemande Directions, est une requête automatisée (§ 1.9).
Découvertes de CODE : #4 (comment) · #4 (comment)
Comportement attendu
Ilan tranche entre :
- (a) accord écrit de Mapbox (« Order ») pour un stockage borné, puis réglage de
MAPBOX_DIRECTIONS_CACHE_DAYS; - (b) calcul à la volée à chaque ouverture de fiche, sans stockage : coût API à la requête (9 requêtes au plus par parcours, limite de 300 par minute) et latence ;
- (c) stocker seulement ce qui n'est pas un « résultat » Mapbox (durée et distance estimées par nos coefficients) et demander la géométrie à la volée ;
- (d) autre fournisseur de directions (OSRM ou GraphHopper sur OpenStreetMap, auto-hébergé ou chez un fournisseur qui permet le stockage) : nouveau sous-traitant ou infrastructure en plus ;
- ou une autre option.
Critères d'acceptation
- Option retenue par Ilan, avec sa raison et ce qu'elle écarte, consignée dans ce ticket
- Pages wiki Orchestration (Transitions, Recalcul périodique) et, si besoin, Modele-de-Donnees et API mises à jour par DESIGN, annoncées par une entrée
D-xxxqui amende D-032 - Calculer agrégats, timeline et règles de cohérence #35, Exposer GET /routes/:id et /routes/:id/timeline, stocker computed #36, Planifier le recalcul nocturne et le passage en needs_fix #56 et Tracer le parcours sélectionné le long des rues (E-04) #154 relus par MANAGER au regard de la décision, puis débloqués ou amendés
Notes techniques
- Si le cache est un jour activé (option a) :
forgetTripsOf(db, anciennePosition)(apps/api/src/directions/cache.ts, PR feat(orchestration): calculer les transitions entre étapes #377) n'a pas d'appelant ; le ticket qui déplacera un lieu (édition deplaces.location) devra l'appeler dans la même transaction, et une purgedelete … where expires_at < now()sera à prévoir, par exemple dans le job de nuit (Planifier le recalcul nocturne et le passage en needs_fix #56). Tant queMAPBOX_DIRECTIONS_CACHE_DAYSvaut 0, la table reste vide (découverte de CODE).
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
area:orchestrationpackages/orchestrationpackages/orchestrationneeds-designQuestion ou maquette à produire en mode DESIGNQuestion ou maquette à produire en mode DESIGNprio:P0BloquantBloquanttype:choreOutillage, infra, processOutillage, infra, process
Activity
IlanAMG commentedon Oct 14, 2026
Décision d'Ilan, le 14 octobre 2026 : option (c). Consignée par l'agent à sa demande.
Ce qui est retenu
MAPBOX_DIRECTIONS_CACHE_DAYSreste à 0 : la tabledirection_cachereste vide.Raison : conforme aux Product Terms de Mapbox (§ 2.10.1 et § 1.9) dès maintenant, sans contrat à négocier, sans nouveau fournisseur, et sans aucune requête automatique vers Mapbox.
Écarté
Conséquence acceptée : la durée d'une card (estimée) peut différer de quelques minutes de celle de la fiche (exacte). Piste à préciser dans le wiki : arrondir la durée affichée sur les cards.
Suite : mise à jour du wiki (Orchestration › Transitions et Recalcul périodique, et au besoin Modele-de-Donnees et API) avec une entrée
D-xxxqui amende D-032 ; puis relecture de #35, #36, #56 et #154 au regard de la décision.IlanAMG commentedon Oct 14, 2026
Décision reportée le 14 octobre 2026, les trois critères sont tenus :
Wiki : D-088, qui amende D-032. Pages mises à jour : Orchestration › Transitions, Recalcul périodique et Ce que voit l'utilisateur final ; Modele-de-Donnees (
steps.transition,computed, tabledirection_cachedécrite comme désactivée) ; API (GET /routes/:id,/routes/:id/timeline).Tickets amendés :
Les trois premiers n'avaient que ce ticket pour bloqueur.
À confirmer par Ilan, noté dans D-088 : les coefficients provisoires du vélo (× 1,3 à 15 km/h) et de la voiture (comme le métro), et l'arrondi des durées affichées sur les cards.