Skip to content

Commit

Permalink
✨ Les joueurs ayant réussi le niveau 3 sans passer de rattrapage sont…
Browse files Browse the repository at this point in the history
  • Loading branch information
cprodhomme committed Dec 20, 2024
1 parent de04102 commit 3141171
Show file tree
Hide file tree
Showing 7 changed files with 111 additions and 7 deletions.
6 changes: 6 additions & 0 deletions app/assets/images/icone_profil/icone_profil4_plus.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion app/models/evaluation.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class Evaluation < ApplicationRecord
NIVEAUX_POSITIONNEMENT = %w[profil1 profil2 profil3 profil4
profil_4h profil_4h_plus profil_4h_plus_plus
profil_aberrant indetermine].freeze
NIVEAUX_NUMERATIE = %w[profil1 profil2 profil3 profil4 indetermine].freeze
NIVEAUX_NUMERATIE = %w[profil1 profil2 profil3 profil4 profil4_plus indetermine].freeze
NIVEAUX_COMPLETUDE = %w[incomplete competences_de_base_incompletes
competences_transversales_incompletes complete].freeze
SITUATION_COMPETENCES_TRANSVERSALES = %w[tri inventaire securite controle].freeze
Expand Down
1 change: 1 addition & 0 deletions app/models/restitution/competence/profil_evacob.rb
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ class ProfilEvacob < Restitution::Competence::Base
::Competence::PROFIL_ABERRANT => 0
},
'profil_numeratie' => {
::Competence::PROFIL_4_PLUS => 5,
::Competence::PROFIL_4 => 4,
::Competence::PROFIL_3 => 3,
::Competence::PROFIL_2 => 2,
Expand Down
3 changes: 2 additions & 1 deletion app/models/restitution/illettrisme/synthetiseur.rb
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,8 @@ def initialize(interpreteur_positionnement, inter_numeratie)

def socle_clea?
@niveau_positionnement.in?(%i[profil4 profil_4h profil_4h_plus
profil_4h_plus_plus]) || @niveau_numeratie.in?(%i[profil4])
profil_4h_plus_plus]) ||
@niveau_numeratie.in?(%i[profil4 profil4_plus])
end

def illettrisme_potentiel?
Expand Down
17 changes: 12 additions & 5 deletions app/models/restitution/place_du_marche.rb
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ def initialize(campagne, evenements)
super
end

def score_pour(niveau)
SCORES[niveau]['score'].calcule(evenements, niveau, avec_rattrapage: true)
def score_pour(niveau, avec_rattrapage: true)
SCORES[niveau]['score'].calcule(evenements, niveau, avec_rattrapage: avec_rattrapage)
end

def pourcentage_de_reussite_pour(niveau)
Expand All @@ -43,10 +43,9 @@ def synthese
profil_numeratie: profil_numeratie }
end

def niveau_numeratie
def niveau_numeratie # rubocop:disable Metrics/CyclomaticComplexity
niveau = 0
n1 = pourcentage_de_reussite_pour(:N1)
return niveau if n1.blank?
return niveau if pourcentage_de_reussite_pour(:N1).blank?

n2 = pourcentage_de_reussite_pour(:N2)
n3 = pourcentage_de_reussite_pour(:N3)
Expand All @@ -55,6 +54,7 @@ def niveau_numeratie
niveau = 2 if n2
niveau = 3 if n3
niveau = 4 if n3 && n3 > SEUIL_MINIMUM
niveau = 5 if niveau == 4 && !a_passe_des_questions_de_rattrapage?

niveau
end
Expand All @@ -65,5 +65,12 @@ def profil_numeratie
Competence::ProfilEvacob.new(self, 'profil_numeratie',
niveau_numeratie).profil_numeratie
end

