Skip to main content

Guide de Gestion des Cours Privés — Référence Moniteurs

Ce document sert de guide et de référence pour les moniteurs afin de comprendre le fonctionnement du module de gestion des cours privés de l'application (modèle Lesson).

Les demandes de cours privés sont initiées par les clients via le formulaire public (lesson.html), puis gérées par les moniteurs dans l'interface d'administration Django jusqu'à leur validation finale et leur facturation par l'administration.


1. Cycle de vie d'une demande de cours

Chaque demande de cours privé suit un cycle de vie précis représenté par le champ status de la demande.

Voici le diagramme des transitions d'états possibles et les actions associées :

stateDiagram-v2
    [*] --> NEW : Soumission du formulaire par le client
    
    NEW --> WAITING : Action "Prendre le cours" (Assignation du moniteur)
    NEW --> CANCELLED : Action "Annuler le cours"
    
    WAITING --> CONFIRMED : Action "Confirmer le cours" (Planification/Début des cours)
    WAITING --> CANCELLED : Action "Annuler le cours"
    
    CONFIRMED --> TO_BILL : Action "Facturer le cours" (Cours terminés)
    CONFIRMED --> CANCELLED : Action "Annuler le cours"
    
    TO_BILL --> CLOSED : Action "Générer la facturation" (Réservé à l'Admin)
    
    CANCELLED --> WAITING : Action "Prendre le cours" (Réactivation)
    
    CLOSED --> [*] : Archivage et facturation envoyée

Description des statuts :

  • Nouveau (NEW) : La demande vient d'être créée par le client. Aucun moniteur n'y est encore associé.
  • En attente (WAITING) : Un moniteur a pris en charge la demande. Il est maintenant le référent et doit contacter le client pour planifier les leçons.
  • Confirmé (CONFIRMED) : Le planning est convenu et les séances de cours sont en cours de réalisation ou confirmées.
  • À facturer (TO_BILL) : Les séances sont terminées. Le moniteur a validé le nombre et le type de cours et transmet le dossier à l'administration pour facturation.
  • Fermé (CLOSED) : L'administration a généré et envoyé la facture. Le cours est archivé.
  • Annulé (CANCELLED) : Le cours a été annulé (par exemple à la demande du client ou par manque de disponibilité).

2. Le Formulaire d'Inscription (lesson.html)

Le point de départ est le formulaire rempli par le client sur le site internet. Les données suivantes y sont collectées :

  1. Informations du nageur : Prénom, Nom, Date de naissance.
    • Règle pour les mineurs : Si le nageur a moins de 18 ans (calculé automatiquement à partir de l'année de naissance), le formulaire exige obligatoirement le nom et le prénom du représentant légal.
  2. Informations de contact et adresse : E-mail, Téléphone, Adresse postale (Rue, Code postal, Ville).
  3. Détails du cours :
    • Nombre de cours souhaité (5 par défaut).
    • Objectif du cours (Purpose) :
      • Accoutumance (Water habituation)
      • Apprentissage de nage (Stroke learning)
      • Entraînement de nage (Stroke training)
    • Remarque : Informations complémentaires optionnelles.

Actions système lors de la soumission :

  • Création de la fiche Lesson au statut Nouveau (NEW).
  • Envoi automatique d'un e-mail de confirmation au client (modèle d'e-mail lesson_reception).
  • Notification sur le canal Telegram de l'équipe pour signaler l'arrivée d'une nouvelle demande.

3. L'Interface Admin Django pour les Moniteurs

Les moniteurs disposent d'un accès à l'administration Django avec la permission de visionner les leçons (core.view_lesson).

Le Filtre "Coach" Intelligent

Pour faciliter la recherche, la liste des leçons comporte un filtre de coach (LessonCoachFilter) :

  • Il place votre nom en tête de liste (sélectionné par défaut sous la valeur 0 pour afficher uniquement vos cours).
  • Il liste ensuite tous les autres moniteurs actifs afin que vous puissiez voir qui s'occupe de quel cours.
  • Si vous êtes administrateur (Superuser), la valeur par défaut affiche toutes les leçons.

Protection des Données (Lecture Seule)

Pour éviter les modifications accidentelles des coordonnées saisies par le client :

  • Lors de la création manuelle d'un cours : Presque tous les champs sont modifiables.
  • Une fois le cours enregistré/existant : Les informations personnelles (Nom, prénom, date de naissance, adresse, e-mail, téléphone, objectif) deviennent strictement en lecture seule. Les moniteurs ne peuvent modifier que :
    • Le statut (status).
    • Le moniteur assigné (coach).
    • Le type de cours (lesson_type).
    • Le nombre de cours effectifs (lesson_number).
    • Le fichier de formulaire joint (form_file).
    • La remarque (remark).

4. Guide des Actions et Boutons d'Administration

Dans la fiche d'une leçon, des boutons colorés en haut à droite vous permettent de piloter l'état du cours sans avoir à modifier le champ statut manuellement.

🔵 Prendre le cours (Take lesson)

  • Rôle : Vous vous attribuez le cours en tant que moniteur référent.
  • Condition d'affichage : Le cours doit être au statut Nouveau (NEW) ou Annulé (CANCELLED).
  • Effet : Assigne automatiquement votre profil d'utilisateur au champ coach (Moniteur) et passe le statut à En attente (WAITING).

🟢 Confirmer le cours (Confirm lesson)

  • Rôle : Confirmer que la planification avec le client est établie et que les cours vont commencer.
  • Condition d'affichage : Le cours doit être au statut En attente (WAITING) et un moniteur doit y être affecté.
  • Effet : Passe le statut à Confirmé (CONFIRMED) et enregistre la Date de confirmation au jour d'aujourd'hui.

🟡 Facturer le cours (Bill lesson)

  • Rôle : Signaler à l'administration que toutes les séances ont été dispensées et que le cours est prêt à être facturé.
  • Condition d'affichage : Le cours doit être au statut Confirmé (CONFIRMED) ET les champs suivants doivent impérativement être complétés dans la fiche :
    1. Type de cours (lesson_type) : Par exemple, cours individuel, duo, etc.
    2. Nombre de cours (lesson_number) : Le nombre exact de séances à facturer.
  • Effet : Passe le statut à À facturer (TO_BILL) et enregistre la Date de facturation au jour d'aujourd'hui.

🔴 Annuler le cours (Cancel lesson)

  • Rôle : Annuler la demande de cours.
  • Condition d'affichage : Le cours doit être au statut Nouveau (NEW), En attente (WAITING) ou Confirmé (CONFIRMED).
  • Effet : Demande une confirmation, efface la date de confirmation, assigne le moniteur connecté comme auteur de l'annulation et passe le statut à Annulé (CANCELLED).

📄 Obtenir le formulaire (Get form)

  • Rôle : Générer une fiche de suivi au format PDF.
  • Condition d'affichage : Le cours ne doit pas être Annulé (CANCELLED).
  • Effet : Télécharge instantanément un document PDF pré-rempli (Cours pour [Nom Prenom].pdf) utile pour noter les présences ou les compétences validées durant les cours.

🟣 Cloner le cours (Clone lesson)

  • Rôle : Dupliquer une demande existante.
  • Condition d'affichage : Toujours disponible (requiert la permission core.clone_lesson).
  • Effet : Crée une nouvelle fiche identique (sans référence de cours ni clé primaire) et vous redirige vers sa page d'édition. Pratique si un élève souhaite planifier une nouvelle série de cours.

⚙️ Générer la facturation (Generate invoicing)

  • Rôle : Créer la facture officielle dans le système et l'envoyer au client.
  • Condition d'affichage : Réservé aux administrateurs possédant la permission core.generate_invoicing. Le cours doit être au statut À facturer (TO_BILL) et ne pas déjà posséder de facture liée.
  • Effet :
    • Crée un dossier de facturation générale (GenericInvoicing) au nom du représentant légal (ou du nageur s'il est majeur).
    • Ajoute la ligne de facturation correspondante au tarif du Type de cours (lesson_type) multiplié par le Nombre de cours (lesson_number).
    • Génère la facture officielle et l'envoie automatiquement par e-mail au client (modèle generic_invoice_email_template).
    • Passe le statut du cours à Fermé (CLOSED).

5. Suivi et Rapports Automatiques

Au début de chaque mois, le système exécute une tâche automatique pour envoyer un récapitulatif par e-mail à chaque moniteur :

  • Destinataires : Tous les moniteurs ayant effectué des cours facturés le mois précédent.
  • Contenu : Un e-mail contenant la liste et le détail de toutes leurs leçons dont la Date de facturation se situe dans le mois précédent (modèle d'e-mail monthly_lesson_summary). Cela permet aux moniteurs de suivre leur activité et de vérifier leurs heures de cours pour leur propre décompte.