Skip to content

Calculer les transitions entre étapes (Directions + cache) dans packages/orchestration #34

Closed

Description

@IlanAMG

Contexte

Epic : #9
Orchestration · D-002

Comportement attendu

  • Module pur computeTransitions(steps, transport) avec un fournisseur de directions injectable (Mapbox Directions walking/cycling/driving, estimation métro par coefficient, repli vol d'oiseau × 1,3 marqué estimated).
  • Cache Postgres direction_cache par paire de coordonnées arrondies et profil, invalidé au déplacement d'un lieu. Durée de stockage : vérifier dans les CGU Mapbox la durée autorisée ; à défaut, expiration de 30 jours (D-032).
  • Résultat par transition : distance_m, duration_min, mode, estimated, et geometry : l'itinéraire renvoyé par Directions (polyline encodée), mis en cache avec la transition, absent quand la transition est estimated. Il sert au tracé du parcours le long des rues sur la carte (Tracer le parcours sélectionné le long des rues (E-04) #154, retour de recette d'Ilan du 25 septembre).

Critères d'acceptation

  • Tests unitaires avec fournisseur simulé : cache hit, repli, chaque mode
  • La géométrie de chaque transition est mise en cache et relue avec sa durée ; absente pour une transition estimated
  • Aucune dépendance à Fastify ou Drizzle dans le module (interfaces injectées)
  • Durée de stockage des réponses Directions vérifiée dans les CGU Mapbox et citée dans la PR ; 30 jours à défaut

Activity

  1. added this to the v0.3 milestone on Sep 21, 2026
  2. IlanAMG commented on Sep 25, 2026

    @IlanAMG
    MemberAuthor

    D-048 (https://github.com/Inprogress-Agency/widoo-app/wiki/Design-Changelog) : le mode de déplacement se choisit par trajet (steps.transition.mode), proposé selon la distance : à pied jusqu'à 1,5 km, métro au-delà ; modifiable par le créateur. Calculer chaque transition dans le mode de son trajet. Voir Orchestration. Schéma : #176.

  3. PaulThiberville commented on Oct 13, 2026

    @PaulThiberville
    Collaborator

    🔨 Démarrage — plan :

    • Branche issue/34-transitions-directions-cache, une seule PR Fixes #34, niveau 2 attendu (migration additive, appel sortant nouveau, donnée persistée).
    • Commit 1 : table direction_cache dans apps/api/src/db/schema.ts et migration Drizzle additive (paire de coordonnées arrondies à 5 décimales + profil, distance, durée, polyline, date d'expiration).
    • Commit 2 : packages/orchestration : computeTransitions(steps, transport) pur, interfaces injectées (fournisseur de directions, cache), profils walking / cycling / driving, métro par coefficient (1,4 × vol d'oiseau à 20 km/h + 8 min), repli vol d'oiseau × 1,3 à 4,5 km/h marqué estimated, mode de chaque trajet (D-048, proposé à pied jusqu'à 1,5 km, métro au-delà). Tests avec fournisseur simulé.
    • Commit 3 : côté API, fournisseur Mapbox Directions (jeton serveur, délai, échecs journalisés sans URL) et cache Drizzle (lecture, écriture, expiration, oubli des trajets d'un lieu déplacé), tests sur widoo_test.
    • Commit 4 : doc (.env.example, README si besoin).

    Point à trancher en cours : la durée de conservation autorisée par les CGU Mapbox pour les réponses Directions (D-032), citée dans la PR.

  4. PaulThiberville commented on Oct 14, 2026

    @PaulThiberville
    Collaborator

    📋 MANAGER (2026-10-14) : report de D-088 (décision d'Ilan sur #378). Ce ticket est livré ; ce qu'il a posé reste en place, avec son cache désactivé : MAPBOX_DIRECTIONS_CACHE_DAYS reste à 0 et direction_cache reste vide (amende D-032, plus de cache de 30 jours à défaut). computed et steps.transition ne rangent que nos estimations ; les trajets exacts et leur géométrie sont demandés à Mapbox à l'ouverture d'un parcours, pour la réponse seulement (#36, #154). Aucune action de code sur ce ticket.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions