Compare commits

...

3 Commits

Author SHA1 Message Date
leonard_montalbano
882e7c5ed8 ajout de la doc de etat_evals 2022-06-01 16:05:11 +02:00
leonard_montalbano
77b4345e53 Merge branch 'master' of https://scodoc.org/git/viennet/DocScoDoc 2022-06-01 16:03:59 +02:00
6448fb6a07 BUT: modélisation validations jury 2022-05-25 08:19:52 +02:00
2 changed files with 160 additions and 21 deletions

View File

@ -1,5 +1,5 @@
# Les parcours du BUT dans ScoDoc # Implémentation des parcours du BUT dans ScoDoc
Cette documentation est destinée aux développeurs et à tous ceux qui souhaitent Cette documentation est *destinée aux développeurs* et à tous ceux qui souhaitent
comprendre le fonctionnement du logiciel. comprendre le fonctionnement du logiciel.
ScoDoc est livré avec les référentiels de compétences de tous les parcours de toutes ScoDoc est livré avec les référentiels de compétences de tous les parcours de toutes
@ -71,10 +71,10 @@ Le référentiel de compétences est structuré par les classes suivantes:
- `ApcCompetence` - `ApcCompetence`
- `ApcSituationPro` - `ApcSituationPro`
- `ApcComposanteEssentielle` - `ApcComposanteEssentielle`
- `ApcNiveau` (année (BUT1, BUT2, ...), ordre (1,2) ou (1,2,3)) *<-> UE* - `ApcNiveau` (année (BUT1, BUT2, ...), ordre (1,2) ou (1,2,3)) *<-> `UE`*
- `ApcAppCritique` *<-> `Module`* - `ApcAppCritique` *<-> `Module`*
- `ApcParcours` - `ApcParcours`
- `ApcAnneeParcours` (ordre=1,2,3) *<-> Module* - `ApcAnneeParcours` (ordre=1,2,3) *<-> `Module`*
- *`ApcCompetence`* <- `ApcParcoursNiveauCompetence` (niveau 1, 2, 3) -> *`ApcAnneeParcours`* - *`ApcCompetence`* <- `ApcParcoursNiveauCompetence` (niveau 1, 2, 3) -> *`ApcAnneeParcours`*
Notons: Notons:
@ -123,12 +123,21 @@ qui n'existent pas dans ScoDoc 9.2:
Le formsemestre est lié à un ensemble d'`ApcParcours`. Le formsemestre est lié à un ensemble d'`ApcParcours`.
La liste des niveaux (`ApcNiveau`) associés aux UEs:
```
[ ue.niveau_competence
for ue in formsemestre.query_ues() if ue.niveau_competence ]
```
#### Inscription d'un étudiant aux ModuleImpls #### Inscription d'un étudiant aux ModuleImpls
L'inscription reste libre (chaque individu peut être inscrit à un sous-ensemble L'inscription reste libre (chaque individu peut être inscrit à un sous-ensemble
quelconque des `ModuleImpl` du `FormSemestre`), mais il sera commode de pouvoir: quelconque des `ModuleImpl` du `FormSemestre`), mais il sera commode de pouvoir:
- créer des groupes de parcours - Créer des groupes de parcours (via `edit_partition_form`)
- inscrire les étudiants d'un groupe à tous les modules du parcours.
- Inscrire les étudiants d'un groupe à tous les modimpls du parcours:
Les modimpls d'un parcours sont donnés par la méthode `modimpls_parcours` de
`FormSemestre`.
#### Comment ScoDoc détermine-t-il les modules d'un parcours ? #### Comment ScoDoc détermine-t-il les modules d'un parcours ?
Un parcours étant associé à des compétences, et les niveaux compétences à des Un parcours étant associé à des compétences, et les niveaux compétences à des
@ -136,21 +145,23 @@ UE, on peut déterminer, pour un semestre de rang donné, l'ensemble des UE
associées à un parcours. associées à un parcours.
Par ailleurs, chaque niveau de compétence est associé à un ensemble d'AC Par ailleurs, chaque niveau de compétence est associé à un ensemble d'AC
(ApcAppCritique), et chaque module est aussi associé à son ensemble d'AC. (`ApcAppCritique`), et chaque module est aussi associé à son ensemble d'AC.
Pour chaque parcours d'un FormSemestre, on déterminera l'ensemble des ModuleImpl Pour chaque parcours d'un `FormSemestre`, on déterminera l'ensemble des `ModuleImpl`
de ce semestre ayant des AC communs avec ceux des niveaux de compétences de ce semestre ayant des AC communs avec ceux des niveaux de compétences
associés aux UE du semestre (sic). Notons que les niveaux de compétences sont associés aux UE du semestre (sic). Notons que les niveaux de compétences sont
annuels, mais que les ModuleImpl sont semestriels. annuels, mais que les `ModuleImpl` sont semestriels.
#### Vérifier que les ModuleImpls d'un parcours couvrent l'ensemble de ses ACs #### Vérifier que les ModuleImpls d'un parcours couvrent l'ensemble de ses ACs
Vérification utile en fin de formation.
##### En fin de formation, pour un étudiant ##### En fin de formation, pour un étudiant
Soit un étudiant inscrit à un parcours. En fin de formation (S6), on peut Soit un étudiant inscrit à un parcours. En fin de formation (S6), on peut
facilement vérifier que les AC ont été couverts: facilement vérifier que les AC ont été couverts:
- Lister les ModuleImpl auxquels l'étudiant a été inscrit dans ses semestres - Lister les `ModuleImpl` auxquels l'étudiant a été inscrit dans ses semestres
(S1 à S6); (S1 à S6);
- En déduire l'ensemble des AC évalués pour cet étudiant (indépendamment de sa - En déduire l'ensemble des AC évalués pour cet étudiant (indépendamment de sa
réussite); réussite);
@ -158,10 +169,11 @@ facilement vérifier que les AC ont été couverts:
##### Au moment de la définition d'une formation ##### Au moment de la définition d'une formation
Le parcours du ref. de compétence indique un ensemble d'AC pour chaque niveau (année). Le parcours du ref. de compétence indique un ensemble d'AC pour chaque niveau
On pourra vérifier que les Modules de chaque année suffisent à couvrir le (année). On pourra vérifier que les `Module`s de chaque année suffisent à
parcours. Mais si les Modules ne sont pas associés à un parcours, on ne peut pas couvrir le parcours. Mais si les `Module`s ne sont pas associés à un parcours,
aller plus loin. on ne peut pas aller plus loin.
#### Lister les regroupements d'UE d'un étudiant #### Lister les regroupements d'UE d'un étudiant
@ -171,11 +183,14 @@ inscription seulement en semestre pair, par exemple suite à un transfert ou un
arrêt temporaire du cursus). arrêt temporaire du cursus).
1. Déterminer l'*autre* semestre: semestre précédent ou suivant de la même 1. Déterminer l'*autre* semestre: semestre précédent ou suivant de la même
année, formation compatible (code formation identique ou bien même année, formation compatible (même référentiel de compétence) dans lequel
référentiel de compétence ?) dans lequel l'étudiant est inscrit. l'étudiant est inscrit.
2. Construire les couples d'UE (regroupements cohérent): apparier les UE qui 2. Construire les couples d'UE (regroupements cohérents): apparier les UE qui
ont le même ApcParcoursNiveauCompetence. ont le même `ApcParcoursNiveauCompetence`.
Un `RegroupementCoherentUE` est simplement un couple d'UE du même niveau dans le
cursus (BUT1, BUT2 ou BUT3).
#### Déterminer si un étudiant peut passer dans l'année suivante #### Déterminer si un étudiant peut passer dans l'année suivante
@ -213,9 +228,79 @@ Les ECTS sont actuellement des attributs de UEs.
Il faudrait avoir une association `UniteEns` }o..o{ `ApcParcours` qui contienne Il faudrait avoir une association `UniteEns` }o..o{ `ApcParcours` qui contienne
les valeurs des ECTS. les valeurs des ECTS.
### Diagramme de classes ## Enregistrement des validations de compétences
Juste pour rire, car ce diagramme est quasiment inexploitable. ### Rappel: validations en formations classiques
Pour toutes les formations, ScoDoc enregistre les validations de semestres et
d'UE, via la classe `ScolarFormSemestreValidation`, dont les instances stockent:
- `etudid, formsemestre_id, code, event_date`
et pour les validations de semestres:
- `assidu, compense_formsemestre_id`
ou pour les validations d'UE
- `ue_id, is_external`
Les codes sont définis dans `sco_codes_parcours.py`, avec les valeurs: `ADC,
ADJ, ADM, AJ, ATB, ATJ, ATT, CMP, DEF, NAR, RAT` (voir [Gestion des Jurys
DUT](GestionJury.md)).
### Validation des niveaux de compétences
Pour le BUT, il faut enregistrer la validation des *niveaux de compétences*,
constitués de *regroupements cohérents d'UE* ("RCUE"), qui sont les UEs de la
même année de parcours associées à la même compétence.
On va stocker:
- ...
### Validation du BUT
### Codes préconisés par l'AMUE pour le BUT
On associe lors du jury un code de décision:
- À chaque UE: `VAL`, `COMP`, `AJ`, `UESBL`.
- À chaque niveau de compétence (RCUE): `VAL`, `AJ`, `CODJ`.
- À chaque année:
- `PASD`: Passage en Année Supérieure de Droit (+ de 50% des UE VAL et RCUE Ajourné(s) >=8)
- `PAS1NCI`: Passage en Année Supérieure avec au moins 1 Niveau de Compétence Insuffisant (RCUE<8)
- `RED`: Redoublement de l'année
- `REO`: REOrientation - décision automatique (revient à une exclusion), plus de 4 semestres RED ou décision de Jury
- `DEM`: DEMission (lettre de l'étudiant).
- `EXC`: EXClusion, décision réservée à des décisions disciplinaires
- `ABAN`: ABANdon constaté (sans lettre de démission)
- `ABL`: Année BLanchie
- Au diplôme: `ADM`
#### Correspondance avec les codes classiques de ScoDoc
ScoDoc utilise des codes [documentés ici](GestionJury.md).
- Pour les semestres: `ADM`, `ADC`, `ADJ`, `ATT`, `ATB`, `ATJ`, `AJ`, `NAR`.
En BUT, pas besoin de codes semestriels. On ajoutera un code `APC` pour
simplement indiquer que le jury s'est tenu. Ce code ne sera pas exporté vers Apogée.
- Pour les UEs: **Codes d'état d'UE:**
ScoDoc classic | BUT AMUE | &nbsp;
----------|-----|-----
ADM | VAL | UE validée automatiquement |
CMP | COMP| UE validée par compensation|
AJ | AJ | UE ajournée (échec) |
- | UESBL | blanchissement (non dispo en ScoDoc 9) |
## Diagramme de classes
Juste pour rire, car ce diagramme est quasiment inexploitable (dessin réalisé
automatiquement en Mermaid).
``` mermaid ``` mermaid
erDiagram erDiagram

View File

@ -1061,10 +1061,64 @@ informations suivantes:
} }
] ]
``` ```
* **etat_evals** (**Attente de tests unitaires**)
* **Méthode:** GET
* **Paramètres:** `formsemestre_id`
* **Routes:** `/formsemestre/<int:formsemestre_id>/etat_evals`
* **Exemple d'utilisation:** `/ScoDoc/api/formsemestre/1/etat_evals`
* **Résultat:** Retourne les informations sur l'état des évaluations d'un semestre donnée
* **Exemple de résultat:**
```
{
"RT1.1": [
{
"id": 1,
"titre": "Initiation aux réseaux informatiques",
"evaluations": [
{
"id": 1,
"description": null,
"datetime_epreuve": null,
"heure_fin": "09:00:00",
"comptee": "oui",
"inscrits": 16,
"manquantes": 0,
"ABS": 0,
"ATT": 0,
"EXC": 0,
"saisie_notes": {
"datetime_debut": "Wed, 01 Jun 2022 10:37:59 GMT",
"datetime_fin": "Wed, 01 Jun 2022 13:18:09 GMT",
"datetime_mediane": "Wed, 01 Jun 2022 12:38:57 GMT"
}
},
{
"id": 22,
"description": null,
"datetime_epreuve": "Tue, 31 May 2022 00:00:00 GMT",
"heure_fin": "08:00:00",
"comptee": "oui",
"inscrits": 16,
"manquantes": 0,
"ABS": 0,
"ATT": 0,
"EXC": 0,
"saisie_notes": {
"datetime_debut": "Wed, 01 Jun 2022 12:04:19 GMT",
"datetime_fin": "Wed, 01 Jun 2022 12:04:36 GMT",
"datetime_mediane": "Wed, 01 Jun 2022 14:04:27 GMT"
}
},
]
},
]
}
```
* **`jury`** (**non implémentée**) * **jury** (**non implémentée**)
* **Méthode:** GET * **Méthode:** GET
* **Paramètres:** `formsemestre_id` * **Paramètres:** `formsemestre_id`
* **Routes:** `/formsemestre/<int:formsemestre_id>/jury` * **Routes:** `/formsemestre/<int:formsemestre_id>/jury`