# Tests unitaires jury BUT - IUT Lyon GEII
# Essais avec un BUT GEII, 2 UE en BUT1 / 4 UE en BUT2-BUT3 et 3 parcours
# Contrib Pascal B.
#   Voir tests/unit/test_but_jury.py
#    pytest --pdb -m lyon tests/unit/test_but_jury.py


ReferentielCompetences:
  filename: but-GEII-05012022-081639.xml
  specialite: GEII

Formation:
  filename: scodoc_formation_BUT_GEII_lyon_v1.xml
  # Association des UE aux compétences:
  ues:
    # S1 : Tronc commun GEII
    'UE11':
      annee: BUT1
      competence: Concevoir
    'UE12':
      annee: BUT1
      competence: Vérifier

    # S2 : Tronc commun GEII
    'UE21':
      annee: BUT1
      competence: Concevoir
    'UE22':
      annee: BUT1
      competence: Vérifier

    # S3 : Tronc commun GEII
    'UE31':
      annee: BUT2
      competence: Concevoir
    'UE32':
      annee: BUT2
      competence: Vérifier
    'UE33':
      annee: BUT2
      competence: Maintenir
    # S3 : Parcours EME
    'UE34EME':
      annee: BUT2
      competence: Installer
      parcours: EME
    # S3 : Parcours ESE
    'UE34ESE':
      annee: BUT2
      competence: Implanter
      parcours: ESE
    # S3 : Parcours AII
    'UE34AII':
      annee: BUT2
      competence: Intégrer
      parcours: AII

    # S4 : Tronc commun GEII
    'UE41':
      annee: BUT2
      competence: Concevoir
    'UE42':
      annee: BUT2
      competence: Vérifier
    'UE43':
      annee: BUT2
      competence: Maintenir
    # S4 : Parcours EME
    'UE44EME':
      annee: BUT2
      competence: Installer
      parcours: EME
    # S4 : Parcours ESE
    'UE44ESE':
      annee: BUT2
      competence: Implanter
      parcours: ESE
    # S4 : Parcours AII
    'UE44AII':
      annee: BUT2
      competence: Intégrer
      parcours: AII

  modules_parcours:
    # cette section permet d'associer des modules à des parcours
    # les codes modules peuvent être des regexp
    EME: [ .*EME.* ]
    ESE: [ .*ESE.* ]
    AII: [ .*AII.* ]

FormSemestres:
  # S1 et S2 :
  S1:
    idx: 1
    date_debut: 2021-09-01
    date_fin: 2022-01-15
  S2:
    idx: 2
    date_debut: 2022-01-16
    date_fin: 2022-06-30
  # S3 avec les trois parcours réunis:
  # S3:
  #   idx: 3
  #   date_debut: 2022-09-01
  #   date_fin: 2023-01-13
  #   codes_parcours: ['AII', 'EME', 'ESE']
  # Un S1 pour les redoublants
  S1-red:
    idx: 1
    date_debut: 2022-09-02
    date_fin: 2023-01-12

