From 1f163557c67429a724ad9a4bb607cee6e6ed8501 Mon Sep 17 00:00:00 2001 From: viennet Date: Fri, 7 Oct 2022 22:29:59 +0200 Subject: [PATCH] =?UTF-8?q?Mises=20=C3=A0=20jours=20diverses=20+=20reprise?= =?UTF-8?q?=20ModelisationParcoursBUT?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/GuideDeveloppeurs.md | 7 +- docs/Internals.md | 7 +- docs/ModelisationParcoursBUT.md | 171 +++++++++++++++++++++----------- docs/index.md | 43 ++++---- mkdocs.yml | 2 + 5 files changed, 149 insertions(+), 81 deletions(-) diff --git a/docs/GuideDeveloppeurs.md b/docs/GuideDeveloppeurs.md index 7145b00..6d444bc 100644 --- a/docs/GuideDeveloppeurs.md +++ b/docs/GuideDeveloppeurs.md @@ -425,14 +425,15 @@ Pour régénérer le fichier indiquant la liste des paquets: Note: la mise à jour par `apt` recrée le virtualenv à chaque fois. ## Roadmap -Sujets **prioritaires** en 2021: +Sujets **prioritaires** en 2021-2022: - Modernisation du code: Flask, Python 3: achevé août 2021. - Prise en compte du Bachelor (BUT): SAÉ, suivi compétences, validations des - blocs, UE, semestres selon la cadrage et l'arrêté Licence Pro 2020. + blocs, UE, semestres selon la cadrage et l'arrêté Licence Pro 2020. (achevé + avec ScoDoc 9.2 puis complété en 9.3 et 9.4) - - Redéfinition API et interface mobile simplifiée. + - Définition et développement nouvelle API (achevé avec 9.3 en juillet 22) Autres sujets: - [voir les tickets](https://scodoc.org/git/viennet/ScoDoc/issues) diff --git a/docs/Internals.md b/docs/Internals.md index 4b29cc8..2347c22 100644 --- a/docs/Internals.md +++ b/docs/Internals.md @@ -2,7 +2,7 @@ Quelques informations pour les développeurs. - - le code est écrit en Python 3.9 (passage à 3.10 prévu en 2022). + - le code est écrit en Python 3.9 (passage à 3.10 prévu avec Debian 12). - le code doit être formatté par [black](https://pypi.org/project/black/) qui est normalement intégré à votre éditeur (VSCode et PyCharm sont deux choix judicieux). @@ -15,7 +15,7 @@ Quelques informations pour les développeurs. - [Redis](https://redis.io/) cache persistant - [NGINX](https://www.nginx.com/) serveur Web frontal - [gunicorn](https://gunicorn.org/) WSGI HTTP server - - et bien sûr Linux (Debian) et systemd. + - et bien sûr Linux (Debian 11 en 2021-2022) et systemd. # Principaux objets @@ -47,7 +47,8 @@ Une vue ordinaire (Web) pourrait ressembler à cela. Noter la présence de décorateurs: - `@scodoc` récupère le département (présent dans l'URL) et initialise quelques - trucs; + trucs, notamment `g.scodoc_dept` (l'acronyme du département courant) et + `g.scodoc_dept_id` (l'id du dépt. courant). - `@permission_required`: permet de contrôler l'accès, en se basant sur les permissions définies dans la classe `Permission`. diff --git a/docs/ModelisationParcoursBUT.md b/docs/ModelisationParcoursBUT.md index 25c11a2..57f9911 100644 --- a/docs/ModelisationParcoursBUT.md +++ b/docs/ModelisationParcoursBUT.md @@ -1,7 +1,8 @@ # Implémentation des parcours du BUT dans ScoDoc Cette page est *destinée aux développeurs* et à tous ceux qui souhaitent -comprendre le fonctionnement du logiciel: ce sont des notes un peu désordonnées -prises au moment de la conception. +comprendre le fonctionnement du logiciel. Elle ne concerne que les formations +BUT, dites dans ScoDoc "APC" (pour *approches par compétences*). + ScoDoc est livré avec les référentiels de compétences de tous les parcours de toutes les spécialités de BUT. En effet, ces référentiels sont nationaux, publiés par @@ -11,36 +12,74 @@ et ne sont pas susceptibles d'adaptations locales. Nous nous sommes basés sur les versions exportées du logiciel Orébut. -## Rappel général sur le BUT et ScoDoc -Rappel simplifié, se concentrant sur les points utiles pour l'évaluation -et les liens avec le cursus de formation: +!!! note + Les objets notés `CommeCeci` sont des modèles (classes SQLAlchemy) + implémentés par des tables SQL. + +## Structure des formations + +Pour les formation en APC, on a d'une part le *programme de formation*, et de +l'autre le *référentiel de compétences*. + +Pour le BUT, le référentiel de formation n'est pas fixé nationalement. Une part +est publiée (2/3) par le ministère, le reste est défini localement par les +universités (*adaptation locale*). + +Les formations ScoDoc (`Formation`) sont constituées de + - UE : `UniteEns` + - Modules (ressources, SAÉ, autres): `Module` + +La formation définit les UE et modules pour l'ensemble +des semestres d'un ou plusieurs parcours. De cette façon, on peut utiliser les +mêmes éléments dans plusieurs parcours, et grouper les étudiants de plusieurs +parcours dans le même semestre si on le souhaite. + +En ScoDoc 9.3, on avait une bijection UE <-> Niveau de compétence (`ApcNiveau`). +En 9.4, on aura une association UE <- parcours -> Niveau de compétence - Chaque parcours de BUT est défini par un ensemble de compétences. + - Une compétence est décomposée en deux ou trois *niveaux*, chacun constitué de deux UE consécutives (sur semestres pair et impair de la même année scolaire). - - Les UE sont des UE "LMD" habituelles; associées à des crédits ECTS, - capitalisables. Chaque UE est associée à une note (moyenne d'UE) et une - décision de jury (validée, ajournée, ...). -Dans le BUT, le référentiel de formation n'est pas fixé nationalement. Une part -est publiée (2/3) par le ministère, le reste est défini localement par les -universités (*adaptation locale*). +## Unités d'enseignement +Les UE sont des UE "LMD" habituelles; associées à des crédits ECTS, +capitalisables. Pour chaque UE on calcule une note (moyenne d'UE) et on attribue +une décision de jury (validée, ajournée, ...). + + +## Modules et parcours Les modules: on appelle ici "module" tout dispositif pédagogique évalué, dans le BUT ce sont les *ressources* et les *SAÉ*. -Dans ScoDoc, le programme pédagogique définit les UE et modules pour l'ensemble -des semestres d'un ou plusieurs parcours. De cette façon, on pourra utiliser les -mêmes éléments dans plusieurs parcours, et grouper les étudiants de plusieurs -parcours dans le même semestre si on le souhaite. +Chaque module peut être associé à un ou plusieurs parcours, via la table +d'association `ApcParcours` <-> `Module` (`parcours_modules`, many-to-many). -## Modélisation ScoDoc +Via *Formation*/*Modification du module*:
+ -On a d'une part le *programme de formation*, et de l'autre le *référentiel de -compétences*. +On peut ainsi vérifier que les parcours couvrent les AC, et faciliter les +inscriptions des étudiants aux modules (par ex. page présentant les modules +auxquels inscrire un groupe). -### Programme de formation +### Cas des modules présents dans plusieurs parcours + +Si un module est utilisé dans plusieurs parcours de la même formation BUT, cela +ne pose aucun problème, _sauf_ si ce module doit avoir des coefficients (vers +les UEs) différents selon le parcours dans lequel il intervient. Dans ce cas, +*il sera conseillé de créer plusieurs versions du module*, que l'on associera +aux divers parcours. + + +## Coefficients modules / UEs +Les coefficients sont des réels (non nullables), `ModuleUECoef`. + +Édition via *Formation*/*Édition des coefficients des modules vers les UEs*:
+ + +## Formation Le programme de formation est constitué des classes suivantes (en BUT et dans tous les types de formation. La notion de "matière" n'est pas utilisée en BUT). @@ -52,21 +91,14 @@ On voit que les modules ont toujours une UE de rattachement. Cependant, en BUT, un module peut intervenir dans le calcul des notes de plusieurs UE, via une matrice de coefficients. -On va aussi rattacher les Modules à un ou plusieurs ApcParcours, de façon à -pouvoir vérifier que les parcours couvrent les AC, et à faciliter les -inscriptions des étudiants aux modules (par ex. page présentant les modules -auxquels inscrire un groupe). +!!! example "Méthodes de Formation" + - `Formation.query_ues_parcour(parcour: ApcParcours)`->(query) les UEs d'un + parcours de la formation. -#### Cas des modules présents dans plusieurs parcours - -Si un module est utilisé dans plusieurs parcours de la même formation BUT, cela -ne pose aucun problème, _sauf_ si ce module doit avoir des coefficients (vers -les UEs) différents selon le parcours dans lequel il intervient. Dans ce cas, -*il sera conseillé de créer plusieurs versions du module*, que l'on associera -aux divers parcours. - -### Référentiel de compétences -Le référentiel de compétences est structuré par les classes suivantes: +## Référentiel de compétences +Le référentiel de compétences (`ApcReferentielCompetences`) défini les +compétences à valider (décomposées en niveaux) et les parcours BUT +(`ApcParcours`). Il est structuré ainsi: - `ApcReferentielCompetences` - `ApcCompetence` @@ -89,7 +121,7 @@ Notons: - Le lien entre les apprentissages critiques (`ApcAppCritique`) et les modules, qui permet d'établir les critères d'évaluation de chaque module. -### FormSemestres +## FormSemestres La formation est mise en œuvre dans des `FormSemestre` (date début, fin, enseignants responsables, ...) constitués de `ModuleImpl` (module avec enseignant, évaluations, ...). @@ -98,18 +130,30 @@ enseignants responsables, ...) constitués de `ModuleImpl` (module avec enseigna - `ModuleImpl` - `Evaluation` -### Inscriptions des étudiants +On a vu que la formation pouvait comporter plusieurs parcours. Un `FormSemestre` +peut implémenter un ou plusieurs parcours. On a en effet une table d'association +Parcours <-> FormSemestre (`parcours_formsemestre`, many-to-many). + +Via *Semestre*/*Modifier le semestre*:
+ + +!!! example "Méthodes de FormSemestre" + - `FormSemestre.query_ues(with_sport=False) ->` liste des UEs de ce semestres + (tous parcours confondus). + - `FormSemestre.query_ues_parcours_etud(etudid: int) -> `(query) UEs que suit + l'étudiant dans ce semestre BUT en fonction du parcours dans lequel il est + inscrit. + + +## Inscriptions des étudiants Les étudiants sont inscrits: - - dans un `FormSemestre` (`FormSemestreInscription`, avec état (`I`, `D`, - `DEF`) et étape Apogée) + - à des `FormSemestre` (`FormSemestreInscription`, avec: + - un état, "inscrit", "démission" ou "défaillant"; + - un `ApcParcours`; + - un code étape Apogée. + - dans un ModuleImpl (`ModuleImplInscription`) - - et, pour le BUT, dans un `ApcParcours`: l'inscription au formsemestre - `FormSemestreInscription` comporte: - - - l'état (`I`, `D`, `DEF`); - - l'étape Apogée; - - un `ApcParcours`. Un formsemestre est associé à un ensemble de parcours. L'étudiant peut être inscrit à l'un d'entre eux. Certaines formations commencent par une année de @@ -117,10 +161,10 @@ tronc commun, durant laquelle l'étudiant n'a pas encore choisi son parcours. On considérera que si l'étudiant n'est pas inscrit à un parcours, il est implicitement inscrit à tous les parcours du semestre. -### Associations (nouvelles pour le BUT): +## Associations (nouvelles pour le BUT): -Pour la gestion des parcours BUT, il faut introduire les associations suivantes, -qui n'existent pas dans ScoDoc 9.2: +Pour la gestion des parcours BUT, on a introduit les associations suivantes, +qui n'existaient pas dans ScoDoc 9.2: - UE <-> `ApcNiveau` : choix sur la page `ue_edit` - `Module` ||--o{ ensemble de `ApcParcours` @@ -129,9 +173,19 @@ qui n'existent pas dans ScoDoc 9.2: `formsemestre_editwithmodules` - `FormSemestreInscription` ||--|| `ApcParcours` : inscription au parcours, page à créer. -### Cas d'usage +## Cas d'usage -#### Niveau de compétence d'un formsemestre +### UEs à afficher sur les bulletins individuels +TODO + +### UEs à afficher sur les tableaux récap. de semestre +TODO + +### UEs à valider en jury BUT +TODO + + +### Niveau de compétence d'un formsemestre Le formsemestre est lié à un ensemble d'`ApcParcours`. @@ -141,7 +195,7 @@ La liste des niveaux (`ApcNiveau`) associés aux UEs: 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 quelconque des `ModuleImpl` du `FormSemestre`), mais il sera commode de pouvoir: @@ -151,7 +205,7 @@ quelconque des `ModuleImpl` du `FormSemestre`), mais il sera commode de pouvoir: 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 UE, on peut déterminer, pour un semestre de rang donné, l'ensemble des UE associées à un parcours. @@ -164,11 +218,11 @@ 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. -#### 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 facilement vérifier que les AC ont été couverts: @@ -179,14 +233,14 @@ facilement vérifier que les AC ont été couverts: réussite); - Comparer aux AC du parcours tels que décrits dans le référentiel de compétence. -##### 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). 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 UEs d'un parcours d'une formation +### Lister les UEs d'un parcours d'une formation ``` # Soit un parcours: parcour = formation.referentiel_competence.parcours.filter_by(code="ROM").first() @@ -196,7 +250,7 @@ formation.query_ues_parcour(parcour) formation.query_ues_parcour(parcour).filter_by(semestre_idx=2) ``` -#### Lister les regroupements d'UE d'un étudiant (RCUE) +### Lister les regroupements d'UE d'un étudiant (RCUE) Pour une année donnée: l'étudiant est inscrit dans ScoDoc soit dans le semestre impair, soit pair, soit les deux (il est rare mais pas impossible d'avoir une @@ -213,7 +267,7 @@ arrêt temporaire du cursus). 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 Note: on peut bien sûr toujours forcer le passage, pour traiter les cas particuliers (décision de jury manuelle). @@ -236,7 +290,7 @@ Il faut donc: l'étudiant, et vérifier que les UE de S1 et S2 sont validées. -#### Cas particulier: formations dont le nombre d'ECTS varie selon le parcours +### Cas particulier: formations dont le nombre d'ECTS varie selon le parcours Ce cas a été soulevé à propos du BUT MMI, qui préconiserait par exemple, au S4, une compétence développer avec 10 ECTS dans le parcours "web", et 5 ECTS dans le @@ -249,6 +303,7 @@ 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 ### Rappel: validations en formations classiques @@ -351,7 +406,7 @@ config générale). Juste pour rire, car ce diagramme est quasiment inexploitable (dessin réalisé automatiquement en Mermaid). -``` mermaid +```mermaid erDiagram FormSemestre ||--|{ ModuleImpl : contient ModuleImpl ||--o{ Evaluation : contient diff --git a/docs/index.md b/docs/index.md index 6238de2..da485b2 100644 --- a/docs/index.md +++ b/docs/index.md @@ -20,14 +20,13 @@ fournit notamment: ScoDoc est un *logiciel libre*: vous pouvez [participer à son développement](Contribuer.md). ScoDoc s'utilise sur un navigateur web standard: les utilisateurs n'ont rien à -installer. Les établissements ou écoles doivent configurer un serveur: voir le [guide -d'installation sur Debian 11](GuideInstallDebian11.md). La version ScoDoc 9 est -parue le 19 septembre 2021, la version 9.2 en avril 2022. Les mises à jour sont -appliquées régulièrement. +installer. Les établissements ou écoles doivent configurer un serveur: voir le +[guide d'installation sur Debian 11](GuideInstallDebian11.md). La version ScoDoc +9 est parue le 19 septembre 2021, la version 9.3 en juillet 2022. Les mises à jour sont +appliquées très fréquemment. -ScoDoc est utilisé dans de nombreux établissement français et étrangers, **dont -au moins 58 IUT**: [liste des utilisateurs connus de -ScoDoc](UtilisateursScoDoc.md). +ScoDoc est utilisé dans de nombreux établissements français et étrangers, **dont +au moins 58 IUT**: [liste des utilisateurs connus de ScoDoc](UtilisateursScoDoc.md). Depuis 2020, ScoDoc est soutenu par une [association à but non lucratif (1901)](AssociationScoDoc.md), à laquelle tous les départements ou @@ -55,7 +54,7 @@ retourner à `Emmanuel.Viennet at gmail.com`. ## Actualités -### Parution de ScoDoc 9 +### Parution de ScoDoc 9 en 2021-2022 Version majeure, avec une architecture logicielle complètement remaniée. Cette version modernise l'infrastructure logicielle (maintenant basée sur Python 3/Flask/postgresql) et propose de nombreuses améliorations, notamment pour la @@ -63,14 +62,16 @@ gestion du *[Bachelor Universitaire de Technologie (BUT)](BUT.md)*. ### Contrats d'apprentissage -Deux étudiants ont été recrutés (LP IUT Orléans, et IUT Villetaneuse): +Depuis 2021, plusieurs étudiants ont été recrutés (BUT R&T Lannion, LP IUT +Orléans, LP IUT Villetaneuse): - - développement d'une nouvelle API pour ScoDoc 9; - - développement d'un nouveau module de gestion des relations entreprises - (fichier, contacts, stages, alternance). + - développement d'une nouvelle API pour ScoDoc 9 (mise en service en juillet 2022); + - développement d'un nouveau module de gestion des relations entreprises: + fichier, contacts, stages, alternance (publiée en août 2022); + - refonte du module de gestion des absences (en cours en 2022-2023). -### Quatre stagiaires +### Stagiaires - version spéciale pour mobiles, développée par un stagiaire de l'association; - développements de tests unitaires et fonctionnels, par deux stagiaires, l'un @@ -80,7 +81,7 @@ Deux étudiants ont été recrutés (LP IUT Orléans, et IUT Villetaneuse): ### Nouveaux développeurs Plusieurs développeurs volontaires, la plupart enseignants en IUT, ont rejoint -l'équipe ces derniers mois. +l'équipe depuis 2020. ### Bachelor Universitaire de Technologie (BUT) et ScoDoc ScoDoc évolue pour intégrer la gestion du BUT, en approche par compétences, avec @@ -89,7 +90,7 @@ pédagogiques. ScoDoc n'a pas vocation à devenir un portfolio APC, mais continuera à vous aider à suivre, évaluer et noter vos étudiants, au plus près de vos pratiques. Voir [cette page pour plus d'informations](BUT.md). -Des formats de bulletins de notes adaptés seront proposés pour faciliter la +Des formats de bulletins de notes adaptés sont proposés pour faciliter la compréhension des résultats par les étudiants et enseignants. ### ScoDoc et Pégase/PC-SCOL @@ -101,12 +102,20 @@ l'interfaçage des outils (via des API), qui a priori sera plus fluide et facile entente. ### Feuille de route (roadmap) -Les prochaines versions de ScoDoc (*sous réserve !*): +Les prochaines versions de ScoDoc : + + - ScoDoc 9.5 : début 2023 + - Nouveau système de suivi de l'assiduité (absences, présences) + - ScoDoc 9.4 : prévue à l'automne 2022 + - cas complexes posés par les BUT (parcours, tenue des jury) + - nouveaux documents - - ScoDoc 9.3 : prévue en mai 2022 + - ScoDoc 9.3 : publiée en mai 2022 - tenue des jurys BUT et exports Apogée - gestion des parcours (pour la mise en place des semestre) + - nouvelle API + - module "relations entreprises" - ScoDoc 9.2 : publiée en avril 2022 nouvelles fonctionnalités liées au BUT diff --git a/mkdocs.yml b/mkdocs.yml index bfb1db4..c117353 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -62,6 +62,8 @@ extra_javascript: - https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js markdown_extensions: + - admonition + - pymdownx.details - pymdownx.arithmatex: generic: true - footnotes