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