gigafibre-fsm/services/targo-hub
louispaulb 0542e525ea fix(dispatch): créneaux/occupation TIENNENT COMPTE DU TRAJET entre jobs
Le trajet entre jobs était compté comme du temps LIBRE → un tech dont la
journée est pleine de route entre villes (ex. Saint-Anicet ↔ Huntingdon)
paraissait « avoir de la place ». Corrigé aux 2 endroits :

- techOccupancy (bandes « Trouver un créneau » + resource_availability de
  l'assistant) : free_h = quart − occupé − TRAJET. Le trajet est estimé le
  long de la tournée (jobs pointés dans l'ordre horaire puis jobs sans heure
  à la suite — sinon une journée de jobs legacy sans heure paraît sans route),
  borné au temps restant (jamais négatif). Nouveaux champs travel_h (jour+total).
- suggestSlots : réserve le trajet RÉEL — arriver depuis le job précédent ET
  repartir vers le job suivant (avant : buffer fixe 15 min à l'avant seulement,
  le travelMin calculé n'était qu'affiché). Bord = début/fin de quart → 0 ;
  bord = job → trajet estimé (coords) ou repli 15 min si coords du nouveau job
  inconnues. Un créneau n'est offert que si le trou contient arrivée+job+départ.

Helper travelH() partagé (barème existant ≈ dist×1,5 min/km, borné 5–90).
Vérifié live : Houssam Nabout lun 20/07 (5 jobs 2 villes) passe de « 1 h libre /
90% » à « 0 h libre / 100% plein » ; techs à 1 job ou même lieu → trajet 0.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-20 07:38:30 -04:00
..
data refactor: reduce token count, DRY code, consolidate docs 2026-04-13 08:39:58 -04:00
docs feat(fsm): platform build — comms UI, F→ERPNext sync/billing, roster, campaigns, network, reports 2026-06-15 06:12:12 -04:00
lib fix(dispatch): créneaux/occupation TIENNENT COMPTE DU TRAJET entre jobs 2026-07-20 07:38:30 -04:00
preview feat: flow editor, Gemini QR scanner with offline queue, dispatch planning v2 2026-04-22 10:44:17 -04:00
public feat(field-app): refonte accessibilité terrain (gros texte/contraste/cibles + flux guidé) 2026-07-19 10:23:19 -04:00
scripts feat(ops+hub): sender picker, per-user notifs, editable rating emails, planif & tickets UX 2026-06-16 22:41:51 -04:00
templates feat(ops+hub): sender picker, per-user notifs, editable rating emails, planif & tickets UX 2026-06-16 22:41:51 -04:00
test Phase 1 (hygiène) : utils partagés + logique pure testable + observabilité erp + 1ers tests 2026-06-07 10:36:41 -04:00
.env.example feat(hub+ops): user invite flow sends temp password via Mailjet + dev .env.example 2026-05-05 19:50:06 -04:00
docker-compose.yml fix(hub): templates volume mount must be RW for editor saves 2026-05-22 06:49:48 -04:00
package-lock.json feat(campaigns/editor): MJML mode — proper email-focused visual builder 2026-05-21 22:29:42 -04:00
package.json Phase 1 (hygiène) : utils partagés + logique pure testable + observabilité erp + 1ers tests 2026-06-07 10:36:41 -04:00
server.js chore(reconcile): commit MES hunks déployés dans les fichiers co-édités (split via git apply --cached) 2026-07-19 20:06:47 -04:00