Etudiants:
  geii8:
    prenom: etugeii8
    civilite: M
    formsemestres:
      S1:
        notes_modules: # on joue avec les SAE seulement car elles sont "diagonales"
          "S1.1": 7.00
          "S1.2": 9.00
        attendu: # les codes jury que l'on doit vérifier
          deca:
            passage_de_droit: False
            nb_competences: 2
            nb_rcue_annee: 0
            decisions_ues:
              "UE11":
                codes: [ "AJ", "..." ]
                code_valide: AJ
                decision_jury: AJ
                moy_ue: 7.00
              "UE12":
                codes: [ "AJ", "..." ]
                code_valide: AJ
                decision_jury: AJ
                moy_ue: 9.00
          autorisations_inscription: [2]
      S2:
        notes_modules: # on joue avec les SAE seulement car elles sont "diagonales"
          "S2.1": 12.00
          "S2.2": 12.00
        attendu: # les codes jury que l'on doit vérifier
          deca:
            passage_de_droit: False
            nb_competences: 2
            nb_rcue_annee: 2
            valide_moitie_rcue: False
            codes: [ "RED", "..." ]
            decisions_ues:
              "UE21":
                codes: [ "ADM", "..." ]
                code_valide: ADM
                decision_jury: ADM
                moy_ue: 12.00
              "UE22":
                codes: [ "ADM", "..." ]
                code_valide: ADM
                decision_jury: ADM
                moy_ue: 12.00
            decisions_rcues: # on repère ici les RCUE par l'acronyme de leur 1ere UE (donc du S1)
              "UE11":
                code_valide: AJ
                decision_jury: AJ
                rcue:
                  moy_rcue: 9.50
                  est_compensable: False
              "UE12":
                code_valide: CMP
                decision_jury: CMP
                rcue:
                  moy_rcue: 10.50
                  est_compensable: True
          decision_annee: RED
        autorisations_inscription: [1]
      S1-red:
        notes_modules: # on joue avec les SAE seulement car elles sont "diagonales"
          "S1.1": 9.50
          "S1.2": 7.00
        attendu: # les codes jury que l'on doit vérifier
          deca:
            passage_de_droit: False
            nb_competences: 2
            nb_rcue_annee: 2
            decisions_ues:
              "UE11":
                codes: [ "CMP", "..." ]
                code_valide: CMP
                decision_jury: CMP
                moy_ue: 9.50
              "UE12":
                codes: [ "AJ", "..." ]
                code_valide: AJ
                decision_jury: AJ
                moy_ue: 7.00
            decisions_rcues: # on repère ici les RCUE par l'acronyme de leur 1ere UE (donc du S1)
              "UE11":
                code_valide: CMP
                rcue:
                  moy_rcue: 10.75
                  est_compensable: True
              "UE12":
                code_valide: CMP # car validé en fin de S2
                rcue:
                  moy_rcue: 9.50 # la moyenne courante (et non enregistrée), donc pas 10.5
                  est_compensable: False
          decision_annee: ADM
        autorisations_inscription: [2]
  geii43:
    prenom: etugeii43
    civilite: M
    formsemestres:
      S1:
        notes_modules: # on joue avec les SAE seulement car elles sont "diagonales"
          "S1.1": 9.00
          "S1.2": 9.00
        attendu: # les codes jury que l'on doit vérifier
          deca:
            passage_de_droit: False
            nb_competences: 2
            nb_rcue_annee: 0
            decisions_ues:
              "UE11":
                codes: [ "AJ", "..." ]
                code_valide: AJ
                decision_jury: AJ
                moy_ue: 9.00
              "UE12":
                codes: [ "AJ", "..." ]
                code_valide: AJ
                decision_jury: AJ
                moy_ue: 9.00
      S2:
        notes_modules: # on joue avec les SAE seulement car elles sont "diagonales"
          "S2.1": 9.00
          "S2.2": 9.00
        attendu: # les codes jury que l'on doit vérifier
          deca:
            passage_de_droit: False
            nb_competences: 2
            nb_rcue_annee: 2
            valide_moitie_rcue: False
            codes: [ "RED", "..." ]
            decisions_ues:
              "UE21":
                codes: [ "AJ", "..." ]
                code_valide: AJ
                moy_ue: 9.00
              "UE22":
                codes: [ "AJ", "..." ]
                code_valide: AJ # va basculer en ADJ car RCUE en ADJ (mais le test est AVANT !)
                moy_ue: 9.00
            decisions_rcues: # on repère ici les RCUE par l'acronyme de leur 1ere UE (donc du S1)
              "UE11":
                code_valide: AJ
                decision_jury: AJ # inutile de la préciser mais on peut
                rcue:
                  moy_rcue: 9.00
                  est_compensable: False
              "UE12":
                code_valide: AJ # code par défaut proposé
                decision_jury: ADJ # code donné par le jury de S2
                rcue:
                  moy_rcue: 9.00
                  est_compensable: False
          decision_annee: RED
      S1-red:
        notes_modules: # on joue avec les SAE seulement car elles sont "diagonales"
          "S1.1": 11.00
          "S1.2": 7.00
        attendu: # les codes jury que l'on doit vérifier
          deca:
            passage_de_droit: false
            nb_competences: 2
            nb_rcue_annee: 0
            decisions_ues:
              "UE11":
                codes: [ "ADM", "..." ]
                code_valide: ADM
                moy_ue: 11.00
              "UE12":
                code_valide: AJ
                moy_ue: 7.00
          decision_annee: AJ
  geii84:
    prenom: etugeii84
    civilite: M
    formsemestres:
      S1:
        notes_modules: # on joue avec les SAE seulement car elles sont "diagonales"
          "S1.1": 11.95
          "S1.2": 12.76
        attendu: # les codes jury que l'on doit vérifier
          deca:
            passage_de_droit: False
            nb_competences: 2
            nb_rcue_annee: 0
            decisions_ues:
              "UE11":
                codes: [ "ADM", "..." ]
                code_valide: ADM
                decision_jury: ADM
                moy_ue: 11.95
              "UE12":
                codes: [ "ADM", "..." ]
                code_valide: ADM
                decision_jury: ADM
                moy_ue: 12.76
      S2:
        notes_modules: # on joue avec les SAE seulement car elles sont "diagonales"
          "S2.1": 7.83
          "S2.2": 8.15
        attendu: # les codes jury que l'on doit vérifier
          deca:
            passage_de_droit: False
            nb_competences: 2
            nb_rcue_annee: 2
            valide_moitie_rcue: False
            codes: [ "RED", "..." ]
            decisions_ues:
              "UE21":
                codes: [ "AJ", "..." ]
                code_valide: AJ
                decision_jury: AJ
                moy_ue: 7.83
              "UE22":
                codes: [ "CMP", "..." ]
                code_valide: CMP
                moy_ue: 8.15
            decisions_rcues: # on repère ici les RCUE par l'acronyme de leur 1ere UE (donc du S1)
              "UE11":
                code_valide: AJ
                decision_jury: AJ
                rcue:
                  moy_rcue: 9.89
                  est_compensable: False
              "UE12":
                code_valide: CMP
                decision_jury: CMP
                rcue:
                  moy_rcue: 10.455 # ! attention à la précision
                  est_compensable: True
          decision_annee: RED
      S1-red:
        notes_modules: # on joue avec les SAE seulement car elles sont "diagonales"
          "S1.1": 13.71
          "S1.2": 9.50
        attendu: # les codes jury que l'on doit vérifier
          deca:
            passage_de_droit: False
            nb_competences: 2
            nb_rcue_annee: 0
            decisions_ues:
              "UE11":
                codes: [ "ADM", "..." ]
                code_valide: ADM
                decision_jury: ADM
                moy_ue: 13.71
              "UE12":
                codes: [ "AJ", "ADJ", "RAT", "DEF", "ABAN", "ADJR", "ATJ", "DEM", "UEBSL" ]
                code_valide: AJ # c'est l'UE12 du S1 de l'année prec. qui est ADM
                moy_ue: 9.5 # moyenne non capitalisée ici
                moy_ue_with_cap: 12.76
