Aller au contenu

Réserver une ressource

À quoi ça sert

Cette page couvre la réservation de ressources partagées (salles de réunion, matériel…) : parcourir le catalogue, réserver un créneau, suivre l'approbation, gérer les conflits, consulter le calendrier partagé et — côté propriétaire de ressource — approuver les demandes et poser des périodes de blocage.

Prérequis

Prérequis

  • Modules sous licence : BOOKING
  • Permissions : booking.create, resource.owner, resource.manage, booking.manage
  • Rôles : EMPLOYEE, MANAGER, ORG_ADMIN

Comment ça marche

1. Parcourir les ressources disponibles

  1. Ouvrez Réservations → Ressources (/dashboard/booking/resources).
  2. Utilisez la barre de recherche (nom ou localisation) et les filtres par type de ressource (chips en haut de liste) pour retrouver la salle ou le matériel voulu.

    Liste des ressources disponibles

2. Réserver un créneau

  1. Cliquez sur une ressource pour ouvrir le formulaire de réservation.
  2. Renseignez :
  3. Objet * (ex. « Réunion d'équipe », « Entretien ») — 200 caractères maximum.
  4. Début et Fin * — sélecteurs de date/heure.
  5. Jigi vérifie la disponibilité en temps réel sur ce créneau avant de vous laisser valider.

    Formulaire de réservation Formulaire de réservation rempli

  6. Validez : selon la ressource, la réservation est confirmée immédiatement ou part en attente d'approbation.

    Réservation confirmée

3. Suivre mes réservations

  1. Ouvrez Réservations → Mes réservations (/dashboard/booking/my-bookings).
  2. Chaque réservation affiche son statut (En attente, Approuvée, Rejetée, Annulée, Terminée).

    Réservation approuvée dans mes réservations Liste de mes réservations

  3. Vous pouvez annuler une réservation tant qu'elle n'est pas terminée ou déjà annulée.

  4. Une fois le créneau passé, un bouton Donner mon avis propose de noter la ressource (1 à 5 étoiles) et de laisser un commentaire optionnel.

4. Gérer les conflits de créneaux

  • Jigi empêche par construction deux réservations qui se chevauchent sur la même ressource : le contrôle est fait à la fois côté application et par une contrainte d'exclusion au niveau de la base de données, donc aucun chevauchement ne peut passer même en cas de requêtes concurrentes.
  • Si le créneau souhaité est déjà pris, le formulaire refuse la soumission — choisissez un autre créneau ou consultez le calendrier de la ressource pour voir les disponibilités.

5. Consulter le calendrier partagé

  1. Ouvrez Réservations → Calendrier (/dashboard/booking/calendar) pour voir toutes les réservations de la société sur une vue calendrier.
  2. Pour synchroniser vos réservations avec votre agenda personnel (Outlook, Google Calendar…), récupérez votre lien iCal personnel (jeton unique par utilisateur) ; un bouton permet de le régénérer si besoin (invalide l'ancien lien).

6. Côté propriétaire de ressource : approuver et gérer

  1. Ouvrez Réservations → Mes ressources (/dashboard/booking/owner) — visible pour les ressources dont vous êtes désigné propriétaire (ownerId).
  2. Sélectionnez une ressource pour voir ses réservations et, en particulier, les demandes en attente.
  3. Pour chaque demande en attente : Approuver ou Rejeter (un motif est requis pour le rejet).
  4. Un interrupteur Auto-validation permet d'activer/désactiver la validation automatique des réservations sur cette ressource — utile pour les ressources à faible enjeu (ex. salle de pause) où l'approbation manuelle n'a pas de valeur ajoutée.
  5. Une section Périodes de blocage permet de déclarer une indisponibilité (maintenance, réservation externe…) avec date de début/fin et motif ; ces périodes sont prises en compte dans le contrôle de disponibilité comme une réservation.

7. Côté administration : catalogue de ressources

  1. Sous Administration → Réservations, trois pages permettent de gérer le référentiel :
  2. Types de ressources — création des catégories (ex. « Salle de réunion », « Matériel »), avec icône, couleur, et réglages par défaut (nécessite un propriétaire, nécessite validation, autorise l'auto-validation par le propriétaire).
  3. Ressources — création des ressources elles-mêmes (nom, code, localisation, photo, propriétaire, type).
  4. Réservations — vue d'ensemble de toutes les réservations de la société, tous statuts confondus, avec possibilité d'annulation administrative.
  5. L'export CSV du feedback (notes et commentaires) est disponible pour analyser la satisfaction d'usage des ressources.

Qui peut faire quoi

Permission requise Rôles concernés
booking.create EMPLOYEE, MANAGER, ORG_ADMIN
resource.owner EMPLOYEE, MANAGER, ORG_ADMIN
resource.manage EMPLOYEE, MANAGER, ORG_ADMIN
booking.manage EMPLOYEE, MANAGER, ORG_ADMIN
Rôle / permission Parcourir & réserver Voir/annuler ses réservations Approuver/rejeter en tant que propriétaire Gérer types & ressources Voir/annuler toutes les réservations
booking.create (tout collaborateur habilité) ✅ ✅ ❌ ❌ ❌ (lecture de sa liste seulement)
resource.owner (propriétaire désigné d'une ressource) ✅ ✅ ✅ (sur ses ressources) ❌ ❌
resource.manage (administration) ✅ ✅ ❌ ✅ ❌
booking.manage (administration réservations) ✅ ✅ ✅ (toutes ressources) ❌ ✅ (y compris annulation admin)

resource.manage et resource.owner sont distincts de booking.manage

resource.manage couvre uniquement le catalogue (types et ressources) ; resource.owner couvre l'approbation sur les ressources dont on est propriétaire ; booking.manage couvre la vue globale et l'administration de toutes les réservations. Un administrateur qui détient booking.manage hérite automatiquement de resource.manage et resource.owner par la configuration des rôles.

Détails techniques

Entités (schéma booking) : ResourceType, Resource, ResourceBooking, ResourceBookingAttendee, ResourceBookingFeedback, ResourceBookingHistory, ResourceBlockout, UserIcalToken.

Statuts : BookingStatus = PENDING, APPROVED, REJECTED, CANCELLED, COMPLETED. ResourceStatus gère la disponibilité de la ressource elle-même.

Auto-validation : Resource.autoValidate (et autoApproveAfterHours pour une validation différée), combinés aux réglages du ResourceType (requiresOwner, requiresValidation, allowOwnerAutoValidate), déterminent si une réservation est confirmée immédiatement ou passe en attente.

Conflits de créneaux : BookingService.create appelle bookingRepository.countOverlapping(...) pour rejeter tout chevauchement ; ce contrôle applicatif est doublé d'une contrainte d'exclusion PostgreSQL au niveau de la table resource_bookings, garantissant l'absence de chevauchement même en cas de course entre requêtes concurrentes.

Endpoints principaux (/booking/...) :

  • POST /booking/bookings, GET /booking/bookings/mine, /resource/{resourceId}, /{id}, /stats.
  • POST /booking/bookings/{id}/approve, /reject, /cancel, /admin-cancel.
  • PUT /booking/bookings/{id}/attendees, GET /{id}/history, POST /{id}/feedback, GET /feedback/export.
  • GET/POST /booking/resources, /booking/resource-types (gestion du référentiel, resource.manage).
  • GET /booking/ical/token, POST /booking/ical/token/rotate, GET /booking/ical/feed/{token} — flux iCal personnel.

Rappels automatiques : BookingReminderJob / BookingReminderService envoient un rappel avant le créneau (reminderSentAt) et BookingService.completeExpiredBookings fait passer au statut Terminée les réservations dont le créneau est passé.

Cas d'erreur et FAQ

Ma réservation reste « En attente », est-ce normal ? Oui si la ressource n'a pas l'auto-validation activée : le propriétaire de la ressource doit approuver manuellement. Contactez-le si le délai vous semble long, ou consultez la page Mes ressources si vous êtes vous-même propriétaire.

Le créneau que je veux est refusé alors qu'il semble libre sur le calendrier, pourquoi ? Vérifiez qu'il n'existe pas une période de blocage posée par le propriétaire (maintenance, indisponibilité) sur ce créneau : elle est prise en compte comme une réservation existante.

Comment voir toutes mes réservations dans mon agenda Outlook/Google ? Récupérez votre lien iCal personnel depuis le module Réservations et ajoutez-le comme calendrier externe dans votre client de messagerie. Si le lien a été compromis, régénérez-le : l'ancien cessera immédiatement de fonctionner.

Puis-je annuler une réservation à la dernière minute ? Oui, tant qu'elle n'est pas déjà Terminée ou Annulée. Pensez à annuler dès que possible pour libérer le créneau pour d'autres collaborateurs.

Qui peut annuler ma réservation à ma place ? Un administrateur disposant de booking.manage peut effectuer une annulation administrative (ex. en cas de conflit exceptionnel ou de fermeture de la ressource), ce qui est tracé dans l'historique de la réservation.

Voir aussi