Development #90619
file d'attente sur une démarche : ajouter un "nombre maximum de demandes simultanées"
Status:
Nouveau
Priority:
Normal
Assignee:
-
Target version:
-
Start date:
15 May 2024
Due date:
% Done:
0%
Estimated time:
Patch proposed:
No
Planning:
No
Description
Sur une démarche qui engendre une trop grande activité, on ajouterait un paramètre "nombre maximum de demandes en simultanées".
Quand un accès est fait (front ou back), on regarde le nombre de demandes en cours (formdata de moins de "x" minutes, brouillons compris) : si le maximum est atteint on affiche un message d'attente.
La question délicate : déterminer le "x". Le plus petit possible, mais pas trop non plus, les saisies ça peut prendre du temps. Peut-être faire quelques calculs sur les demandes dans les dernières heures pour estimer la durée de saisie, par exemple.
History
Updated by Benjamin Dauvergne 5 months ago
Plusieurs remarques:
- il me semble que ça impose un mode "maximum 1 brouillon" par usager/ip/session pour être raisonnable, actuellement il me semble qu'on a juste brouillon/pas brouillon comme mode (je me dis d'ailleurs que le mode 1 brouillon à la fois devrait être le mode par défaut, j'ai l'impression qu'il y a plus d'usagers embêtés par plusieurs brouillons que de power user jonglant entre 3 brouillons)
- il faudrait déterminer les brouillons actifs ou pas, si last_update_time est bien mis à jour à chaque autosave/transition de page ça pourrait servir à ça, les brouillons actifs seraient
SELECT id FROM ... WHERE status = 'draft' AND last_update_time > NOW() - '1 hour'::interval
)@ quand ton formdata_id est dans la liste t'est autorisé à continuer ta saisie, s'il n'est pas dans la liste ou si c'est une nouvelle saisie, on regarde combien il y en a d'actifs et si ça dépasse le seuil on affiche le message de forte charge, - ça devrait aussi concerner la page de statut du formulaire et pas seulement les pages de saisie (il y a des actions et formulaires sur ces pages),
- ce serait agréablement modulé par un indicateur de charge de la plateforme (i.e. ne pas appliquer la limite si le load du serveur de db et des deux front est en dessous de xxx %, faut voir les graphes pour voir si on arrive à une limite) comme ça même si on détermine une limite trop basse on est pas trop impacté en général