# Pas de décisions RCUE
#               "UE11":  -- non applicable 
#                 code_valide: ADM  -- non applicable 
#                 decision_jury: ADM  -- non applicable 
#                 rcue:  -- non applicable 
#                   moy_rcue: 10.94  -- non applicable 
#                   est_compensable: False  -- non applicable 
#               "UE12":  -- non applicable 
#                 code_valide: ADM -- non applicable 
#                 decision_jury: ADM  -- non applicable 
#                 rcue:  -- non applicable 
#                   moy_rcue: 10.94  -- non applicable 
#                   est_compensable: False  -- non applicable 
          decision_annee: AJ
# Nouveaux cas RED (mardi 17/01/2023)
  geii8bis:
    prenom: "etugeii8 bis"
    civilite: M
    formsemestres:
      S1:
        notes_modules: # on joue avec les SAE seulement car elles sont "diagonales"
          "S1.1": 7.0000
          "S1.2": 9.0000
        attendu: # les codes jury que l'on doit vérifier
          deca:
            passage_de_droit: False
            nb_competences: 2
            nb_rcue_annee: 0
            decisions_ues:
              "UE11":
                code_valide: AJ
                moy_ue: 7.0000
              "UE12":
                code_valide: AJ # ne sera compensée qu'en fin de S2
                moy_ue: 9.0000
      S2:
        notes_modules: # on joue avec les SAE seulement car elles sont "diagonales"
          "S2.1": 12.0000
          "S2.2": 12.0000
        attendu: # les codes jury que l'on doit vérifier
          deca:
            passage_de_droit: False
            nb_competences: 2
            nb_rcue_annee: 2
            valide_moitie_rcue: False
            codes: [ "RED", "..." ]
            decisions_ues:
              "UE21":
                codes: [ "ADM", "..." ]
                code_valide: ADM
                moy_ue: 12.0000
              "UE22":
                codes: [ "ADM", "..." ]
                code_valide: ADM
                moy_ue: 12.0000
            decisions_rcues: # on repère ici les RCUE par l'acronyme de leur 1ere UE (donc du S1)
              "UE11":
                code_valide: AJ
                rcue:
                  moy_rcue: 9.5000
                  est_compensable: False
              "UE12":
                code_valide: CMP
                decision_jury: CMP
                rcue:
                  moy_rcue: 10.5000
                  est_compensable: True
          decision_annee: RED
      S1-red:
        notes_modules: # on joue avec les SAE seulement car elles sont "diagonales"
          "S1.1": 9.5000
          "S1.2": 7.0000
        attendu: # les codes jury que l'on doit vérifier
          deca:
            passage_de_droit: False
            nb_competences: 2
            nb_rcue_annee: 2
            decisions_ues:
              "UE11":
                codes: [ "CMP", "..." ]
                code_valide: CMP
                decision_jury: CMP
                moy_ue: 9.5000
              "UE12":
                codes: [ "AJ", "..." ]
                code_valide: AJ
                decision_jury: AJ
                moy_ue: 7.0000
            decisions_rcues: # on repère ici les RCUE par l'acronyme de leur 1ere UE (donc du S1)
              "UE11":
                code_valide: CMP
                decision_jury: CMP
                rcue:
                  moy_rcue: 10.75
                  est_compensable: True
          decision_annee: ADM
  geii10:
    prenom: etugeii10
    civilite: M
    formsemestres:
      S1:
        notes_modules: # on joue avec les SAE seulement car elles sont "diagonales"
          "S1.1": 9.0000
          "S1.2": 7.0000
        attendu: # les codes jury que l'on doit vérifier
          deca:
            passage_de_droit: False
            nb_competences: 2
            nb_rcue_annee: 0
            decisions_ues:
              "UE11":
                code_valide: AJ # en fin de S1, sera compensée en fin de S2
                moy_ue: 9.0000
              "UE12":
                code_valide: AJ
                moy_ue: 7.0000
      S2:
        notes_modules: # on joue avec les SAE seulement car elles sont "diagonales"
          "S2.1": 12.0000
          "S2.2": 12.0000
        attendu: # les codes jury que l'on doit vérifier
          deca:
            passage_de_droit: False
            nb_competences: 2
            nb_rcue_annee: 2
            valide_moitie_rcue: False
            codes: [ "RED", "..." ]
            decisions_ues:
              "UE21":
                code_valide: ADM
                decision_jury: ADM
                moy_ue: 12.0000
              "UE22":
                code_valide: ADM
                moy_ue: 12.0000
            decisions_rcues: # on repère ici les RCUE par l'acronyme de leur 1ere UE (donc du S1)
              "UE11":
                code_valide: CMP
                rcue:
                  moy_rcue: 10.5000
                  est_compensable: True
              "UE12":
                code_valide: AJ
                decision_jury: AJ
                rcue:
                  moy_rcue: 9.5000
                  est_compensable: False
          decision_annee: RED
      S1-red:
        notes_modules: # on joue avec les SAE seulement car elles sont "diagonales"
          "S1.1": 12.0000
          "S1.2": 7.5000
        attendu: # les codes jury que l'on doit vérifier
          deca:
            passage_de_droit: False
            nb_competences: 2
            nb_rcue_annee: 0
            decisions_ues:
              "UE11":
                codes: [ "ADM", "..." ]
                code_valide: ADM
                decision_jury: ADM
                moy_ue: 12.0000
              "UE12":
                codes: [ "AJ", "..." ]
                code_valide: AJ
                decision_jury: AJ
                moy_ue: 7.5000
            decisions_rcues: # on repère ici les RCUE par l'acronyme de leur 1ere UE (donc du S1)
              "UE11":
                code_valide: ADM
                decision_jury: ADM
                rcue:
                  moy_rcue: 12.00
                  est_compensable: False
              "UE12":
                code_valide: AJ
                decision_jury: AJ
                rcue:
                  moy_rcue: 9.75
                  est_compensable: False
          decision_annee: AJ
  geii11:
    prenom: etugeii11
    civilite: M
    formsemestres:
      S1:
        notes_modules: # on joue avec les SAE seulement car elles sont "diagonales"
          "S1.1": 7.0000
          "S1.2": 7.0000
        attendu: # les codes jury que l'on doit vérifier
          deca:
            passage_de_droit: False
            nb_competences: 2
            nb_rcue_annee: 0
            decisions_ues:
              "UE11":
                codes: [ "AJ", "..." ]
                code_valide: AJ
                decision_jury: AJ
                moy_ue: 7.0000
              "UE12":
                codes: [ "AJ", "..." ]
                code_valide: AJ
                decision_jury: AJ
                moy_ue: 7.0000
      S2:
        notes_modules: # on joue avec les SAE seulement car elles sont "diagonales"
          "S2.1": 12.0000
          "S2.2": 12.0000
        attendu: # les codes jury que l'on doit vérifier
          deca:
            passage_de_droit: False
            nb_competences: 2
            nb_rcue_annee: 2
            valide_moitie_rcue: False
            codes: [ "RED", "..." ]
            decisions_ues:
              "UE21":
                codes: [ "ADM", "..." ]
                code_valide: ADM
                decision_jury: ADM
                moy_ue: 12.0000
              "UE22":
                codes: [ "ADM", "..." ]
                code_valide: ADM
                decision_jury: ADM
                moy_ue: 12.0000
            decisions_rcues: # on repère ici les RCUE par l'acronyme de leur 1ere UE (donc du S1)
              "UE11":
                code_valide: AJ
                decision_jury: AJ
                rcue:
                  moy_rcue: 9.5000
                  est_compensable: False
              "UE12":
                code_valide: AJ
                decision_jury: AJ
                rcue:
                  moy_rcue: 9.5000
                  est_compensable: False
          decision_annee: RED
      S1-red:
        notes_modules: # on joue avec les SAE seulement car elles sont "diagonales"
          "S1.1": 9.0000
          "S1.2": 9.0000
        attendu: # les codes jury que l'on doit vérifier
          deca:
            passage_de_droit: True
            nb_competences: 2
            nb_rcue_annee: 2
            decisions_ues:
              "UE11":
                codes: [ "CMP", "..." ]
                code_valide: CMP
                decision_jury: CMP
                moy_ue: 9.0000
              "UE12":
                codes: [ "CMP", "..." ]
                code_valide: CMP
                decision_jury: CMP
                moy_ue: 9.0000
            decisions_rcues: # on repère ici les RCUE par l'acronyme de leur 1ere UE (donc du S1)
              "UE11":
                code_valide: CMP
                decision_jury: CMP
                rcue:
                  moy_rcue: 10.50
                  est_compensable: True
              "UE12":
                code_valide: CMP
                decision_jury: CMP
                rcue:
                  moy_rcue: 10.50
                  est_compensable: True
          decision_annee: ADM
  geii13:
    prenom: etugeii13
    civilite: M
    formsemestres:
      S1:
        notes_modules: # on joue avec les SAE seulement car elles sont "diagonales"
          "S1.1": 9.0000
          "S1.2": 12.0000
        attendu: # les codes jury que l'on doit vérifier
          deca:
            passage_de_droit: False
            nb_competences: 2
            nb_rcue_annee: 0
            decisions_ues:
              "UE11":
                codes: [ "AJ", "..." ]
                code_valide: AJ
                decision_jury: AJ
                moy_ue: 9.0000
              "UE12":
                codes: [ "ADM", "..." ]
                code_valide: ADM
                decision_jury: ADM
                moy_ue: 12.0000
      S2:
        notes_modules: # on joue avec les SAE seulement car elles sont "diagonales"
          "S2.1": 9.0000
          "S2.2": 12.0000
        attendu: # les codes jury que l'on doit vérifier
          deca:
            passage_de_droit: False
            nb_competences: 2
            nb_rcue_annee: 2
            valide_moitie_rcue: False
            codes: [ "RED", "..." ]
            decisions_ues:
              "UE21":
                code_valide: AJ
                moy_ue: 9.0000
              "UE22":
                code_valide: ADM
                moy_ue: 12.0000
            decisions_rcues: # on repère ici les RCUE par l'acronyme de leur 1ere UE (donc du S1)
              "UE11":
                code_valide: AJ
                decision_jury: AJ
                rcue:
                  moy_rcue: 9.0000
                  est_compensable: False
              "UE12":
                code_valide: ADM
                decision_jury: ADM
                rcue:
                  moy_rcue: 12.0000
                  est_compensable: False
          decision_annee: RED
      S1-red:
        notes_modules: # on joue avec les SAE seulement car elles sont "diagonales"
          "S1.1": 12.0000
          "S1.2": ATT
        attendu: # les codes jury que l'on doit vérifier
          deca:
            passage_de_droit: False
            nb_competences: 2
            nb_rcue_annee: 0
            decisions_ues:
              "UE11":
                code_valide: ADM
                moy_ue: 12.0000
              "UE12":
                code_valide: AJ  
          # PAS DE RCUE car UE12 capitalisée mailleure qu'actuelle
          decision_annee: AJ
  geii20:
    prenom: etugeii20
    civilite: M
    formsemestres:
      S1:
        notes_modules: # on joue avec les SAE seulement car elles sont "diagonales"
          "S1.1": 7.0000
          "S1.2": 7.0000
        attendu: # les codes jury que l'on doit vérifier
          deca:
            passage_de_droit: False
            nb_competences: 2
            nb_rcue_annee: 0
            decisions_ues:
              "UE11":
                codes: [ "AJ", "..." ]
                code_valide: AJ
                decision_jury: ADJR
                moy_ue: 7.0000
              "UE12":
                codes: [ "AJ", "..." ]
                code_valide: AJ
                decision_jury: AJ
                moy_ue: 7.0000
      S2:
        notes_modules: # on joue avec les SAE seulement car elles sont "diagonales"
          "S2.1": 9.0000
          "S2.2": 12.0000
        attendu: # les codes jury que l'on doit vérifier
          deca:
            passage_de_droit: False
            nb_competences: 2
            nb_rcue_annee: 2
            valide_moitie_rcue: False
            codes: [ "RED", "..." ]
            decisions_ues:
              "UE21":
                codes: [ "AJ", "..." ]
                code_valide: AJ
                decision_jury: ADJR
                moy_ue: 9.0000
              "UE22":
                codes: [ "ADM", "..." ]
                code_valide: ADM
                decision_jury: ADM
                moy_ue: 12.0000
            decisions_rcues: # on repère ici les RCUE par l'acronyme de leur 1ere UE (donc du S1)
              "UE11":
                code_valide: AJ
                decision_jury: AJ
                rcue:
                  moy_rcue: 8.0000
                  est_compensable: False
              "UE12":
                code_valide: AJ
                decision_jury: ADJ
                rcue:
                  moy_rcue: 9.5000
                  est_compensable: False
          decision_annee: RED
      S1-red:
        notes_modules: # on joue avec les SAE seulement car elles sont "diagonales"
          "S1.1": 12.0000
          "S1.2": 4.0000
        attendu: # les codes jury que l'on doit vérifier
          deca:
            passage_de_droit: false
            nb_competences: 2
            nb_rcue_annee: 0
            decisions_ues:
              "UE11":
                code_valide: ADM
                moy_ue: 12.0000
              "UE12":
                code_valide: AJ
                moy_ue: 4.0000
            decisions_rcues: # on repère ici les RCUE par l'acronyme de leur 1ere UE (donc du S1)
              "UE12":
                code_valide: ADJ
                rcue:
                  moy_rcue: 8.00
                  est_compensable: 0
          decision_annee: AJ
  geii33:
    prenom: etugeii33
    civilite: M
    formsemestres:
      S1:
        notes_modules: # on joue avec les SAE seulement car elles sont "diagonales"
          "S1.1": 12.0000
          "S1.2": 9.0000
        attendu: # les codes jury que l'on doit vérifier
          deca:
            passage_de_droit: False
            nb_competences: 2
            nb_rcue_annee: 0
            decisions_ues:
              "UE11":
                codes: [ "ADM", "..." ]
                code_valide: ADM
                decision_jury: ADM
                moy_ue: 12.0000
              "UE12":
                codes: [ "AJ", "..." ]
                code_valide: AJ
                decision_jury: AJ
                moy_ue: 9.0000
      S2:
        notes_modules: # on joue avec les SAE seulement car elles sont "diagonales"
          "S2.1": 12.0000
          "S2.2": 9.0000
        attendu: # les codes jury que l'on doit vérifier
          deca:
            passage_de_droit: False
            nb_competences: 2
            nb_rcue_annee: 2
            valide_moitie_rcue: False
            codes: [ "RED", "..." ]
            decisions_ues:
              "UE21":
                codes: [ "ADM", "..." ]
                code_valide: ADM
                decision_jury: ADM
                moy_ue: 12.0000
              "UE22":
                codes: [ "AJ", "..." ]
                code_valide: AJ
                decision_jury: AJ
                moy_ue: 9.0000
            decisions_rcues: # on repère ici les RCUE par l'acronyme de leur 1ere UE (donc du S1)
              "UE11":
                code_valide: ADM
                decision_jury: ADM
                rcue:
                  moy_rcue: 12.0000
                  est_compensable: False
              "UE12":
                code_valide: AJ
                decision_jury: AJ
                rcue:
                  moy_rcue: 9.0000
                  est_compensable: False
          decision_annee: RED
      S1-red:
        notes_modules: # on joue avec les SAE seulement car elles sont "diagonales"
          "S1.1": 5.0000
          "S1.2": 12.0000
        attendu: # les codes jury que l'on doit vérifier
          deca:
            passage_de_droit: False
            nb_competences: 2
            nb_rcue_annee: 0
            decisions_ues:
              "UE11":
                code_valide: AJ
                moy_ue: 5.  # LA MOYENNE COURANTE
                moy_ue_with_cap: 12.0000
              "UE12":
                code_valide: ADM
                decision_jury: ADM
                moy_ue: 12.0000
            # PAS DE RCUE ICI
          decision_annee: AJ
  geii43:
    prenom: etugeii43
    civilite: M
    formsemestres:
      S1:
        notes_modules: # on joue avec les SAE seulement car elles sont "diagonales"
          "S1.1": 9.0000
          "S1.2": 9.0000
        attendu: # les codes jury que l'on doit vérifier
          deca:
            passage_de_droit: False
            nb_competences: 2
            nb_rcue_annee: 0
            decisions_ues:
              "UE11":
                code_valide: AJ
                decision_jury: ADJR
                moy_ue: 9.0000
              "UE12":
                code_valide: AJ
                decision_jury: AJ
                moy_ue: 9.0000
      S2:
        notes_modules: # on joue avec les SAE seulement car elles sont "diagonales"
          "S2.1": 9.0000
          "S2.2": 9.0000
        attendu: # les codes jury que l'on doit vérifier
          deca:
            passage_de_droit: False
            nb_competences: 2
            nb_rcue_annee: 2
            valide_moitie_rcue: False
            codes: [ "RED", "..." ]
            decisions_ues:
              "UE21":
                code_valide: AJ
                decision_jury: ADJR
                moy_ue: 9.0000
              "UE22":
                code_valide: AJ
                decision_jury: AJ
                moy_ue: 9.0000
            decisions_rcues: # on repère ici les RCUE par l'acronyme de leur 1ere UE (donc du S1)
              "UE11":
                code_valide: AJ
                decision_jury: AJ
                rcue:
                  moy_rcue: 9.0000
                  est_compensable: False
              "UE12":
                code_valide: AJ
                decision_jury: ADJ
                rcue:
                  moy_rcue: 9.0000
                  est_compensable: False
          decision_annee: RED
      S1-red:
        notes_modules: # on joue avec les SAE seulement car elles sont "diagonales"
          "S1.1": 11.0000
          "S1.2": 7.0000
        attendu: # les codes jury que l'on doit vérifier
          deca:
            passage_de_droit: False
            nb_competences: 2
            nb_rcue_annee: 0
            decisions_ues:
              "UE11":
                codes: [ "ADM", "..." ]
                code_valide: ADM
                decision_jury: ADM
                moy_ue: 11.0000
              "UE12":
                codes: [ "AJ", "..." ]
                code_valide: AJ
                decision_jury: AJ
                moy_ue: 7.0000
          decision_annee: AJ
  geii84bis:
    prenom: "etugeii84 bis"
    civilite: M
    formsemestres:
      S1:
        notes_modules: # on joue avec les SAE seulement car elles sont "diagonales"
          "S1.1": 11.9500
          "S1.2": 12.7600
        attendu: # les codes jury que l'on doit vérifier
          deca:
            passage_de_droit: False
            nb_competences: 2
            nb_rcue_annee: 0
            decisions_ues:
              "UE11":
                codes: [ "ADM", "..." ]
                code_valide: ADM
                decision_jury: ADM
                moy_ue: 11.9500
              "UE12":
                codes: [ "ADM", "..." ]
                code_valide: ADM
                decision_jury: ADM
                moy_ue: 12.7600
      S2:
        notes_modules: # on joue avec les SAE seulement car elles sont "diagonales"
          "S2.1": 7.8300
          "S2.2": 8.1500
        attendu: # les codes jury que l'on doit vérifier
          deca:
            passage_de_droit: False
            nb_competences: 2
            nb_rcue_annee: 2
            valide_moitie_rcue: False
            codes: [ "RED", "..." ]
            decisions_ues:
              "UE21":
                codes: [ "AJ", "..." ]
                code_valide: AJ
                decision_jury: AJ
                moy_ue: 7.8300
              "UE22":
                codes: [ "CMP", "..." ]
                code_valide: CMP
                decision_jury: CMP
                moy_ue: 8.1500
            decisions_rcues: # on repère ici les RCUE par l'acronyme de leur 1ere UE (donc du S1)
              "UE11":
                code_valide: AJ
                decision_jury: AJ
                rcue:
                  moy_rcue: 9.8900
                  est_compensable: False
              "UE12":
                code_valide: CMP
                decision_jury: CMP
                rcue:
                  moy_rcue: 10.4550
                  est_compensable: True
          decision_annee: RED
      S1-red:
        notes_modules: # on joue avec les SAE seulement car elles sont "diagonales"
          "S1.1": 13.7100
          "S1.2": 9.5000
        attendu: # les codes jury que l'on doit vérifier
          deca:
            passage_de_droit: False
            nb_competences: 2
            nb_rcue_annee: 0
            decisions_ues:
              "UE11":
                code_valide: ADM
                moy_ue: 13.7100
              "UE12":
                code_valide: AJ
                moy_ue: 9.5000
                moy_ue_with_cap: 12.7600
          decision_annee: AJ
  geii1000:
    prenom: etugeii1000
    civilite: M
    formsemestres:
      S1:
        notes_modules: # on joue avec les SAE seulement car elles sont "diagonales"
          "S1.1": 12.0000
          "S1.2": 9.0000
        attendu: # les codes jury que l'on doit vérifier
          deca:
            passage_de_droit: False
            nb_competences: 2
            nb_rcue_annee: 0
            decisions_ues:
              "UE11":
                codes: [ "ADM", "..." ]
                code_valide: ADM
                moy_ue: 12.0000
              "UE12":
                codes: [ "AJ", "..." ]
                code_valide: AJ
                decision_jury: AJ
                moy_ue: 9.0000
      S2:
        notes_modules: # on joue avec les SAE seulement car elles sont "diagonales"
          "S2.1": 12.0000
          "S2.2": 10.50 # capitalise mais ne compense pas
        attendu: # les codes jury que l'on doit vérifier
          deca:
            passage_de_droit: False
            nb_competences: 2
            nb_rcue_annee: 2
            valide_moitie_rcue: False
            codes: [ "RED", "..." ]
            decisions_ues:
              "UE21":
                codes: [ "ADM", "..." ]
                code_valide: ADM
                moy_ue: 12.0000
              "UE22":
                code_valide: ADM
                moy_ue: 10.5
            decisions_rcues: # on repère ici les RCUE par l'acronyme de leur 1ere UE (donc du S1)
              "UE11":
                code_valide: ADM
                decision_jury: ADM
                rcue:
                  moy_rcue: 12.0000
                  est_compensable: False
              "UE12":
                code_valide: AJ
                decision_jury: AJ
                rcue:
                  moy_rcue: 9.75
                  est_compensable: False
          decision_annee: RED
      S1-red:
        notes_modules: # on joue avec les SAE seulement car elles sont "diagonales"
          "S1.1": 5.0000
          "S1.2": 12.0000
        attendu: # les codes jury que l'on doit vérifier
          deca:
            passage_de_droit: False
            nb_competences: 2
            nb_rcue_annee: 0
            decisions_ues:
              "UE11":
                code_valide: AJ
                moy_ue: 5.  # LA MOYENNE COURANTE
                moy_ue_with_cap: 12.0000
              "UE12":
                code_valide: ADM
                decision_jury: ADM
                moy_ue: 12.0000
            # RCUE inter-annuel
            decisions_rcues: # on repère ici les RCUE par l'acronyme de leur 1ere UE (donc du S1)
              "UE12":
                code_valide: ADM
                rcue:
                  moy_rcue: 11.25
                  est_compensable: False
  geii87:
    prenom: etugeii87
    civilite: M
    formsemestres:
      S1:
        notes_modules: # on joue avec les SAE seulement car elles sont "diagonales"
          "S1.1": 7.0000
          "S1.2": 11.0000
        attendu: # les codes jury que l'on doit vérifier
          deca:
            passage_de_droit: False
            nb_competences: 2
            nb_rcue_annee: 0
            decisions_ues:
              "UE11":
                codes: [ "AJ", "..." ]
                code_valide: AJ
                decision_jury: AJ
                moy_ue: 7.0000
              "UE12":
                codes: [ "ADM", "..." ]
                code_valide: ADM
                decision_jury: ADM
                moy_ue: 11.0000
      S2:
        notes_modules: # on joue avec les SAE seulement car elles sont "diagonales"
          "S2.1": 8.9000
          "S2.2": 8.9000
        attendu: # les codes jury que l'on doit vérifier
          deca:
            passage_de_droit: False
            nb_competences: 2
            nb_rcue_annee: 2
            valide_moitie_rcue: False
            codes: [ "RED", "..." ]
            decisions_ues:
              "UE21":
                codes: [ "AJ", "..." ]
                code_valide: AJ
