You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Clore automatiquement les sorties à 4:00 et envoyer la notification du matin #140
Epic : #14
Maquette : E-07, E-15 · validée le 2026-09-25 Ecrans › E-07 · Ecrans › E-15 · Modele-de-Donnees · E-07, E-15 · D-033
Une sortie restée ouverte se clôt seule le lendemain, et une notification invite à la noter (D-033). Aucun ticket ne portait ces envois : #44 pose l'infrastructure push, pour les rappels J-1 et H-1 seulement.
Comportement attendu
Tâche planifiée, Cloud Scheduler vers un endpoint interne : à 4:00, heure de Paris, toute sortie encore en cours de la veille passe à completed, avec completed_at et closed_by = auto.
À 10:00 le même matin : notification go_closed, « Comment était « {titre} » ? », « Votre sortie d'hier est close. Une note aide les prochains visiteurs. », qui ouvre E-15. Envoyée seulement si la note est possible, c'est-à-dire la moitié des étapes faites, et pas encore donnée.
Tests, horloge injectée : une sortie ouverte la veille est close à 4:00 avec closed_by = auto ; une sortie terminée par l'utilisateur n'est pas touchée
Tests : la notification de 10:00 ne part que si la note est possible et pas encore donnée, et une seule fois
Heures en heure de Paris ; deux passages de suite ne closent ni ne notifient deux fois
Émet côté serveur go_completed avec route_id, duration_actual_min, steps_done_ratio et closed_by: auto pour chaque sortie close à 4:00 (typé dans packages/shared/src/analytics.ts depuis Instrumenter les événements analytics de la découverte #33)
📋 MANAGER — événement D-038 à émettre côté serveur par le job de 4:00 : plan_missed (route_id), selon Analytics › Action. Il n'est pas encore dans le catalogue packages/shared/src/analytics.ts (Inbox #4, découverte de #33) : l'y ajouter pour que client et serveur partagent le même schéma.
📋 MANAGER — critère venu de #33 : la PR #159 a typé et testé ces événements dans le catalogue strict packages/shared/src/analytics.ts, sans les émettre, faute d'écran. L'émission revient au ticket qui construit l'écran : critère ajouté au corps de ce ticket.
go_completed avec closed_by: auto (D-029, D-033). Seule la clôture automatique de 4:00 produit cette valeur, donc l'émission se fait côté serveur, comme plan_missed (commentaire du 25/09 plus haut). closed_by: user reste à Construire le parcours en cours et le lien Google Maps (E-07) #42.
Point ouvert : la page Analytics ne dit pas quelle valeur donner à duration_actual_min pour une sortie close automatiquement (jusqu'à 4:00, ou jusqu'à la dernière étape faite). Remonté pour DESIGN avant l'implémentation.
Activity
IlanAMG commentedon Sep 25, 2026
D-038 (https://github.com/Inprogress-Agency/widoo-app/wiki/Design-Changelog) : le job de 4:00 pose aussi le statut missed sur les sorties programmées de la veille jamais lancées.
PaulThiberville commentedon Sep 25, 2026
📋 MANAGER — événement D-038 à émettre côté serveur par le job de 4:00 :
plan_missed(route_id), selon Analytics › Action. Il n'est pas encore dans le cataloguepackages/shared/src/analytics.ts(Inbox #4, découverte de #33) : l'y ajouter pour que client et serveur partagent le même schéma.PaulThiberville commentedon Sep 29, 2026
📋 MANAGER — critère venu de #33 : la PR #159 a typé et testé ces événements dans le catalogue strict
packages/shared/src/analytics.ts, sans les émettre, faute d'écran. L'émission revient au ticket qui construit l'écran : critère ajouté au corps de ce ticket.go_completedavecclosed_by: auto(D-029, D-033). Seule la clôture automatique de 4:00 produit cette valeur, donc l'émission se fait côté serveur, commeplan_missed(commentaire du 25/09 plus haut).closed_by: userreste à Construire le parcours en cours et le lien Google Maps (E-07) #42.duration_actual_minpour une sortie close automatiquement (jusqu'à 4:00, ou jusqu'à la dernière étape faite). Remonté pour DESIGN avant l'implémentation.