DocScoDoc/docs/DevAbsencesCalendrier.md

4.7 KiB

Absences et emplois du temps (développeurs)

Les emplois du temps sont gérés par un autre logiciel, comme:

Ces logiciels peuvent exporter les calendriers au format ICS (iCalendar, RFC 5545).

Calendriers et évènements

Un calendrier est ici une liste d'évènements, chaque cours étant un évènement. L'évènement comporte:

  • dates début et fin;
  • identifiant du groupe d'étudiants concerné (dans la formation, par ex. groupe de TD);
  • identifiant du module (enseignement): par exemple, l'élément Apogée.
  • identifiant de l'enseignant concerné.

On suppose qu'on a un calendrier par "formation" (FormSemestre ScoDoc), identifié par un code (par exemple, code étape Apogée) que l'on appellera edt_id.

Fuseaux horaires

La lecture de l'ics donne des dates avec time zone, en général en UTC.

L'affichage se fait en heure locale du client.

Problèmes:

  • les paramètres assi_morning_time, assi_afternoon_time semblent se référer à l'heure serveur ?

Exemple: cas de l'USPN

Cet établissement utilise HyperPlanning. Les calendrier sont exportés régulièrement, on a un fichier ics par formation (code Apogée).

BEGIN:VEVENT
CATEGORIES:HYPERPLANNING
DTSTAMP:20231101T140300Z
LAST-MODIFIED:20230905T094241Z
UID:Cours-423101-5-BUT2_RT_pa._CYBER-Index-Education
DTSTART:20230920T060000Z
DTEND:20230920T083000Z
SUMMARY;LANGUAGE=fr:TP2 GPR1 - VCYR303 - Services reseaux ava (VCYR303) - 1234 - M. VIENNET EMMANUEL - V2ROM - BUT2 RT pa. ROM - Groupe 1
LOCATION;LANGUAGE=fr:P202 CRIT - P202 CRIT.RESEAUX
DESCRIPTION;LANGUAGE=fr:Matière : VCYR303 - Services reseaux ava (VCYR303)\nEnseignant : 1234 - M. VIENNET EMMANUEL\nPromotion : V2ROM - BUT2 RT pa. ROM\nTD : Groupe 1\nSalle : P202 CRIT - P202 CRIT.RESEAUX\nMémo : TP2 GPR1\n
X-ALT-DESC;FMTTYPE=text/html:Matière : VCYR303 - Services reseaux ava (VCYR303)<br/>Enseignant : 1234 - M. VIENNET EMMANUEL<br/>Promotion : V2ROM - BUT2 RT pa. ROM<br/>TD : Groupe 1<br/>Salle : P202 CRIT - P202 CRIT.RESEAUX<br/>Mémo : TP2 GPR1<br/>
END:VEVENT

On a ici:

  • identifiant de la formation: dans le nom du fichier calendrier (ici V2CYB.ics);
  • identifiant du groupe: dans SUMMARY, * - <groupe>
  • identifiant du module: on a le code VCYR303 à trois endroits: SUMMARY, DESCRIPTION, X-ALT-DESC.
  • identifiant de l'enseignant: SUMMARY, DESCRIPTION, X-ALT-DESC.

Transcodage des identifiants

ScoDoc n'utilise évidemment pas les mêmes identifiants que ceux trouvés dans les calendriers.

"Formation"

Il s'agit du FormSemestre. On a déjà les codes étapes Apogée. On proposera un champs "identifiant emploi du temps" (edt_id), et à défaut on utilisera le premier code étape Apogée.

Groupes

Chaque groupe ScoDoc peut indiquer son ou ses identifiants edt (edt_id). A défaut, on utilisera son nom (il sera donc conseillé aux utilisateurs d'adopter les mêmes noms de groupes dans ScoDoc et dans leur logiciel d'emploi du temps).

Module

Ajouter etd_id dans Module, avec utilisation de code_apogee si absent.

Enseignant

edt_id (dans l'exemple précédent "1234"), doit être renseigné dans ScoDoc. A l'USPN, on peut récupérer cette information dans le CAS (dans supannEmpId et employeeNumber).

Champ edt_id dans User. Affecté par l'authentification CAS, qui peut récupérer une information dans la réponse XML du serveur CAS, grâce à l'expression cas_edt_id_from_xml_regexp de la config générale. SuperAdmin peut aussi forcer manuellement l'edt_id des comptes utilisateurs.

Architecture technique

Principes généraux

  • ScoDoc consomme la donnée "emploi du temps" mais n'a pas vocation à la republier (on ne proposera aucune API pour ce faire, les clients intéressés devant s'adresser à l'API (ou équivalent) du logiciel d'emplois du temps).

  • ScoDoc est agnostique sur le logiciel d'emploi du temps et n'effectue aucune requête API vers celui-ci. Il se contente de consommer des calendriers (ics) copiés (par exemple chaque heure) dans un répertoire accessible au serveur ScoDoc.

  • Chaque FormSemestre va chercher à s'associer à un (et un seul ?) calendrier.

Fonctions proposées aux utilisateurs

L'objectif est de simplifier la saisie des absences: afficher l'emploi du temps par semaine, et permettre la saisie des absences d'un cours donné en ayant automatiquement pré-rempli le module, la date, l'heure de début et l'heure de fin.

En option, restreindre la saisie des absences par les enseignants aux seules plages/groupes qui les concernent.

!!! note "Voir aussi"

- Emplois du temps: [doc utilisateur](EmploisDuTemps.md)
- [Contacts](Contact.md)