Compare commits

..

No commits in common. "882e7c5ed84b40d07d440c2e5f3f35cf625776ce" and "63e33c5a7be2cb14c4e8429549c4c024782f542b" have entirely different histories.

2 changed files with 21 additions and 160 deletions

View File

@ -1,5 +1,5 @@
# Implémentation des parcours du BUT dans ScoDoc
Cette documentation est *destinée aux développeurs* et à tous ceux qui souhaitent
# Les parcours du BUT dans ScoDoc
Cette documentation est destinée aux développeurs et à tous ceux qui souhaitent
comprendre le fonctionnement du logiciel.
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`
- `ApcSituationPro`
- `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`*
- `ApcParcours`
- `ApcAnneeParcours` (ordre=1,2,3) *<-> `Module`*
- `ApcAnneeParcours` (ordre=1,2,3) *<-> Module*
- *`ApcCompetence`* <- `ApcParcoursNiveauCompetence` (niveau 1, 2, 3) -> *`ApcAnneeParcours`*
Notons:
@ -123,21 +123,12 @@ qui n'existent pas dans ScoDoc 9.2:
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
L'inscription reste libre (chaque individu peut être inscrit à un sous-ensemble
quelconque des `ModuleImpl` du `FormSemestre`), mais il sera commode de pouvoir:
- Créer des groupes de parcours (via `edit_partition_form`)
- 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`.
- créer des groupes de parcours
- inscrire les étudiants d'un groupe à tous les modules du 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
@ -145,23 +136,21 @@ UE, on peut déterminer, pour un semestre de rang donné, l'ensemble des UE
associées à un parcours.
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
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érification utile en fin de formation.
##### En fin de formation, pour un étudiant
Soit un étudiant inscrit à un parcours. En fin de formation (S6), on peut
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);
- En déduire l'ensemble des AC évalués pour cet étudiant (indépendamment de sa
réussite);
@ -169,11 +158,10 @@ facilement vérifier que les AC ont été couverts:
##### 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). On pourra vérifier que les `Module`s de chaque année suffisent à
couvrir le parcours. Mais si les `Module`s ne sont pas associés à un parcours,
on ne peut pas aller plus loin.
Le parcours du ref. de compétence indique un ensemble d'AC pour chaque niveau (année).
On pourra vérifier que les Modules de chaque année suffisent à couvrir le
parcours. Mais si les Modules ne sont pas associés à un parcours, on ne peut pas
aller plus loin.
#### Lister les regroupements d'UE d'un étudiant
@ -183,14 +171,11 @@ inscription seulement en semestre pair, par exemple suite à un transfert ou un
arrêt temporaire du cursus).
1. Déterminer l'*autre* semestre: semestre précédent ou suivant de la même
année, formation compatible (même référentiel de compétence) dans lequel
l'étudiant est inscrit.
année, formation compatible (code formation identique ou bien même
référentiel de compétence ?) dans lequel l'étudiant est inscrit.
2. Construire les couples d'UE (regroupements cohérents): apparier les UE qui
ont le même `ApcParcoursNiveauCompetence`.
Un `RegroupementCoherentUE` est simplement un couple d'UE du même niveau dans le
cursus (BUT1, BUT2 ou BUT3).
2. Construire les couples d'UE (regroupements cohérent): apparier les UE qui
ont le même ApcParcoursNiveauCompetence.
#### Déterminer si un étudiant peut passer dans l'année suivante
@ -228,79 +213,9 @@ Les ECTS sont actuellement des attributs de UEs.
Il faudrait avoir une association `UniteEns` }o..o{ `ApcParcours` qui contienne
les valeurs des ECTS.
## Enregistrement des validations de compétences
### Diagramme de classes
### 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).
Juste pour rire, car ce diagramme est quasiment inexploitable.
``` mermaid
erDiagram

View File

@ -1062,63 +1062,9 @@ 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
* **Paramètres:** `formsemestre_id`
* **Routes:** `/formsemestre/<int:formsemestre_id>/jury`