# Pas de modification décision Jury
                moy_ue: 8.9000
              "UE22":
                codes: [ "AJ", "..." ]
                code_valide: AJ
                decision_jury: ADJR
                moy_ue: 8.9000
            decisions_rcues: # on repère ici les RCUE par l'acronyme de leur 1ere UE (donc du S1)
              "UE11":
                code_valide: AJ
# Pas de modification décision Jury
                rcue:
                  moy_rcue: 7.9500
                  est_compensable: False
              "UE12":
                code_valide: AJ
                decision_jury: ADJ
                rcue:
                  moy_rcue: 9.9500
                  est_compensable: False
          decision_annee: RED
      S1-red:
        notes_modules: # on joue avec les SAE seulement car elles sont "diagonales"
          "S1.1": 12.0000
          "S1.2": EXC
        attendu: # les codes jury que l'on doit vérifier
          deca:
            passage_de_droit: False
            nb_competences: 2
            nb_rcue_annee: 0
            decisions_ues:
              "UE11":
                codes: [ "ADM", "..." ]
                code_valide: ADM
              "UE12": # capitalisée du S1 précédent
                moy_ue_with_cap: 11.0
                code_valide: AJ # AJ dans le semestre S1-red
            # et AUCUN RCUE
          decision_annee: AJ
  geii88:
    prenom: M88
    civilite: F
    formsemestres:
      S1:
        notes_modules: # on joue avec les SAE seulement car elles sont "diagonales"
          "S1.1": 9.2200
          "S1.2": 7.8200
        attendu: # les codes jury que l'on doit vérifier
          deca:
            passage_de_droit: False
            nb_competences: 2
            nb_rcue_annee: 0
            decisions_ues:
              "UE11":
                codes: [ "AJ", "..." ]
                code_valide: AJ
                decision_jury: ADJR
                moy_ue: 9.2200
              "UE12":
                codes: [ "AJ", "..." ]
                code_valide: AJ
                decision_jury: AJ
                moy_ue: 7.8200
      S2:
        notes_modules: # on joue avec les SAE seulement car elles sont "diagonales"
          "S2.1": 9.9600
          "S2.2": 9.5600
        attendu: # les codes jury que l'on doit vérifier
          deca:
            passage_de_droit: False
            nb_competences: 2
            nb_rcue_annee: 2
            valide_moitie_rcue: False
            codes: [ "RED", "..." ]
            decisions_ues:
              "UE21":
                codes: [ "AJ", "..." ]
                code_valide: AJ
                decision_jury: ADJR
                moy_ue: 9.9600
              "UE22":
                codes: [ "AJ", "..." ]
                code_valide: AJ
                moy_ue: 9.5600
            decisions_rcues: # on repère ici les RCUE par l'acronyme de leur 1ere UE (donc du S1)
              "UE11":
                code_valide: AJ
                decision_jury: ADJ
                rcue:
                  moy_rcue: 9.5900
                  est_compensable: False
              "UE12":
                code_valide: AJ
                decision_jury: AJ # ? à confirmer, il était écrit "False"
                rcue:
                  moy_rcue: 8.6900
                  est_compensable: False
          decision_annee: RED
      S1-red:
        notes_modules: # on joue avec les SAE seulement car elles sont "diagonales"
          "S1.1": 14.0100
          "S1.2": 13.5000
        attendu: # les codes jury que l'on doit vérifier
          deca:
            passage_de_droit: False
            nb_competences: 2
            nb_rcue_annee: 0
            decisions_ues:
              "UE11":
                codes: [ "ADM", "..." ]
                code_valide: ADM
              "UE12":
                codes: [ "ADM", "..." ]
                code_valide: ADM
                moy_ue: 13.5000
            # decisions_rcues: aucun RCUE en S1-red
          decision_annee: AJ