diff --git a/docs/ModelisationParcoursBUT.md b/docs/ModelisationParcoursBUT.md index 685d7473..b4702db6 100644 --- a/docs/ModelisationParcoursBUT.md +++ b/docs/ModelisationParcoursBUT.md @@ -1,5 +1,5 @@ -# Les parcours du BUT dans ScoDoc -Cette documentation est destinée aux développeurs et à tous ceux qui souhaitent +# Implémentation des 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,12 +123,21 @@ 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 - - inscrire les étudiants d'un groupe à tous les modules du parcours. + - 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`. #### Comment ScoDoc détermine-t-il les modules d'un parcours ? 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. 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); @@ -158,10 +169,11 @@ 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 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. +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. + #### 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). 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 - référentiel de compétence ?) dans lequel l'étudiant est inscrit. + année, formation compatible (même référentiel de compétence) dans lequel + l'étudiant est inscrit. - 2. Construire les couples d'UE (regroupements cohérent): apparier les UE qui - ont le même ApcParcoursNiveauCompetence. + 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). #### 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 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 |   +----------|-----|----- +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 erDiagram