# Pédago-API
## ADM
Cycle :
- Nom, e.g. "Bachelor Octobre 2022"
- Un `cycle` a des options. Ex: le cycle master a les options ISR, IDV.
- "Entree directe" est une option de cycle.
- L'ADM inscrit un étudiant à un cycle
## Pédago
Cycle :
- Nom, e.g. "Bachelor Octobre 2022" (correspondant à celui utilisé par l'ADM)
- Programme (UVs, etc)
- Règles de validation
Validation :
- Via un système expert
- Par exemple :
```
Validation(Competence_1) = Validation(UV_1) ET Validation(UV_2)
Validation(UV_1) = Moyenne(UV_1) > 10
Validation(UV_2) = Moyenne(UV_2) > 12
...
```
- Défini par la pédago au moment du programme, mais éditable par la suite
- Interface de preview
- Sauvegarde des résultats ou extraction dans une sheet
- Diffing de la preview avec les résultats sauvegardés
- Génération des bulletins basée sur les résultats sauvegardés
UV :
- Ensemble d'activités permettant de valider des compétences
- Conditions de validation (habituellement, moyenne pondérée des notes des activités)
Activité :
- Plusieurs types : projet, quest, cours, ressource
- Un temps de log associé
- Une activité définit un intervalle pour les tailles de groupe valides
- Si le type est quest ou projet, un barème associé et un coefficient (ou un poids) pour l'activité dans la notation du module
- Zéro ou plusieurs évènements associés
- Possiblement à extraire, pour avoir des évènements sans les lier à des activités ?
Sessions :
- Instance d'une UV
- Quand on attache une session à un cycle
=> Tous les étudiants du cycle reçoivent un tag les inscrivant à la session
- Quand un nouvel étudiant est ajouté à un cycle
=> Il reçoit un tag pour chaque session du cycle
- On peut attacher un tag manuellement à un étudiant pour l'inscrire à une session
- On peut attacher un tag à un étudiant pour indiquer qu'il ne doit pas être inscrit à une session, même si cette dernière est attachée à un cycle de l'étudiant
- Quand un étudiant démissionne d'un cycle
=> Il perd les tags qui avaient été automatiquement ajoutéspour chaque session du cycle
Instance d'une activité :
- Lorsqu'une session est créée à partir d'une UV, les activités de cette UV sont instanciées dans la session.
- Il faut ensuite paramétrer chaque instance d'activité pour lui donner des dates de début et de fin
Inscription à une activité d'une session :
- Quand un étudiant est inscrit à une session, il peut s'inscrire aux diférentes activités de la session
- Quand un étudiant s'inscrit à une activité, il forme un groupe
- Quand son groupe a une taille inférieure à la taille maximale valide, un étudiant peut inviter d'autres étudiants à rejoindre son groupe
- Quand un étudiant est invité dans un groupe, il peut accepter ou refuser l'invitation
- Un étudiant qui n'a pas encore répondu à une invitation est membre du groupe avec le statut "pending"
- Un étudiant qui accepte l'invitation est membre du groupe à part entière (avec le statut "confirmed")
- Un étudiant qui refuse l'invitation est retiré du groupe
- Un groupe est valide quand tous les membres ont le statut "confirmed" et que la taille du groupe est une taille valide
Notation d'une activité :
- A la fin d'une activité de type projet ou quest, une note peut être attribuée à un étudiant
- Par raccourci, on note "par groupe", ce qui permet d'attribuer une note commune à un groupe de l'activité, mais on peut individualiser la note
## Random Thoughts
### Programmes Calendaire & Pédagogique
- je pense qu'il existe une nuance entre `Programme Calendaire` et `Programme Pédagogique`.
- Le premier permet, en amont, de créer les Runs et les Séminaires en lien avec les imperatifs de financement (regles opcos, etc...). Il s'attache à déterminer le nombre d'heures de formation *facturées*
- Le second s'interresse au contenu pédagogique de chaque UV. Il s'établit plus organiquement au jour le jour, en capitalisant beaucoup sur les actions passées (duplication des Uvs/Activités). __A verifier:__ il s'applique à respecter les contraintes horaires fixées par le `Programme Calendaire`.