Skip to content

Calculer agrégats, timeline et règles de cohérence #35

Closed

Description

@IlanAMG

Contexte

Epic : #9
Orchestration · D-002

Débloqué le 2026-10-14 par D-088 (décision d'Ilan sur #378) : computed et steps.transition ne rangent que nos estimations de trajet (vol d'oiseau × un coefficient par mode, Orchestration › Transitions), jamais une réponse de Mapbox Directions. computeRoute reçoit ces transitions estimées ; la timeline de la fiche peut recevoir les trajets exacts demandés à Mapbox pour la réponse (#36).

Comportement attendu

  • computeRoute(input) → computed (durée, budget par personne : la somme exacte, sans minimum ni maximum (D-032) ; l'arrondi aux 5 € se fait dans l'app à l'affichage, jamais dans computed ni dans l'API (D-066), distance, marche, effort, buckets, filtres dérivés) et timeline(startsAt) avec conflits d'horaires (closed_at_arrival, closed_that_day, closes_during_step, hours_unknown).
  • Toutes les règles du tableau de la page wiki avec leur niveau ; seuils conservés, lus dans settings et réglables sans déploiement, injectés dans le module (D-032).
  • Proposition « Réordonner » par plus proche voisin quand back_and_forth se déclenche.

Critères d'acceptation

  • Une fixture par règle, bloquante et non bloquante
  • Timeline correcte avec coupure du midi et jour de fermeture
  • Couverture du package supérieure à 90 %
  • Changer un seuil dans settings modifie le résultat d'une règle sans redéploiement

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) : la timeline part de routes.suggested_start s'il est renseigné (sinon 10 h / 14 h / maintenant) ; routes.transport est dérivé des trajets (mode qui couvre le plus de distance, les autres en valeurs secondaires du filtre). Voir Orchestration. Schéma : #176.

  3. IlanAMG commented on Sep 25, 2026

    @IlanAMG
    MemberAuthor

    D-049 (https://github.com/Inprogress-Agency/widoo-app/wiki/Design-Changelog) : nouvelle règle missing_step_photo (bloquante pour la publication seulement) ; closed_at_arrival propose une heure de départ compatible ; back_and_forth : « Réordonner » applique l'ordre par plus proche voisin, annulable ; pas de hours_unknown pour un lieu places.always_open. Voir https://github.com/Inprogress-Agency/widoo-app/wiki/Orchestration.

  4. IlanAMG commented on Sep 25, 2026

    @IlanAMG
    MemberAuthor

    D-050 (https://github.com/Inprogress-Agency/widoo-app/wiki/Design-Changelog) : départ calculé quand suggested_start est vide (heure la plus proche de 10:00, 14:00 en demi-journée, où chaque lieu est ouvert) ; suggestions « À prévoir » calculées dans computed (tips_hidden pour celles désactivées) ; règles ended_place / ended_step au recalcul de nuit. Accès IDFM : #180. Voir https://github.com/Inprogress-Agency/widoo-app/wiki/Orchestration.

  5. IlanAMG commented on Sep 25, 2026

    @IlanAMG
    MemberAuthor

    D-052 (https://github.com/Inprogress-Agency/widoo-app/wiki/Design-Changelog) : la timeline doit porter la date de fin effective de chaque étape (steps.ends_on, sinon places.ends_on) et signaler une étape terminée ; E-06 a besoin de la dernière date possible pour une sortie.

  6. added
    status:blockedBloqué, voir commentaire ⛔
    and removed
    status:readySpec complète, prêt à coder
    on Oct 13, 2026
  7. added
    status:readySpec complète, prêt à coder
    and removed
    status:blockedBloqué, voir commentaire ⛔
    on Oct 14, 2026
  8. PaulThiberville commented on Oct 14, 2026

    @PaulThiberville
    Collaborator

    Note de CODE (#420, pour #48) : l'éditeur a besoin des règles bloquantes à la soumission ; la PR livre donc evaluateRoute(route, now, thresholds) dans packages/orchestration/src/evaluate.ts, à étendre ici plutôt qu'à doubler. Couvert : agrégats de computed (durée, budget exact, distance, marche, effort), missing_title (code ajouté), min_steps, max_steps, step_has_duration, transition_too_long (avertissement, bloquant au double), total_too_long, too_many_transitions, duplicate_place, missing_description, missing_photo, missing_step_photo. Seuils du wiki par défaut, injectés (CoherenceThresholds) mais pas encore lus dans settings. Restent pour ce ticket : la lecture des seuils dans settings, closed_at_arrival (et l'heure proposée), unverified_place, back_and_forth (et « Réordonner »), les filtres dérivés (no_booking, indoor, outdoor), le départ calculé, les paliers lus dans settings. L'API l'appelle depuis apps/api/src/editor/workspace.ts (evaluate).

  9. PaulThiberville commented on Oct 14, 2026

    @PaulThiberville
    Collaborator

    🔨 Démarrage — plan :

    Branche issue/35-route-coherence-engine, empilée sur issue/379-fallback-speed-per-mode (table estimateOfMode, D-088) ; la PR aura cette branche pour base.

    1. packages/orchestration, timeline : départ par défaut (10 h, 14 h pour une demi-journée), départ calculé le plus proche où chaque lieu est ouvert à l'arrivée (D-050), lieu « Accessible à toute heure » sans hours_unknown (D-049).
    2. packages/orchestration, computeRoute : étend evaluateRoute (Gérer PUT /routes/:id/steps, submit, statuts et lien privé #48) sans le doubler ; ajoute paliers, filtres dérivés (no_booking, indoor, outdoor), transport dérivé, step_has_place, closed_at_arrival avec heure proposée, unverified_place, back_and_forth avec ordre « Réordonner » par plus proche voisin.
    3. Seuils des règles et paliers lus depuis settings (une clé par seuil, valeur absente ou invalide = valeur du wiki), injectés dans le module.
    4. apps/api, commit à part : l'éditeur lit les seuils dans settings à chaque évaluation (effet immédiat, sans redéploiement), et range dans computed les nouveaux champs.

    Hors de ce ticket, signalé dans la PR : accès IDFM (#180), suggestions « À prévoir », ends_on (colonnes de #176 pas encore là).

  10. PaulThiberville commented on Oct 14, 2026

    @PaulThiberville
    Collaborator

    📋 MANAGER (2026-10-14) : puce computeRoute amendée : computed porte le budget par personne exact, l'arrondi aux 5 € est fait par l'app à l'affichage (D-066), comme corrigé sur #36.

  11. PaulThiberville commented on Oct 14, 2026

    @PaulThiberville
    Collaborator

    Déployé et vérifié en staging le 2026-10-14 (lecture des journaux, à la demande de Paul) : deploy-staging.yml vert sur 48bad0f (PR #439, run 38587275000, fini à 15:14:25Z), exécution widoo-api-migrate-sflxl réussie, santé de la nouvelle révision et du service ok. Status « Terminés ». Rappel : les coefficients vélo et voiture restent « à confirmer » par Ilan (D-088) ; les interprétations de la page Orchestration sont suivies par #457.

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