Open kemenaran opened 2 years ago
Pour la solution 2 ("Update de la liste en temps réel"), techniquement je vois comment faire ça sans que ça soit trop compliqué.
Concrètement, on utiliserait Turbo (plus précisément les Turbo Streams) pour mettre à jour les autres onglets ouverts quand un instructeur décide de suivre un dossier.
Ça ressemblerait sans doute à un truc du genre :
# app/models/assign_to.rb
class AssignTo < ActiveRecord::Base
after_create_commit :broadcast_later
def broadcast_later
broadcast_replace_later_to dossier, :assign_to
broadcast_replace_later_to procedure, :index
end
end
Et en substance ça fait que :
Après évidemment il faudrait optimiser, faire en sorte de ne pas re-rendre plein de listes à chaque fois. Et avant tout ça intégrer Turbo dans l'appli.
Mais pour le coup je l'ai déjà fait dans une autre appli Rails – et à la fois c'est du taf, mais franchement ça se fait bien. Du coup je serai chaud pour partir là dessus.
On a aussi testé la màj en temps réel sur un projet interne de Codeurs en Liberté, et franchement une fois les briques en place on a vraiment un système de collaboration en temps réel simple et fonctionnel. Typiquement, pour rajouter l'ajout d'un point sur une carte en temps-réel sur tous les onglets ouverts, ça faisait un diff de +3 -4. :not_bad.gif:
Problème à résoudre
Aujourd'hui il arrive fréquemment que deux instructeurs s'assignent le même dossier.
On pense que c'est souvent parce que les deux instructeurs affichent la liste des dossiers non-suivis, ou la page d'un dossier, et ne savent pas qu'un autre instructeur est en train de cliquer sur le bouton "Suivre" en même temps
Par exemple, le pass culture dit :
➡️ Discussion sur feature-upvote
Solutions possibles
On tient à garder la possibilité pour plusieurs instructeurs de suivre un même dossier (ça permet de collaborer).
On a évoqué plusieurs solutions possibles :