From 003158e9b59bec6ca5c7aad852162c79d5cced9e Mon Sep 17 00:00:00 2001 From: viennet Date: Fri, 13 May 2022 11:24:58 -0400 Subject: [PATCH 1/6] =?UTF-8?q?API:=20pr=C3=A9sentation=20des=20routes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/ScoDoc9API.md | 43 +++++++++++++++++++++++++++++-------------- 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/docs/ScoDoc9API.md b/docs/ScoDoc9API.md index 440d2ed5..c69eaa5a 100644 --- a/docs/ScoDoc9API.md +++ b/docs/ScoDoc9API.md @@ -318,7 +318,10 @@ Le `titre`est celui donné par l'utilisateur dans le formsemestre, tandis que le * **Paramètres:** `etudid`, `nip`, `ine` * **Routes:** `/etudiant/etudid/` ou `/etudiant/nip/` ou `/etudiant/ine/` * **Exemple d'utilisation:** `/api/etudiant/nip/1` - * **Résultat:** Retourne les informations de l'étudiant correspondant à l'id passé en paramètres. (json) + * **Résultat:** Retourne les informations sur l'étudiant correspondant à + l'id passé en paramètres. + Les codes INE et NIP sont uniques au sein d'un département. + Si plusieurs objets étudiant ont le même code, on ramène le plus récemment inscrit. * **Exemple de résultat:** ``` { @@ -348,7 +351,19 @@ Le `titre`est celui donné par l'utilisateur dans le formsemestre, tandis que le "description": "" } ``` +* **`etudiants`** + * **Méthode:** GET + * **Paramètres:** `etudid`, `nip`, `ine` + * **Routes:** `/etudiants/etudid/` ou `/etudiants/nip/` ou `/etudiants/ine/` + * **Exemple d'utilisation:** `/api/etudiants/nip/1` + * **Résultat:** Info sur le ou les étudiants correspondant. + Comme `/etudiant` mais renvoie toujours une liste. + Si non trouvé, liste vide, pas d'erreur. + Dans 99% des cas, la liste contient un seul étudiant, mais si l'étudiant a + été inscrit dans plusieurs départements, on a plusieurs objets (1 par + dept.). + #### Cursus * **`etudiant_formsemestres`** * **Méthode:** GET @@ -617,7 +632,7 @@ Le `titre`est celui donné par l'utilisateur dans le formsemestre, tandis que le ## Programmes de formations * **`formations_ids`** * **Méthode:** GET - * **Routes:** `/ScoDoc/api/formations_ids` + * **Routes:** `/formations_ids` * **Exemple d'utilisation:** `/ScoDoc/api/formations_ids` * **Résultat:** Retourne la liste des ids de toutes les formations (tous départements) * **Exemple de résultat:** `[17, 99, 32]` @@ -1065,7 +1080,7 @@ informations suivantes: * **Méthode:** GET * **Paramètres:** `dept`, `formsemestre_id` * **Routes:** `/formsemestre//programme` - * **Exemple d'utilisation:** `api/formsemestre/1/programme` + * **Exemple d'utilisation:** `/ScoDoc/api/formsemestre/1/programme` * **Résultat:** Retourne la liste des UEs, modules, ressources et SAE d'un semestre. * **Exemple de résultat:** ``` @@ -1181,7 +1196,7 @@ d'un nombre quelconque de groupes d'étudiants. * **`partition`** * **Méthode: GET** * **Paramètres:** `formsemestre_id` - * **Routes:** `/ScoDoc/api/partitions/` + * **Routes:** `/partitions/` * **Exemple d'utilisation:** `/ScoDoc/api/partition/48` * **Résultat:** La liste de toutes les partitions d'un formsemestre. * **Exemple de résultat:** @@ -1338,8 +1353,8 @@ d'un nombre quelconque de groupes d'étudiants. * **`absences`** * **Méthode:** GET * **Paramètres:** `etudid`, `nip`, `ine` - * **Routes:** `/absences/etudid/` ou `/absences/nip/` ou `/absences/ine/` - * **Exemple d'utilisation:** `/ScoDoc/api/absences/ine/1` + * **Routes:** `/absences/etudid/` + * **Exemple d'utilisation:** `/ScoDoc/api/absences/etudid/123456` * **Résultat:** Retourne la liste des absences d'un étudiant donné * **Exemple de résultat:** ``` @@ -1367,9 +1382,9 @@ d'un nombre quelconque de groupes d'étudiants. * **`absences_just`** * **Méthode:** GET - * **Paramètres:** `etudid`, `nip`, `ine` - * **Routes:** `/absences/etudid//just` ou `/absences/nip//just` ou `/absences/ine//just` - * **Exemple d'utilisation:** `/ScoDoc/api/absences/ine/1/just` + * **Paramètres:** `etudid` + * **Routes:** `/absences/etudid//just` + * **Exemple d'utilisation:** `/ScoDoc/api/absences/etudid/1/just` * **Résultat:** Retourne la liste des absences justifiées d'un étudiant donné * **Exemple de résultat:** ``` @@ -1437,7 +1452,7 @@ d'un nombre quelconque de groupes d'étudiants. * **`liste des logos globaux`** * **Méthode:** GET * **Paramètres:** `format` (json, xml), json par défaut - * **Route :** `/ScoDoc/api/logos` + * **Route :** `/logos` * **Exemple d'utilisation :** `/ScoDoc/api/logos?format=xml` * **Résultat :** Liste des logos définis pour le site scodoc. * **Exemple de résultat:** `['header', 'footer', 'custom']` @@ -1446,7 +1461,7 @@ d'un nombre quelconque de groupes d'étudiants. * **`récupération d'un logo global`** * **Méthode:** GET * **Paramètres :** Aucun - * **Route:** `/ScoDoc/api/logos/` + * **Route:** `/logos/` * **Exemple d'utilisation :** `/ScoDoc/api/logos/header` * **Résultat :** l'image (format png ou jpg) @@ -1454,8 +1469,8 @@ d'un nombre quelconque de groupes d'étudiants. * **`logo d'un département`** * **Méthode:** GET * **Paramètres:** `format` (json, xml) - * **Route :** `/ScoDoc/api/departements//logos` - * **Exemple d'utilisation :** `/ScoDoc/api/MMI/logos` + * **Route :** `/departements//logos` + * **Exemple d'utilisation :** `/ScoDoc/api/departements/MMI/logos` * **Résultat :** Liste des logos définis pour le département visé. * **Exemple de résultat:** `['footer', 'signature', 'universite']` @@ -1463,7 +1478,7 @@ d'un nombre quelconque de groupes d'étudiants. * **`récupération d'un logo global`** * **Méthode:** GET * **Paramètres :** Aucun - * **Route:** `/ScoDoc/api/departements//logos/` + * **Route:** `/departements//logos/` * **Exemple d'utilisation:** `/ScoDoc/api/departements/MMI/logos/header` * **Résultat :** l'image (format png ou jpg) From 17b262178d07e086115f66177eea92b523ce0946 Mon Sep 17 00:00:00 2001 From: viennet Date: Fri, 13 May 2022 12:07:19 -0400 Subject: [PATCH 2/6] API: Modif /evaluations --- docs/ScoDoc9API.md | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/docs/ScoDoc9API.md b/docs/ScoDoc9API.md index c69eaa5a..ab39557f 100644 --- a/docs/ScoDoc9API.md +++ b/docs/ScoDoc9API.md @@ -1292,24 +1292,22 @@ d'un nombre quelconque de groupes d'étudiants. ``` [ { - "moduleimpl_id": 1, - "jour": "20/04/2022", - "heure_debut": "08h00", - "description": "eval1", - "coefficient": 1, - "publish_incomplete": false, - "numero": 0, - "id": 1, - "heure_fin": "09h00", - "note_max": 20, - "visibulletin": true, - "evaluation_type": 0, - "evaluation_id": 1, - "jouriso": "2022-04-20", - "duree": "1h", - "descrheure": " de 08h00 à 09h00", - "matin": 1, "apresmidi": 0 + "coefficient": 1, + "description": "Compte-rendu de TP 2", + 'date_debut': '2022-05-13T11:30:00', + 'date_fin': '2022-05-13T12:30:00', + "evaluation_id": 1, + "evaluation_type": 0, + "id": 1, + "jour": "13/05/2022", + "matin": 1, + "moduleimpl_id": 1, + "note_max": 20, + "numero": 0, + "publish_incomplete": false, + "poids" : {1896: 0.0, 1897: 2.3, 1898: 4.2}, + "visibulletin": true, } ] ``` From 591d622f0744e2d0dfe54b0b23a5b0d81bda58cb Mon Sep 17 00:00:00 2001 From: viennet Date: Fri, 13 May 2022 12:20:13 -0400 Subject: [PATCH 3/6] API: wip --- docs/ScoDoc9API.md | 80 ++++++---------------------------------------- 1 file changed, 9 insertions(+), 71 deletions(-) diff --git a/docs/ScoDoc9API.md b/docs/ScoDoc9API.md index ab39557f..5c5bf1e7 100644 --- a/docs/ScoDoc9API.md +++ b/docs/ScoDoc9API.md @@ -1223,54 +1223,16 @@ d'un nombre quelconque de groupes d'étudiants. ] ``` - * **`etud_in_group`** + * **`/partitions/groups/`** * **Méthode: GET** * **Paramètres:** `group_id`, `etat` * **Routes:** `/partitions/groups/` ou `/partitions/groups//etat/` * **Exemple d'utilisation:** `/ScoDoc/api/partitions/groups/1` - * **Résultat:** La liste de toutes les partitions d'un formsemestre. + * **Résultat:** XXX à préciser * **Exemple de résultat:** - ``` - [ - { - "etudid": 10, - "id": 10, - "dept_id": 1, - "nom": "BOUTET", - "prenom": "Marguerite", - "nom_usuel": "", - "civilite": "F", - "date_naissance": null, - "lieu_naissance": null, - "dept_naissance": null, - "nationalite": null, - "statut": null, - "boursier": null, - "photo_filename": null, - "code_nip": "10", - "code_ine": "10", - "scodoc7_id": null, - "email": "MARGUERITE.BOUTET@example.com", - "emailperso": null, - "domicile": null, - "codepostaldomicile": null, - "villedomicile": null, - "paysdomicile": null, - "telephone": null, - "telephonemobile": null, - "fax": null, - "typeadresse": "domicile", - "description": null, - "group_id": 1, - "etat": "I", - "civilite_str": "Mme", - "nom_disp": "BOUTET", - "nomprenom": "Mme Marguerite BOUTET", - "ne": "e", - "email_default": "MARGUERITE.BOUTET@example.com" - } - ] - ``` + ``` + + ``` * **`set_groups`** **NON IMPLEMENTE** @@ -1281,13 +1243,14 @@ d'un nombre quelconque de groupes d'étudiants. * **Résultat:** Set les groups. -### Résultats des évaluations +### Évaluations * **`evaluations`** * **Méthode:** GET * **Paramètres:** `moduleimpl_id` * **Routes:** `/evaluations/` * **Exemple d'utilisation:** `/ScoDoc/api/evaluations/1` - * **Résultat:** Retourne la liste des évaluations à partir de l'id d'un moduleimpl + * **Résultat:** Retourne la liste des évaluations à partir de l'id d'un + moduleimpl (quel que soit leur statut). * **Exemple de résultat:** ``` [ @@ -1320,28 +1283,7 @@ d'un nombre quelconque de groupes d'étudiants. * **Exemple d'utilisation:** `/ScoDoc/api/evaluations/eval_notes/1` * **Résultat:** Retourne la liste des notes à partir de l'id d'une évaluation donnée * **Exemple de résultat:** - ``` - { - "1": { - "id": 1, - "etudid": 10, - "evaluation_id": 1, - "value": 15, - "comment": "", - "date": "Wed, 20 Apr 2022 06:49:05 GMT", - "uid": 2 - }, - "2": { - "id": 2, - "etudid": 1, - "evaluation_id": 1, - "value": 12, - "comment": "", - "date": "Wed, 20 Apr 2022 06:49:06 GMT", - "uid": 2 - } - } - ``` + XXX à revoir (à spécifier) ### Absences @@ -1358,7 +1300,6 @@ d'un nombre quelconque de groupes d'étudiants. ``` [ { - "jour": "2022-04-15", "matin": true, "estabs": true, "estjust": true, @@ -1367,7 +1308,6 @@ d'un nombre quelconque de groupes d'étudiants. "end": "2022-04-15 11:59:59" }, { - "jour": "2022-04-15", "matin": false, "estabs": true, "estjust": false, @@ -1388,7 +1328,6 @@ d'un nombre quelconque de groupes d'étudiants. ``` [ { - "jour": "2022-04-15", "matin": true, "estabs": true, "estjust": true, @@ -1397,7 +1336,6 @@ d'un nombre quelconque de groupes d'étudiants. "end": "2022-04-15 11:59:59" }, { - "jour": "2022-04-15", "matin": false, "estabs": true, "estjust": true, From f5c93d1a3fea4a91d8fd3e004f6549557381958e Mon Sep 17 00:00:00 2001 From: viennet Date: Mon, 16 May 2022 07:50:45 +0200 Subject: [PATCH 4/6] =?UTF-8?q?D=C3=A9atils=20config=20mail?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/ProblemesMail.md | 46 ++++++++++++++++++++++++++++++++----------- 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/docs/ProblemesMail.md b/docs/ProblemesMail.md index c816b735..608fe46d 100644 --- a/docs/ProblemesMail.md +++ b/docs/ProblemesMail.md @@ -1,19 +1,25 @@ # Problèmes d'envoi de courriers électroniques -ScoDoc envoie des mails en plusieurs occasions (bulletins de notes, importation d'utilisateurs, alertes sur absences, exceptions dans le code). +ScoDoc envoie des mails en plusieurs occasions (bulletins de notes, importation +d'utilisateurs, alertes sur absences, exceptions dans le code). -Cette page explique ce qu'il faut vérifier si l'envoi des messages ne fonctionne pas. +Cette page explique ce qu'il faut vérifier si l'envoi des messages ne fonctionne +pas. + +## Configuration du serveur +ScoDoc suppose que la machine serveur sur laquelle il s'exécute est dotée d'un +serveur de mail capable d'envoyer des messages (soit directement, soit via un +relais). L'installeur propose d'installer le logiciel serveur Postfix. -ScoDoc suppose que la machine serveur sur laquelle il s'exécute est dotée d'un serveur de mail capable d'envoyer des messages (soit directement, soit via un relais). L'installeur propose d'installer le logiciel serveur Postfix. - - - 1. Vérifier que votre serveur de messagerie est bien configuré: dans un terminal, envoyez un message + 1. Vérifier que votre serveur de messagerie est bien configuré: dans un + terminal, envoyez un message ``` mail mon_adresse@universite.fr ... entrer votre texte, terminez par ctrl-d ... ``` -Si vous ne recevez pas le message que vous vous envoyiez, revoir la configuration de votre serveur, par exemple avec la commande +Si vous ne recevez pas le message que vous vous envoyiez, revoir la +configuration de votre serveur, par exemple avec la commande ``` dpkg-reconfigure postfix ``` @@ -29,14 +35,19 @@ Connected to localhost. Escape character is '^]'. 220 nom_du_serveur ESMTP Postfix (Debian/GNU) ``` -(quitter avec ctrl-] puis quit) +(quitter avec ctrl-] puis `quit`) - 3. Si cela fonctionne, passer au test de ScoDoc: créer un étudiant bidon, lui attribuer une adresse mail que vous pouvez lire, l'inscrire à un semestre, et lui envoyer son bulletin par mail. (sur la page web de son bulletin, petit menu "Autres opérations"). +## Tests avec ScoDoc -A ce moment, regarder le log +Une fois que le mail, fonctionne, passer au test de ScoDoc: créer un étudiant +bidon, lui attribuer une adresse mail que vous pouvez lire, l'inscrire à un +semestre, et lui envoyer son bulletin par mail. (sur la page web de son +bulletin, petit menu "Autres opérations"). + +À ce moment, regarder le log `/opt/scodoc/instance/log/notes.log` -on devrait voir quelque chose ressemblant à: +On devrait voir quelque chose ressemblant à: ``` [Sun Sep 07 11:37:40 2008] mail bulletin a emmanuel.viennet@gmail.com [Sun Sep 07 11:37:40 2008] sendEmail: ok @@ -51,6 +62,17 @@ delays=0.03/0/0.41/1, dsn=2.0.0, status=sent (250 2.0.0 OK 1220942550 y2si226470 Cela devrait permettre de savoir: - 1. si ScoDoc tente d'envoyer un mail (notes.log) + 1. si ScoDoc tente d'envoyer un mail (`notes.log`); + 2. si le serveur SMTP arrive à traiter ce mail. +## Redirection des tous les mails de ScoDoc + +Afin de vérifier les envois de mail, il peut être pratique de détourner tous les +envois vers une adresse (cela permet par exemple de tester les envois de +notification ou de bulletins sans déranger les étudiants ou les collègues). + +Pour cela, aller sur la page *Paramétrage*, tout en bas, et indiquer une +*Adresse de test*. Ne pas oublier de l'enlever une fois les essais effectués ! + + From 533a698a093eb6ec2e03358f464edf41999ca826 Mon Sep 17 00:00:00 2001 From: viennet Date: Tue, 17 May 2022 10:39:52 +0200 Subject: [PATCH 5/6] API: ajout annee_scolaire --- docs/ScoDoc9API.md | 75 +++++++++++++--------------------------------- 1 file changed, 21 insertions(+), 54 deletions(-) diff --git a/docs/ScoDoc9API.md b/docs/ScoDoc9API.md index 5c5bf1e7..4850b0d9 100644 --- a/docs/ScoDoc9API.md +++ b/docs/ScoDoc9API.md @@ -777,35 +777,36 @@ Les sessions de formation (qu'elles durent une année ou un mois) sont représen * **Exemple de résultat:** ``` { + "annee_scolaire" : "2021 - 2022", + "block_moyennes": false, + "bul_bgcolor": "white", + "bul_hide_xml": false, + "date_debut_iso": "2021-09-01", + "date_debut": "01/09/2021", + "date_fin_iso": "2022-08-31", "date_fin": "31/08/2022", - "resp_can_edit": false, "dept_id": 1, + "elt_annee_apo": null, + "elt_sem_apo": null, + "ens_can_edit_eval": false, "etat": true, - "resp_can_change_ens": true, + "formation_id": 1, + "formsemestre_id": 1, + "gestion_compensation": false, + "gestion_semestrielle": false, "id": 1, "modalite": "FI", - "ens_can_edit_eval": false, - "formation_id": 1, - "gestion_compensation": false, - "elt_sem_apo": null, - "semestre_id": 1, - "bul_hide_xml": false, - "elt_annee_apo": null, - "titre": "Semestre test", - "block_moyennes": false, - "scodoc7_id": null, - "date_debut": "01/09/2021", - "gestion_semestrielle": false, - "bul_bgcolor": "white", - "formsemestre_id": 1, - "titre_num": "Semestre test semestre 1", - "date_debut_iso": "2021-09-01", - "date_fin_iso": "2022-08-31", + "resp_can_change_ens": true, + "resp_can_edit": false, "responsables": [ 12, 42 ], + "scodoc7_id": null, + "semestre_id": 1, "titre_court": "BUT MMI" + "titre_num": "Semestre test semestre 1", + "titre": "Semestre test", } ``` * **`formsemestre_apo`** @@ -816,41 +817,7 @@ Les sessions de formation (qu'elles durent une année ou un mois) sont représen * **Résultat:** Retourne les informations sur les formsemestres * **Exemple de résultat:** ``` - [ - { - "block_moyennes": false, - "bul_bgcolor": "white", - "bul_hide_xml": false, - "date_debut_iso": "2021-09-01", - "date_debut": "01/09/2021", - "date_fin_iso": "2022-08-31", - "date_fin": "31/08/2022", - "dept_id": 1, - "elt_annee_apo": null, - "elt_sem_apo": null, - "ens_can_edit_eval": false, - "etat": true, - "formation_id": 1, - "formsemestre_id": 1, - "gestion_compensation": false, - "gestion_semestrielle": false, - "id": 1, - "modalite": "FI", - "resp_can_change_ens": true, - "resp_can_edit": false, - "responsables": [ - 12, - 42 - ], - "scodoc7_id": null, - "semestre_id": 1, - "titre_court": "BUT MMI", - "titre_num": "Semestre test semestre 1", - "titre": "Semestre test", - "session_id": "MMI-BUT-FI-S1-2021", - }, - ... - ] + [ { formsemestre comme ci-dessus }, ... ] ``` From f56030422e7c3e21d8257ae92cdd60a575b64972 Mon Sep 17 00:00:00 2001 From: viennet Date: Sat, 21 May 2022 23:49:31 +0200 Subject: [PATCH 6/6] =?UTF-8?q?D=C3=A9tails=20mod=C3=A9lisation=20parcours?= =?UTF-8?q?=20BUT?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/ModelisationParcoursBUT.md | 141 +++++++++++++++++++++++++------- docs/ScoDoc9API.md | 8 +- 2 files changed, 116 insertions(+), 33 deletions(-) diff --git a/docs/ModelisationParcoursBUT.md b/docs/ModelisationParcoursBUT.md index e221ea6e..685d7473 100644 --- a/docs/ModelisationParcoursBUT.md +++ b/docs/ModelisationParcoursBUT.md @@ -43,9 +43,9 @@ compétences*. 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). - - Formation (ex: "BUT R&T") - - UniteEns (UE, ex: "Administrer les réseaux") - - Modules (ressources, SAÉs) *<-> ApcAppCritique*, *<-> ApcAnneeParcours* + - `Formation` (ex: "BUT R&T") + - `UniteEns` (UE, ex: "Administrer les réseaux") + - `Modules` (ressources, SAÉs) *<-> `ApcAppCritique`*, *<-> `ApcAnneeParcours`* 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 @@ -56,60 +56,76 @@ 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). +#### 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: - - ApcReferentielCompetences - - ApcCompetence - - ApcSituationPro - - ApcComposanteEssentielle - - ApcNiveau (année (BUT1, BUT2, ...), ordre (1,2) ou (1,2,3)) *<-> UE* - - ApcAppCritique *<-> Module* - - ApcParcours - - ApcAnneeParcours (ordre=1,2,3) *<-> Module* - - *ApcCompetence* <- ApcParcoursNiveauCompetence (niveau 1, 2, 3) -> *ApcAnneeParcours* + - `ApcReferentielCompetences` + - `ApcCompetence` + - `ApcSituationPro` + - `ApcComposanteEssentielle` + - `ApcNiveau` (année (BUT1, BUT2, ...), ordre (1,2) ou (1,2,3)) *<-> UE* + - `ApcAppCritique` *<-> `Module`* + - `ApcParcours` + - `ApcAnneeParcours` (ordre=1,2,3) *<-> Module* + - *`ApcCompetence`* <- `ApcParcoursNiveauCompetence` (niveau 1, 2, 3) -> *`ApcAnneeParcours`* -Notons le lien entre les apprentissages critiques (ApcAppCritique) et les +Notons: + + - Le lien entre UE et Niveau de compétence (`ApcNiveau`). + + - Le lien à entre Compétence et Année de Parcours à travers la table + (*many-to-many*) `ApcParcoursNiveauCompetence` qui indique le niveau ce + compétence concerné. + + - Le lien entre les apprentissages critiques (`ApcAppCritique`) et les modules, qui permet d'établir les critères d'évaluation de chaque module. ### FormSemestres -La formation est mise en œuvre dans des FormSemestre (date début, fin, -enseignants responsables, ...) constitués de ModuleImpl (module avec enseignant, +La formation est mise en œuvre dans des `FormSemestre` (date début, fin, +enseignants responsables, ...) constitués de `ModuleImpl` (module avec enseignant, évaluations, ...). - - FormSemestre - - ModuleImpl - - Evaluation + - `FormSemestre` + - `ModuleImpl` + - `Evaluation` ### Inscriptions des étudiants Les étudiants sont inscrits: - - dans un FormSemestre (FormSemestreInscription, avec état (I, D, DEF) et étape - Apogée) - - dans un ModuleImpl (ModuleImplInscription) - - et, pour le BUT, dans un ApcParcours (TODO) + - dans un `FormSemestre` (`FormSemestreInscription`, avec état (`I`, `D`, + `DEF`) et étape Apogée) + - dans un ModuleImpl (`ModuleImplInscription`) + - et, pour le BUT, dans un `ApcParcours` (**TODO**) ### 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: - - UE <-> ApcNiveau : choix sur la page `ue_edit` - - Module <-> ensemble de ApcParcours - - Module ||--o{ ApcAppCritique : choix sur la page `module_edit` - - FormSemestre ||--o{ ApcParcours : choix sur la page + - UE <-> `ApcNiveau` : choix sur la page `ue_edit` + - `Module` <-> ensemble de `ApcParcours` + - `Module` ||--o{ `ApcAppCritique` : choix sur la page `module_edit` + - `FormSemestre` ||--o{ `ApcParcours` : choix sur la page `formsemestre_editwithmodules` - - Identite }o--o{ ApcParcours : inscription au parcours, page à créer. + - `Identite` }o--o{ `ApcParcours` : inscription au parcours, page à créer. ### Cas d'usage #### Niveau de compétence d'un formsemestre -Le formsemestre est lié à un ensemble d'ApcParcours. +Le formsemestre est lié à un ensemble d'`ApcParcours`. #### 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: +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. @@ -184,5 +200,72 @@ 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 +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 +parcours "crea". +Si on veut pouvoir utiliser la même formation, et éventuellement mélanger les +étudiants des différents parcours dans le même `FormSemestre` (ce qui +simplifierait la gestion des modules communs), il faut modifier la modélisation: +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 + +Juste pour rire, car ce diagramme est quasiment inexploitable. + +``` mermaid +erDiagram + FormSemestre ||--|{ ModuleImpl : contient + ModuleImpl ||--o{ Evaluation : contient + Module ||--o{ ModuleImpl : "" + Formation ||--o{ UE : "" + UE ||--|{ Module : "" + + Formation { + str titre + str acronym + str code + } + + Etudiant { + str nom + } + + FormSemestre { + int dept_id + str titre + date date_debut + date date_fin + } + + Etudiant }|..|{ ModuleImpl : ModuleImplInscription + Etudiant }|..|{ FormSemestre : FormSemestreInscription + Etudiant }|..|{ ApcParcours : "optionnel" + + Formation ||--o{ FormSemestre : "" + + ApcReferentielCompetences ||--o{ ApcCompetence : "" + ApcCompetence ||--o{ ApcNiveau : "" + ApcCompetence ||--o{ ApcSituationPro : "" + ApcCompetence ||--o{ ApcComposanteEssentielle : "" + ApcNiveau }o..|| UE : "optionnel" + ApcNiveau ||--o{ ApcAppCritique : "" + ApcAppCritique }o..o{ Module : "optionnel" + + ApcReferentielCompetences ||--o{ ApcParcours : "" + ApcParcours ||--o{ ApcAnneeParcours : "" + + ApcAnneeParcours { + int ordre + } + + ApcCompetence }o--o{ ApcAnneeParcours : "ApcParcoursNiveauCompetence (1,2,3)" + + Module }o--o{ ApcParcours : "parcours_modules" + FormSemestre }o--o{ ApcParcours : "parcours_formsemestre" + UE }o..o{ ApcParcours : "pour les ECTS" +``` diff --git a/docs/ScoDoc9API.md b/docs/ScoDoc9API.md index 4850b0d9..e30f70bb 100644 --- a/docs/ScoDoc9API.md +++ b/docs/ScoDoc9API.md @@ -823,10 +823,10 @@ Les sessions de formation (qu'elles durent une année ou un mois) sont représen #### Note sur les identifiants de formsemestre Le `session_id` peut être utilisé pour identifier de façon prévisible et -(presque) unique un un formsemestre) dans un établissement, ce qui est utile -notamment pour interfacer ScoDoc à d'autres logiciels (par exemple gestion d'emplois -du temps ou de services d'enseignement). Cet identifiant est constitué des -informations suivantes: +(presque) unique un formsemestre) dans un établissement, ce qui est utile +notamment pour interfacer ScoDoc à d'autres logiciels (par exemple gestion +d'emplois du temps ou de services d'enseignement). Cet identifiant est constitué +des informations suivantes: * **Département** (RT, GEII, INFO...) (acronyme en majuscules) * **Nom parcours:** BUT, LP, ... (défini au niveau du parcours dans ScoDoc = NAME)