demarches-simplifiees / demarches-simplifiees.fr

Dématérialiser et simplifier les démarches administratives
https://www.demarches-simplifiees.fr
GNU Affero General Public License v3.0
190 stars 89 forks source link

ETQ Instructeur, je veux savoir si un autre instructeur suit déjà un dossier #6806

Open kemenaran opened 2 years ago

kemenaran commented 2 years ago

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 :

les instructeurs auxquels le lien d'activation à DMS a été envoyé à posteriori par un opérateur effectuent une action "suivre le dossier " qui n'est pas prise en compte, et engendre un traitement en doublon d'un meme dossier par deux instructeur

➡️ 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 :

  1. Afficher en temps réel quels instructeurs sont en train de consulter un dossier ("Présence") Concrètement : avoir sur la page d'un dossier (et dans la liste des dossiers) une pastille/avatar indiquant quel instructeur a aussi une page ouverte sur un dossier.
  2. Mettre à jour les indicateurs de "Est-ce que ce dossier est suivi ou pas" en temps réel ("Update"). Concrètement : quand un instructeur demande à suivre un dossier, la liste des dossiers et les pages individuelles des dossiers ouvertes chez d'autres instructeurs sont mises à jour automatiquement.
kemenaran commented 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: