Commit f74fbb23 authored by Anthony Gautreau's avatar Anthony Gautreau
Browse files

Pegase : type des cours (courseType, PEGASE_TYPES_COURS) et cours parents (parentCourseCodes)

parent e9858f10
Loading
Loading
Loading
Loading
Loading
+3 −0
Changes for .env.dist: 3 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -74,6 +74,9 @@ PEGASE_SEMESTRE_2=01-15:06-30
# déjà connus : par exemple THE005:bf2e3a7bae (e-learning), THE013:bf5588ff84 (internship), THE008:a7e556215a
# (research). Codes ELM listés dans la section « Routes Pegase » du README (facultatif)
PEGASE_ELM_TYPES_HEURE=
# Type exposé (courseType) des types d'objet de formation propres à l'établissement, les autres types étant repris
# tels quels : par exemple UEA:UE,ECA:EC,ECE:EC,ECI:EC,ECN:EC,ECR:EC (facultatif)
PEGASE_TYPES_COURS=
# Limite mémoire PHP de l'import, qui croît avec le nombre de cours et de périodes : à augmenter si la mémoire
# affichée dans le bilan de l'import s'en approche (-1 pour aucune limite)
PEGASE_MEMOIRE=512M
+7 −2
Changes for README.md: 7 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -136,6 +136,9 @@ PEGASE_SEMESTRE_2=01-15:06-30
# déjà connus : par exemple THE005:bf2e3a7bae (e-learning), THE013:bf5588ff84 (internship), THE008:a7e556215a
# (research). Codes ELM listés dans la section « Routes Pegase » du README (facultatif)
PEGASE_ELM_TYPES_HEURE=
# Type exposé (courseType) des types d'objet de formation propres à l'établissement, les autres types étant repris
# tels quels : par exemple UEA:UE,ECA:EC,ECE:EC,ECI:EC,ECN:EC,ECR:EC (facultatif)
PEGASE_TYPES_COURS=
# Limite mémoire PHP de l'import, qui croît avec le nombre de cours et de périodes : à augmenter si la mémoire
# affichée dans le bilan de l'import s'en approche (-1 pour aucune limite)
PEGASE_MEMOIRE=512M
@@ -273,7 +276,7 @@ docker exec smile-connect-php bin/console doctrine:migrations:migrate --no-inter

`composer install` vide aussi le cache Symfony et régénère les fichiers de `api/public/bundles`.

Les versions précédentes chargeaient en production la surcharge de développement, devenue `compose.override.yaml.dist` : `api/var` (cache et journaux) était dans un volume anonyme et revient dans le dépôt. Après la mise à jour, `docker volume prune` supprime l'ancien volume.
Les versions précédentes chargeaient en production la surcharge de développement, devenue `compose.override.yaml.dist` : `api/var` (cache) était dans un volume anonyme et revient dans le dépôt. Après la mise à jour, `docker volume prune` supprime l'ancien volume.

Avant de mettre à jour, comparez votre `.env` avec `.env.dist` pour reporter les éventuelles nouvelles variables. Vos requêtes `api/data/*.sql` ne sont pas versionnées et ne sont pas touchées par la mise à jour.

