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
189 stars 90 forks source link

Batch / traitement multiple #8076

Open mfo opened 2 years ago

mfo commented 2 years ago

le plan

TODO: ui/ux/product

/!\ attention se sont des protos de tech /!\

Concernant le lock sur les dossiers, trop de problèmes possible donc on part sur le strict minimum

détail sur ça : aujourd'hui les instructeurs peuvent deja essayer de passer un dossier en construction quand un autre instructeur l'a fait de son coté. c'est un problème global de l'app, ça nous semble revenir au sujet du traitement par plusieurs instructeurs/de la collaboration en live. Intégrer cette question ici nous semble etre une mauvaise idée ; c'est ouvert a discussion, juste notre parti pris avec @lisa-durand

  • TODO: une alerte en haut de page de vue d'un dossier (sans bloquer les actions, les problème arriveront de toute manière, ce qu'y nous semble compter est de gerer ces problèmes) Screen Shot 2022-11-18 at 11 11 24 AM
  • un indicateur de traitement multiple sur la vue d'une liste de dossier codé Screenshot 2022-11-21 at 18-09-24 Demande de subvention DSIL - 2021 - CÔTE D #39 OR · demarches-simplifiees fr copy

Concernant l'interface de selection des traitement multiples

rechercher d'idée UX / contrainte

v0

v1

TODO: tech

v0 prod (juste archiver)

v1


Ideation a 4

Just make it batch (and shine)

Proposition

on rajoute une relation belongs_to sur les dossiers qui est lié à un object batch qui décrit l'opération

On veut permettre un nombre arbitraire de dossier

le batch n'est pas atomique (certains dossiers peuvent échouer sans bloquer les autres) -> mais il faut pouvoir avertir l'instructeur

pour les dossiers en cours de traitement, on bloque les changements d'état et toutes les opérations (suppression, archivage ...)

Nouveaux  objects : 
Batch < ApplicationRecord  (attributes: )
has_many_attached :blobs
* ? operation_name: :enum, archive
* question
* failed_dossier_ids: ?
* success_dossier_ids: ?
* dossier_ids: (for undo)
* payload: ex: {motivations, instructeur_id, blob_id}
* created_at/updated_at
* run_at
* finished_at

BatchOperation (archive, )
ArchiveOperation.new(_1).process
dossiers.each { ArchiveOperation.new(_1).process_later }

dossiers.each { _1.passer_en_instruction }

BatchOperation.new(ids, -> (d) d.passe_en_instruction)

## lock de l'interface/dossier lorsqu'un batch est en cours de traitement
Chemins ou il faut bloquer les actions visuellement car un batch est en cours de traitement / les locks

Il y a deux cas

sur des tableaux ex: un instructeur recharge la page après avoir lancé un batch 
    app/views/instructeurs/procedures/_dossier_actions.html.haml

sur une dropdown ex: un instructeur essaie de changer l'etat d'un dossier qui est deja dans un batch (lancé en parallele par un autre instructeur)
    app/views/instructeurs/dossiers/_state_button.html.haml

"conclusion" : il nous faudrait une alerte en haut de page de vue d'un dossier pour expliciter le cas de boutons desactivé

## Reporting batch bug/success

Inversement, il y a aussi le cas ou un instructeur essaie d'executer un batch sur une liste de dossier, mais dans laquelle un des dossier a changé d'etat (ex: par un autre instructeur), il faut gerer le reporting en fin de batch
dzc34 commented 2 years ago

voir aussi #7805

mfo commented 2 years ago

voir aussi #7805

@dzc34 / @akarzim - en effet c'est notre base de reflexion vous avez fait un super boulot :-) PS: j'en ai profité pour répondre aux question , certains point seraient a confirmer

dzc34 commented 1 year ago

voir le commentaire de suivi Adullact de la liste des actions déjà implémentées, à implémenter ou qui ne seront pas implémentées : --------> https://github.com/demarches-simplifiees/demarches-simplifiees.fr/issues/7805#issuecomment-1386967187