Skip to content

Nettoyage et commentaires dans CreneauxBuilderService

Vincent Agnano requested to merge faster-search-creneaux into recette

Created by: n-b

refs #1754 (closed).

Le gain est marginal:

  • optimisation 1: dans Creneau#overlapping_rdvs_or_absences, maintenant on ne retourne que le dernier overlap, plutôt que la liste. Il faut quand même tous les calculer.
  • optimisation 2: dans CreneauxBuilderForDateService, où j’évite de refaire pour chaque jour la recherche des Rdv et Absence qui pourraient être en conflit.
  • J’ai aussi réécrit l’énumérateur dans CreneauxBuilderForDateService pour faire une bête boucle, au lieu de to_enum. Ça faisait une récursion un peu étrange, peut-être qu’il y aura un peu de gains en mémoire.

Le reste est surtout du commentaire.

Pour la suite:

  • La première piste d’amélioration, c’est d’éviter que FindAvailabilityService calcule tous les créneaux simplements pour en trouver un seul. Le problème, c’est que FindAvailabilityService se base lui-même sur CreneauxBuilderService (l’idée est de chercher les créneaux dans le futur jusqu’à en trouver un, c’est pas stupide du tout) mais ça retourne toute la liste alors qu’on ne veut que le premier.
  • Ensuite, on peut parler de cache. C’est pas trivial: le résultat dépend des Rdv, des Absences, des Motifs, des lieux et évidemment des dates cherchées, donc c’est pas facile d’avoir un cache complet (où la clé de cache est facile à calculer et change dès que les données sous-jacentes sont modifiées). L’alternative serait d’avoir un cache à 1 minute, pour optimiser les aller-retours sur les semaines, mais j’ai peur que ça soit rapidement problématique.

Checklist avant review:

  • reparcourir le code rapidement pour voir les problèmes évidents (fichiers touchés inutilement, debug logs qui trainent…).
  • Tester la fonctionnalité sur la review app

Merge request reports