Project

General

Profile

Development #38942

Gestion des ressources (était : liste des créneaux disponibles communs à plusieurs agendas rendez-vous)

Added by Mikaël Ates 6 months ago. Updated about 1 month ago.

Status:
Solution déployée
Priority:
Normal
Category:
-
Target version:
-
Start date:
14 Jan 2020
Due date:
% Done:

0%

Patch proposed:
Yes
Planning:
No

Description

Le cas d'usage c'est de pouvoir poser un rendez-vous en prenant en compte les disponibilités d'un agenda d'un organisme (le service État-civil ou la CAF par exemple) et les disponibilités d'un agenda de ressource (une salle ou un poste de visio par exemple). L'usager choisirait le partenaire et la ressource puis il lui est affiché un agenda des disponibilités croisées des deux agendas.

Ce serait donc de disposer de l'ensemble intersection des datetimes de n agendas (n fixe déterminé à la conception de la démarche), en appelant par exemple :

{{agendas_url}}api/agenda/{{choix_partenaire_raw}},{{choix_ressource_raw}}/datetimes/.
Une fois le créneau choisi (e.g. form_var_creneau) ,les n URL des appels WS de réservation peuvent se construire manuellement :
  • {{agendas_url}}api/agenda/{{choix_partenaire_raw}}/fillslot/{{form_var_creneau_datetime}}/
  • {{agendas_url}}api/agenda/{{choix_ressource_raw}}/fillslot/{{form_var_creneau_datetime}}/
De manière tout à fait facultatif (ce pourrait être un autre ticket), ce pourrait être intéressant d'avoir les URL retournées dans le créneau, par exemple pour faire les appels sur :
  • {{ form_var_creneau_api_fillslot_url_0 }}
  • {{ form_var_creneau_api_fillslot_url_1 }}

0007-api-book-also-resources-in-fillslot-s-endpoint-38942.patch View (11.1 KB) Lauréline Guerin, 29 May 2020 05:10 PM

0008-agendas-month-day-agenda-for-resource-38942.patch View (32.1 KB) Lauréline Guerin, 29 May 2020 05:10 PM

0005-api-add-resources-list-on-agenda-details-38942.patch View (7.79 KB) Lauréline Guerin, 29 May 2020 05:10 PM

0006-api-check-resources-in-datetimes-endpoint-38942.patch View (16.1 KB) Lauréline Guerin, 29 May 2020 05:10 PM

0004-agendas-add-resource-to-agenda-38942.patch View (11.4 KB) Lauréline Guerin, 29 May 2020 05:10 PM

0003-agendas-manager-views-for-resources-38942.patch View (10.5 KB) Lauréline Guerin, 29 May 2020 05:10 PM

0002-agendas-resources-in-agendas-fields-in-import-export.patch View (3.74 KB) Lauréline Guerin, 29 May 2020 05:10 PM

0001-agendas-Resource-model-38942.patch View (5.63 KB) Lauréline Guerin, 29 May 2020 05:10 PM

Capture d’écran de 2020-05-29 16-55-15.png View (19.7 KB) Lauréline Guerin, 29 May 2020 05:11 PM

Capture d’écran de 2020-05-29 16-55-25.png View (21.1 KB) Lauréline Guerin, 29 May 2020 05:11 PM

Capture d’écran de 2020-05-29 16-55-33.png View (40.4 KB) Lauréline Guerin, 29 May 2020 05:11 PM

Capture d’écran de 2020-05-29 16-55-48.png View (40.1 KB) Lauréline Guerin, 29 May 2020 05:12 PM

44994
44995
44996
44997

Associated revisions

Revision 3f21f3f0 (diff)
Added by Lauréline Guérin about 1 month ago

