diff --git a/docs/DevAbsencesCalendrier.md b/docs/DevAbsencesCalendrier.md
index 0e181c43f..7af43c64c 100644
--- a/docs/DevAbsencesCalendrier.md
+++ b/docs/DevAbsencesCalendrier.md
@@ -1,15 +1,6 @@
# Absences et emplois du temps (développeurs)
-Les emplois du temps sont gérés par un autre logiciel, comme:
-
-- Hyperplanning
-- Celcat
-- GPU
-- VT [Visual Timetabling](http://visual.timetabling.free.fr)
-- ...
-
-Ces logiciels peuvent exporter les calendriers au format ICS (iCalendar,
-[RFC 5545](https://datatracker.ietf.org/doc/html/rfc5545)).
+Notes/idées pour les développeurs. WIP, en vrac.
## Calendriers et évènements
@@ -25,17 +16,6 @@ comporte:
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
diff --git a/docs/EmploisDuTemps.md b/docs/EmploisDuTemps.md
index 2180c1098..ca0c994fa 100644
--- a/docs/EmploisDuTemps.md
+++ b/docs/EmploisDuTemps.md
@@ -1,54 +1,190 @@
# Utilisation des emplois du temps
-ScoDoc peut être interfacé avec un logiciel de gestion des emplois du temps.
+ScoDoc peut être interfacé avec un logiciel de gestion des emplois du temps (EDT).
Le paramétrage peut-être assez complexe, mais une fois mis en place cela permet
à ScoDoc d'afficher l'emploi du temps des étudiants d'un semestre et facilite
grandement la saisie des absences.
-TODO **document en cours de rédaction : passer par le Discord pour en savoir plus**
-
## Principes généraux
-principe général: ics, ...
-TODO
+Les emplois du temps sont gérés par un autre logiciel, comme:
-### Fichiers ics
+- Hyperplanning
+- Celcat
+- GPU
+- VT [Visual Timetabling](http://visual.timetabling.free.fr)
+- ...
-TODO
+Ces logiciels peuvent exporter les calendriers au format ICS (iCalendar,
+[RFC 5545](https://datatracker.ietf.org/doc/html/rfc5545)).
-### Fuseau horaire
+ScoDoc va lire ces calendriers (fichiers ics). Il doit y avoir un fichier
+calendrier par semestre ScoDoc, contenant tous les évènements (cours, TD, TP...)
+du semestre.
-Les calendriers sont exportés avec des dates comportant l'indication du fuseau
-horaire. ScoDoc affiche en principe toutes les heures en *heure locale du
-serveur*, c'est à dire à la montre des étudiants (et non dans l'heure locale de
-l'utilisateur qui peut être en déplacement dans un autre pays).
+### Fichiers calendrier ics
+
+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 "semestre" (`FormSemestre` ScoDoc),
+identifié par un code (par défaut, le premier code étape Apogée) que l'on
+appellera `edt_id`. Lors de la configuration, on indiquera à ScoDoc où sont
+placés ces fichiers.
+
+
+!!! note "Note: fuseau horaire"
+
+ Les calendriers sont exportés avec des dates comportant l'indication du fuseau
+ horaire. ScoDoc affiche en principe toutes les heures en *heure locale du
+ serveur*, c'est à dire à la montre des étudiants (et non dans l'heure locale de
+ l'utilisateur qui peut être en déplacement dans un autre pays).
## Paramétrage global (administrateur)
-**par le super-admin: Indiquer comment paramétrer les regexp, avec un exemple VEVENT.**
+Le super-administrateur a accès à la page de configuration via le lien
+"**Configuration du suivi de l'assiduité et accès aux emplois du temps**".
-TODO
+La première chose à faire est d'indiquer où sont placés les fichiers calendrier.
+L'emploi du temps étant variable, ces fichiers vont en général être exportés à
+intervalles réguliers (par exemple chaque heure) et écrits dans un répertoire
+donné du serveur ScoDoc. ScoDoc ne se charge pas de cette tâche:
+l'administrateur système doit mettre en place un mécanisme d'export et de
+recopie ou partage des calendriers.
-## Identifiants: semestres, groupes, modules, enseignants
+Le chemin se configure ici:
-**indiquer où renseigner les identifiants (admin de dept) avec copies d'écran**
-TODO
+![Configuration chemin vers le calendrier](screens/edt-config-chemin.png)
+
+### Exemple d'évènement ics
+
+Exemple venant d'un établissement utilisant HyperPlanning. Les calendrier sont exportés
+régulièrement, on a un fichier ics par formation (code Apogée).
+
+```ics
+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)
Enseignant : 1234 - M. VIENNET EMMANUEL
Promotion : V2ROM - BUT2 RT pa. ROM
TD : Groupe 1
Salle : P202 CRIT - P202 CRIT.RESEAUX
Mémo : TP2 GPR1
+END:VEVENT
+```
+
+On a ici:
+
+- identifiant de la formation: dans le nom du fichier calendrier (ici `V2CYB.ics`);
+- identifiant du groupe: dans `SUMMARY`, `* - `
+- identifiant du module: on a le code `VCYR303` à trois endroits: `SUMMARY`,
+ `DESCRIPTION`, `X-ALT-DESC`.
+- identifiant de l'enseignant: `SUMMARY`, `DESCRIPTION`, `X-ALT-DESC`.
+
+## Extraction des identifiants: semestres, groupes, modules, enseignants
+
+La page de configuration globale, accessible uniquement au super-admin, permet
+d'indiquer comment ScoDoc doit extraire les identifiants du calendrier:
+
+![Configuration des expressions régulières d'extraction](screens/edt-config-regexps.png)
+
+
+## Configuration des identifiants EDT dans ScoDoc
+
+On a vu plus haut comment ScoDoc extrayait les identifiants de groupes, modules
+et enseignants des évènements calendrier. Mais ces identifiants ne sont pas
+toujours les mêmes que ceux utilisés dans ScoDoc, par exemple parce que les deux
+logiciels n'ont pas été configurés par le même service ou à des moments
+différents. Ainsi, il arrive qu'un groupe soit nommé "TD A" dans l'emploi du
+temps et "TDA" dans ScoDoc.
+
+Chaque objet ScoDoc a donc un champs spécial "identifiant EDT" (pour *emploi du
+temps) que l'on peut renseigner.
### Semestres
-TODO
+L'identifiant `edt_id` (utilisé pour trouver le fichier calendrier) du semestre
+devra être renseigné pour chaque semestre sur la page `Semestre/Modifier le
+semestre`. À défaut, ScoDoc utilisera le premier code étape Apogée.
+
+![Configuration de l'edt_id](screens/edt-config-edt_id.png)
### Groupes d'étudiants
-TODO
+Les identifiants de groupe sont édités sur la page **Groupes / Modifier groupes
+et partitions**.
+
+Pour faciliter la mise en correspondance, la page d'aide à la configuration de
+l'emploi du temps (lien accessible sous le calendrier) permet de lister les
+identifiants de groupes utilisés de part et d'autre.
+
+Dans l'exemple ci-dessous, on voit que de nombreux évènements du calendrier ne sont
+pas associés à un groupe reconnu ("STAGE", "START CAMPUS", etc.). ScoDoc les
+attribuera automatiquement à l'ensemble de la promotion (groupe "tous").
+
+On voit aussi que les groupes ne sont pas reconnus car ils ne sont pas nommés de
+la même façon dans l'emploi du temps (ici généré par HyperPlanning) et dans
+ScoDoc: ainsi, le "TD A" de l'emploi du temps est nommé "TDA" dans ScoDoc.
+Nous indiquons ci-dessous comment corriger cela.
+
+![Exemple configuration groupes EDT](screens/edt-config-groupes-1.png)
+
+Pour modifier les identifiants EDT de groupe, on peut renommer les groupes
+ScoDoc ou, si on souhaite conserver les noms, indiquer le nom de l'emploi du
+temps. Passer par la page **Groupes / Modifier groupes et partitions**:
+
+![Modification des noms de groupes](screens/edt-edit-partitions-1.png)
+
+et cliquer sur le "crayon" d'édition du groupe, par exemple pour indiquer que le
+"TDA" de ScoDoc est appelé "TD A" dans l'emploi du temps:
+
+![Modification des noms de groupes](screens/edt-edit-partitions-2.png)
+
### Modules
-TODO
+ScoDoc peut utiliser plusieurs codes, dans cet ordre:
+
+1. identifiant EDT du module du semestre;
+2. code Apogée du module du semestre (renseigné si ce code est différent de
+ celui indiqué dans la formation, ce qui est rare);
+3. code Apogée du module dans la formation.
+
+Dans la plupart des cas, l'emploi du temps utilise le code Apogée et il n'y a
+aucune configuration à faire (si vous avez déjà renseigné les codes Apogée dans
+ScoDoc).
+
+Pour éditer les identifiants et codes Apogée du semestre, passer par la page
+**Modifier les codes Apogée et emploi du temps des modules**, lien placé sur la
+page **Semestre / Modifier le semestre**:
+
+![Configuration des codes modules](screens/edt-config-codes-modules.png)
### Enseignants
-TODO
+Les évènements de calendrier peuvent indiquer des enseignants (le chargé de
+cours, ...), ce qui permettra à ScoDoc de proposer à l'utilisateur les plages le
+concernant. L'identifiant est là aussi variable selon les logiciels et les
+établissements (il peut s'agir de l'adresse mail, d'un numéro, etc.).
+
+L'utilisateur ScoDoc a un identifiant EDT, que l'on peut spécifier sur la page
+d'édition du compte (avec les droits super-admin):
+![Config compte utilisateur](screens/edt-config-user.png)
+
+Cet identifiant peut aussi être extrait automatiquement des informations
+renvoyées par le CAS quand il est utilisé. Pour cela, indiquer l'expression
+d'extraction sur la page de configuration du service CAS.
+
+![Configuration extraction uid](screens/edt-config-cas-userid.png)
## Problèmes fréquents (FAQ)
diff --git a/docs/screens/edt-config-cas-userid.png b/docs/screens/edt-config-cas-userid.png
new file mode 100644
index 000000000..471fc9895
Binary files /dev/null and b/docs/screens/edt-config-cas-userid.png differ
diff --git a/docs/screens/edt-config-chemin.png b/docs/screens/edt-config-chemin.png
new file mode 100644
index 000000000..d1d5d21ec
Binary files /dev/null and b/docs/screens/edt-config-chemin.png differ
diff --git a/docs/screens/edt-config-codes-modules.png b/docs/screens/edt-config-codes-modules.png
new file mode 100644
index 000000000..e5afad675
Binary files /dev/null and b/docs/screens/edt-config-codes-modules.png differ
diff --git a/docs/screens/edt-config-edt_id.png b/docs/screens/edt-config-edt_id.png
new file mode 100644
index 000000000..841345b1e
Binary files /dev/null and b/docs/screens/edt-config-edt_id.png differ
diff --git a/docs/screens/edt-config-groupes-1.png b/docs/screens/edt-config-groupes-1.png
new file mode 100644
index 000000000..f98f505f0
Binary files /dev/null and b/docs/screens/edt-config-groupes-1.png differ
diff --git a/docs/screens/edt-config-regexps.png b/docs/screens/edt-config-regexps.png
new file mode 100644
index 000000000..6cd30d711
Binary files /dev/null and b/docs/screens/edt-config-regexps.png differ
diff --git a/docs/screens/edt-config-user.png b/docs/screens/edt-config-user.png
new file mode 100644
index 000000000..027500362
Binary files /dev/null and b/docs/screens/edt-config-user.png differ
diff --git a/docs/screens/edt-edit-partitions-1.png b/docs/screens/edt-edit-partitions-1.png
new file mode 100644
index 000000000..ee0b7bc34
Binary files /dev/null and b/docs/screens/edt-edit-partitions-1.png differ
diff --git a/docs/screens/edt-edit-partitions-2.png b/docs/screens/edt-edit-partitions-2.png
new file mode 100644
index 000000000..5c8df6507
Binary files /dev/null and b/docs/screens/edt-edit-partitions-2.png differ