def a_passe_des_questions_de_rattrapage?
evenements_rattrapage = MetriquesHelper.filtre_evenements_reponses(evenements) do |e|
e.donnees['question'].start_with?('N3R')
end
evenements_rattrapage.present?
end
end
end
8 changes: 8 additions & 0 deletions config/locales/views/numeratie.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,3 +36,11 @@ fr:
Votre score indique que vous maîtrisez les fondamentaux de la communication en calcul et raisonnement, ce qui signifie que vous êtes plutôt à l’aise en calcul et raisonnement pour comprendre et communiquer en contexte professionnel.<br><br>
Cela vous ouvre les portes de nombreuses formations ou de nombreux emplois !
profil4_plus:
alt_icone: Profil 4 Plus
description: |
### Certification Cléa indiquée
Votre score indique que vous êtes à l’aise avec les concepts mathématiques fondamentaux dans un contexte professionnel !
Maîtriser les bases de la numératie, comme les calculs, les proportions ou l’interprétation de données, est une compétence clé qui peut vous ouvrir des portes vers de nouvelles formations ou opportunités professionnelles. N’hésitez pas à valoriser la maîtrise de cette compétence !
81 changes: 81 additions & 0 deletions spec/models/restitution/place_du_marche_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,16 @@
end
end

context 'quand le niveau numératie est 5 (4 Plus)' do
before do
allow(restitution).to receive(:niveau_numeratie).and_return 5
end

it 'retourne le profil 4 Plus' do
expect(restitution.profil_numeratie).to equal(Competence::PROFIL_4_PLUS)
end
end

context 'quand le niveau numératie est 0' do
before do
allow(restitution).to receive(:niveau_numeratie).and_return 0
Expand Down Expand Up @@ -230,9 +240,80 @@
allow(restitution).to receive(:pourcentage_de_reussite_pour).with(:N1).and_return 71
allow(restitution).to receive(:pourcentage_de_reussite_pour).with(:N2).and_return 71
allow(restitution).to receive(:pourcentage_de_reussite_pour).with(:N3).and_return 71
allow(restitution).to receive(:a_passe_des_questions_de_rattrapage?).and_return true
end

it { expect(restitution.niveau_numeratie).to eq 4 }
end

context 'quand le pourcentage de réussite pour N3 est supérieur à 70 sans rattrapage' do
before do
allow(restitution).to receive(:pourcentage_de_reussite_pour).with(:N1).and_return 71
allow(restitution).to receive(:pourcentage_de_reussite_pour).with(:N2).and_return 71
allow(restitution).to receive(:pourcentage_de_reussite_pour).with(:N3).and_return 71
allow(restitution).to receive(:a_passe_des_questions_de_rattrapage?).and_return false
end

it { expect(restitution.niveau_numeratie).to eq 5 }
end
end

describe '#a_passe_des_questions_de_rattrapage?' do
context 'sans rattrapage' do
let(:restitution) do
described_class.new(campagne,
[
build(:evenement_demarrage, partie: partie),
build(:evenement_reponse,
donnees: { succes: true,
question: 'N3Pse1',
score: 1 },
partie: partie),
build(:evenement_reponse,
donnees: { succes: true,
question: 'N3Pvn1',
score: 1 },
partie: partie),
build(:evenement_reponse,
donnees: { succes: true,
question: 'N3Prn1',
score: 1 },
partie: partie)
])
end

it do
expect(restitution.a_passe_des_questions_de_rattrapage?).to be false
end
end

context 'avec du rattrapage' do
let(:restitution) do
described_class.new(campagne,
[
build(:evenement_demarrage, partie: partie),
build(:evenement_reponse, donnees: { succes: true,
question: 'N3Pse1',
score: 1 },
partie: partie),
build(:evenement_reponse, donnees: { succes: true,
question: 'N3Pvn1',
score: 1 },
partie: partie),
build(:evenement_reponse, donnees: { succes: true,
question: 'N3Prn1',
score: 1 },
partie: partie),
build(:evenement_reponse, donnees: { succes: true,
question: 'N3Rrn1',
score: 2 },
partie: partie)
])
end

it do
expect(restitution.a_passe_des_questions_de_rattrapage?).to be true
end
end
end
end

0 comments on commit 3141171

Please sign in to comment.