agendas: Resource model (#38942)

Revision c62ebc9b (diff)
Added by Lauréline Guérin about 1 month ago

agendas: resources in agendas fields in import/exports (#38942)

Revision a06c7796 (diff)
Added by Lauréline Guérin about 1 month ago

agendas: manager views for resources (#38942)

Revision b1b92bfa (diff)
Added by Lauréline Guérin about 1 month ago

agendas: add resource to agenda (#38942)

Revision 4cc1bf6c (diff)
Added by Lauréline Guérin about 1 month ago

api: add resources list on agenda details (#38942)

Revision a1d38b0a (diff)
Added by Lauréline Guérin about 1 month ago

api: check resources in datetimes endpoint (#38942)

Revision 4cc127c0 (diff)
Added by Lauréline Guérin about 1 month ago

api: book also resources in fillslot(s) endpoint (#38942)

Revision c1979675 (diff)
Added by Lauréline Guérin about 1 month ago

agendas: month/day agenda for resource (#38942)

History

#1 Updated by Mikaël Ates 6 months ago

  • Description updated (diff)

#2 Updated by Emmanuel Cazenave 6 months ago

Sur ton cas d'usage on est plutôt sur des agendas évènements ? rdv ? (je ne sais pas si ce sera important pour le dev mais autant le savoir quand même).

#3 Updated by Mikaël Ates 6 months ago

  • Subject changed from Liste des créneaux disponibles communs à plusieurs agendas to Liste des créneaux disponibles communs à plusieurs agendas rendez-vous

Rendez-vous

#4 Updated by Frédéric Péters 6 months ago

  • Tracker changed from Support to Development
  • Subject changed from Liste des créneaux disponibles communs à plusieurs agendas rendez-vous to Gestion des ressources (était : liste des créneaux disponibles communs à plusieurs agendas rendez-vous)

Une fois le créneau choisi (e.g. form_var_creneau), les n URL des appels WS de réservation peuvent se construire manuellement :

Il ne faudrait pas devoir faire n appels, il faut 1 seul appel qui pose toutes les réservations demandées, et que celles-ci soit liées, qu'une annulation du rendez-vous libère aussi la salle.

{{agendas_url}}api/agenda/{{choix_partenaire_raw}},{{choix_ressource_raw}}/datetimes/

Je serais plutôt à identifier clairement une notion de ressource, qui ne sont ni agenda de rendez-vous ni agenda d'événements, ça permettra par exemple de ne pas devoir définir des durées de réservation pour les ressources, d'avoir à les maintenir celles-ci en parallèle des durées définies au niveau des rendez-vous; ça permettrait aussi de poser que par défaut une ressource peut à tout moment être empruntée, pour ne pas avoir non plus à gérer des "horaires d'ouverture" pour les ressources. Le truc étant d'aller au plus simple dans la définition, je déclare une ressource "poste de visio", je la déclare comme exploitable par l'agenda "état civil" et c'est parti.

Dans les informations générales de l'agenda on récupère ainsi l'info sur les ressources possibles, genre :

   ...
   "resources": [
      {"id": "poste-de-visio", "text": "Poste de visio", "description": "bla bla bla bla"},
      {"id": "local-b-12", "text": "Local B.12", "description", "bla bla bla bla"}
   ]

(selon ce qui est le plus pratique pour être affiché dans une liste / liste à choix multiple de w.c.s.)

Et l'API d'obtention des créneaux derrière,

{{agendas_url}}api/agenda/{{choix_partenaire_raw}}/datetimes/?resources=poste-de-visio,local-b-12

(ici aussi selon ce qui se révèle le plus facilement exploitable)

#5 Updated by Benjamin Dauvergne 6 months ago

Je pose juste ça là mais parmi les notions à garder depuis les agendas rdv, je verrai celle de multiplicité (on appelle guichet pour les agenda de rdv actuellement), si on a 200 chaises on va pas faire 200 agendas de ressources chaise. À terme on pourrait même faire disparaître cette notion des RdV eux mêmes, elle viendrait purement des ressources.

Et deuxième petite remarque pour aller dans le même sens, ça pourrait être utile d'avoir des types de ressources (guichet-a, guichet-b et guichet-c sont des "guichet", si je met guichet ça cherche une dispo dans l'union des 3 guichet, et ça rapporte à la fin lequel a été choisi).

À long terme les agents eux mêmes seraient des ressources et on pourrait générer directement leur agenda de RdV (et prendre en compte leur dispo réelle) ; si on a 3 agents et 2 guichets au mieux on peut prendre 2 RdV par créneau, mais au moins un agent peut-être absent sans que ça gêne la dispo du service.

#6 Updated by Mikaël Ates 6 months ago

Le delta avec l'existant me semble plus important avec cette approche. Mais bien elle est mieux adaptée et permettra sûrement d'affiner par la suite la notion de ressources et les contraintes que l'on pourrait lui associer.

Je comprends la notion de déclaration de la ressource par agenda et le besoin d'en faire dans le formulaire une liste mais comme elles peuvent être exploitées par plusieurs agenda, j'aurai vu le libellé et la description définis dans un objet ressource où l'on trouverait également les horaires de disponibilité, pour ne pointer sur les agendas que les id des ressources.

#7 Updated by Lauréline Guerin 2 months ago

  • Assignee set to Lauréline Guerin

#8 Updated by Benjamin Dauvergne 2 months ago

Mikaël Ates a écrit :

Le delta avec l'existant me semble plus important avec cette approche. Mais bien elle est mieux adaptée et permettra sûrement d'affiner par la suite la notion de ressources et les contraintes que l'on pourrait lui associer.

On peut l'ignorer dans un premier temps, je ne vois qui empêche de le faire ensuite (que ce soit le décompte ou la possibilité de viser plusieurs ressources d'un même type).

Je comprends la notion de déclaration de la ressource par agenda et le besoin d'en faire dans le formulaire une liste mais comme elles peuvent être exploitées par plusieurs agenda, j'aurai vu le libellé et la description définis dans un objet ressource où l'on trouverait également les horaires de disponibilité, pour ne pointer sur les agendas que les id des ressources.

Je pense que ce que décrit Fred n'exclut pas ce que tu dis, il dit juste qu'une ressource doit, pour être utilisée :
  • être définie par un slug, un nom et une éventuelle description,
  • déclarée au niveau de l'agenda comme réservable via l'agenda,
    rien n'empêche là dedans d'en faire un objet transversal utilisable par plusieurs agendas.

Derrière ça une ressource aura un agenda libre sans aucune contrainte (pas de délai, pas de dispo), coté agenda on peut simplement considérer que son agenda est composé des Event qui la référence (avec une relation M2M Event.resources par exemple).

Je note ici pour Laureline qu'il me semble difficile d'avancer là dessus sans que #42169 ne soit intégré qu'il faudrait travailler au dessus du code de #42169 (parce qu'au niveau de la réservation ça va toucher au même code).

#9 Updated by Lauréline Guerin about 2 months ago

Est-ce que je prévois un système de droits pour les resources, comme pour les agendas ? (rôle d'édition, rôle de modification)
Ou je fais un ticket pour ça ?

#10 Updated by Frédéric Péters about 2 months ago

Je dirais que tant qu'elles n'ont que libellé/description, ça peut juste rester pour l'admin (is_staff).

#13 Updated by Lauréline Guerin about 2 months ago

Est-ce qu'il serait intéressant d'ajouter le label de l'agenda et du desk correspondant à l'event dans les div.booking ?
J'aurais bien ajouté l'url aussi, mais ça dépend des droits du user sur le calendrier et il faut que je vérifie si on peut faire ça sans ajouter trop de QS.

#14 Updated by Frédéric Péters about 1 month ago

  • Status changed from Solution proposée to Solution validée

Est-ce qu'il serait intéressant d'ajouter le label de l'agenda et du desk correspondant à l'event dans les div.booking ?

Peut-être pour la vue par jour mais je me dis de manière générale qu'avec les réservations portant de plus en plus d'infos, on pourra arriver à un moment à ce qu'un clic dessus ouvre une petite popup avec les infos détaillées, agenda, usager, ressources, liens, etc. mais que tout ça arrivera dans un ticket différent.

Côté rebases j'ai l'impression que celui-ci ou #43077 il y aura de toute façon du travail; je serais pour accepter celui-ci et laisser un peu plus de temps à l'autre, pour assurer la mise à jour de l'existant.

#15 Updated by Lauréline Guerin about 1 month ago

  • Status changed from Solution validée to Résolu (à déployer)
commit c19796751cdbe4b34b9f3ac04abe87a738ea9733
Author: Lauréline Guérin <zebuline@entrouvert.com>
Date:   Fri May 29 09:41:09 2020 +0200

    agendas: month/day agenda for resource (#38942)

commit 4cc127c09eb90386ecff94e6e5953d3f83121398
Author: Lauréline Guérin <zebuline@entrouvert.com>
Date:   Tue May 26 15:11:39 2020 +0200

    api: book also resources in fillslot(s) endpoint (#38942)

commit a1d38b0a886b0bed12631b9718c59fccf32d9bbe
Author: Lauréline Guérin <zebuline@entrouvert.com>
Date:   Tue May 26 11:51:40 2020 +0200

    api: check resources in datetimes endpoint (#38942)

commit 4cc1bf6c450d21665853cff698f512cc69de27d1
Author: Lauréline Guérin <zebuline@entrouvert.com>
Date:   Mon May 25 10:09:41 2020 +0200

    api: add resources list on agenda details (#38942)

commit b1b92bfa5c39c6047a61cfb62eb78c87cb2ee4c3
Author: Lauréline Guérin <zebuline@entrouvert.com>
Date:   Mon May 18 16:45:35 2020 +0200

    agendas: add resource to agenda (#38942)

commit a06c7796c857d69aadf9b5029e8a544962c143ff
Author: Lauréline Guérin <zebuline@entrouvert.com>
Date:   Fri May 15 16:52:58 2020 +0200

    agendas: manager views for resources (#38942)

commit c62ebc9b5645b663d1f3249660d340b0ca698367
Author: Lauréline Guérin <zebuline@entrouvert.com>
Date:   Fri May 15 15:47:03 2020 +0200

    agendas: resources in agendas fields in import/exports (#38942)

commit 3f21f3f033ba5384537a08c70602c0dc93e15551
Author: Lauréline Guérin <zebuline@entrouvert.com>
Date:   Fri May 15 14:32:37 2020 +0200

    agendas: Resource model (#38942)

#16 Updated by Frédéric Péters about 1 month ago

  • Status changed from Résolu (à déployer) to Solution déployée

Also available in: Atom PDF