@@ -309,7 +312,7 @@ Les relations sont données en IRI (`"ounit": "/ounits/901"`). Une propriété s
|---|---|
| ounit | `ounitId`, `ounitCode` (code de structure Pegase), `title`, `abbreviation`, `lastModified` |
| programme | `code`, `title`, `ects`, `eqfLevelProvided` (6, 7 ou 8), `languageOfInstruction`, `description` et `learningOutcomes` (syllabus de l'année), `length` (`2/2`), `elmLearningOpportunityType`, `iscedCode`, `levelInDiploma` (niveau SISE), `diplomaCode` et `diplomaTitle` (formation), `ounit`, `lastModified` |
| course | `code`, `title`, `ects`, `languageOfInstruction`, `academicTerm` (`1/2`, `2/2`), `description`, `learningOutcomes`, `prerequisites`, `bibliography`, `assessmentMethod` et `teachingMethod` (syllabus), `elmModeOfLearning`, `elmLearningActivityType` et `elmLearningOpportunityType`, `iscedCode`, `deprecated` (absent de la période la plus récente), `diplomaCode` et `diplomaTitle` (formation porteuse), `ounit`, `relatedProgramme`, `lastModified` |
| course | `code`, `title`, `ects`, `languageOfInstruction`, `academicTerm` (`1/2`, `2/2`), `description`, `learningOutcomes`, `prerequisites`, `bibliography`, `assessmentMethod` et `teachingMethod` (syllabus), `elmModeOfLearning`, `elmLearningActivityType` et `elmLearningOpportunityType`, `iscedCode`, `deprecated` (absent de la période la plus récente), `diplomaCode` et `diplomaTitle` (formation porteuse), `courseType` (UE, EC...), `parentCourseCodes` (cours exposés qui le contiennent), `ounit`, `relatedProgramme`, `lastModified` |
| instance | `id` (`LAE112-2026-1`), `course`, `academicTermId` (`2026/2027-1/2`), `startDate`, `endDate`, `ects`, `languageOfInstruction`, `elmModeOfLearning`, `elmLearningActivityType` et `elmLearningOpportunityType` (pour cette période), `engagementHours`, `catalogueOunit` et `catalogueGroup` (composante et regroupement du catalogue), `lastModified` |

`lastModified` est la date de l'import.
@@ -324,6 +327,8 @@ Codes acceptés dans `PEGASE_ELM_TYPES_HEURE` : `d46a826a39` apprentissage, `ff4

`iscedCode` liste les domaines ISCED-F 2013 du diplôme SISE de la formation (programme) ou de la formation porteuse (cours ; à défaut, ceux de ses programmes). Ils sont tirés du domaine CITE 1997 du diplôme (`citeDomaineFormation` de la nomenclature `DiplomeSise`) par la table de correspondance Eurostat FOET 1999 / ISCED-F 2013 : un domaine français qui en couvre plusieurs les donne tous (`224` Histoire, philosophie donne `0222` et `0223`).

Le catalogue peut contenir à la fois une UE et ses EC, qui sont alors tous exposés. `parentCourseCodes` donne, pour chaque contexte du cours dans une maquette, le cours exposé le plus proche qui le contient : l'UE d'un EC, l'EC de choix d'une option (« APSA de spécialité » pour un sport). Un EC mutualisé peut en avoir plusieurs. `courseType` est le type d'objet de formation Pegase, ramené par `PEGASE_TYPES_COURS` pour les types propres à l'établissement (`ECA` « EC en anglais » donne `EC`).

La langue d'enseignement du syllabus est retenue quand elle est écrite en balises BCP 47 à code de langue sur deux lettres (`en`, `fr, en-GB`), sinon la langue vient de `PEGASE_LANGUES` (cours) ou vaut `fr` (programme).

### Créer et supprimer des utilisateurs
+1 −0
Changes for api/config/services.yaml: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ parameters:
    env(PEGASE_SEMESTRE_1): '09-01:01-31'
    env(PEGASE_SEMESTRE_2): '01-15:06-30'
    env(PEGASE_ELM_TYPES_HEURE): ''
    env(PEGASE_TYPES_COURS): ''
    env(PEGASE_MEMOIRE): '512M'

services:
+28 −0
Changes for api/migrations/Version20261008202134.php: 28 added lines, 0 removed lines.
Original line number Diff line number Diff line
<?php

declare(strict_types=1);

namespace DoctrineMigrations;

use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;

final class Version20261008202134 extends AbstractMigration
{
    public function getDescription(): string
    {
        return 'Pegase : type des cours et cours parents';
    }

    public function up(Schema $schema): void
    {
        $this->addSql('ALTER TABLE course ADD course_type VARCHAR(255) DEFAULT NULL');
        $this->addSql('ALTER TABLE course ADD parent_course_codes JSON DEFAULT NULL');
    }

    public function down(Schema $schema): void
    {
        $this->addSql('ALTER TABLE course DROP course_type');
        $this->addSql('ALTER TABLE course DROP parent_course_codes');
    }
}
+8 −0
Changes for api/src/Entity/Course.php: 8 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -87,6 +87,14 @@ class Course
    #[ORM\Column(type: 'json', nullable: true)]
    public ?array $diplomaTitle = null;

    /** type de l'objet de formation (UE, EC...), ramené par PEGASE_TYPES_COURS */
    #[ORM\Column(nullable: true)]
    public ?string $courseType = null;

    /** @var list<string>|null codes des cours exposés qui contiennent celui-ci dans une maquette */
    #[ORM\Column(type: 'json', nullable: true)]
    public ?array $parentCourseCodes = null;

    #[ORM\ManyToOne]
    #[ORM\JoinColumn(referencedColumnName: 'ounit_id')]
    public ?Ounit $ounit = null;
Loading