From a5ae5af56af6a64d06a3ced99e85f57181e575f7 Mon Sep 17 00:00:00 2001 From: Christophe Robillard Date: Wed, 16 Jun 2021 14:57:42 +0200 Subject: [PATCH] extract NB_DAYS_RECENT_DOSSIERS and PERCENTILE --- app/models/concerns/procedure_stats_concern.rb | 9 ++++++--- app/views/shared/procedures/_stats.html.haml | 2 +- app/views/users/dossiers/show/_estimated_delay.html.haml | 6 +++--- .../dossiers/show/_status_overview.html.haml_spec.rb | 2 +- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/app/models/concerns/procedure_stats_concern.rb b/app/models/concerns/procedure_stats_concern.rb index 3c3dcf33b..868a7a7fe 100644 --- a/app/models/concerns/procedure_stats_concern.rb +++ b/app/models/concerns/procedure_stats_concern.rb @@ -1,9 +1,12 @@ module ProcedureStatsConcern extend ActiveSupport::Concern + NB_DAYS_RECENT_DOSSIERS = 30 + PERCENTILE = 90 + def stats_usual_traitement_time Rails.cache.fetch("#{cache_key_with_version}/stats_usual_traitement_time", expires_in: 12.hours) do - usual_traitement_time_for_recent_dossiers(30) + usual_traitement_time_for_recent_dossiers(NB_DAYS_RECENT_DOSSIERS) end end @@ -63,7 +66,7 @@ module ProcedureStatsConcern traitement_times(first_processed_at..last_considered_processed_at) .group_by {|t| t[:processed_at].beginning_of_month } .transform_values{|month| month.map{|h| h[:processed_at] - h[:en_construction_at]}} - .transform_values{|traitement_times_for_month| traitement_times_for_month.percentile(90).ceil } + .transform_values{|traitement_times_for_month| traitement_times_for_month.percentile(PERCENTILE).ceil } .transform_values{|seconds| convert_seconds_in_days(seconds)} .transform_keys{|month| pretty_month(month)} end @@ -72,7 +75,7 @@ module ProcedureStatsConcern now = Time.zone.now traitement_times((now - nb_days.days)..now) .map{|times| times[:processed_at] - times[:en_construction_at]} - .percentile(90) + .percentile(PERCENTILE) .ceil end diff --git a/app/views/shared/procedures/_stats.html.haml b/app/views/shared/procedures/_stats.html.haml index f0079e957..49df73a62 100644 --- a/app/views/shared/procedures/_stats.html.haml +++ b/app/views/shared/procedures/_stats.html.haml @@ -11,7 +11,7 @@ %span.big-number-card-number = distance_of_time_in_words(@usual_traitement_time) %span.big-number-card-detail - 90% des demandes du mois dernier ont été traitées en moins de #{distance_of_time_in_words(@usual_traitement_time)}. + #{ProcedureStatsConcern::PERCENTILE}% des demandes des #{ProcedureStatsConcern::NB_DAYS_RECENT_DOSSIERS} derniers jours ont été traitées en moins de #{distance_of_time_in_words(@usual_traitement_time)}. .stat-cards .stat-card.stat-card-half.pull-left diff --git a/app/views/users/dossiers/show/_estimated_delay.html.haml b/app/views/users/dossiers/show/_estimated_delay.html.haml index eabc51bb3..7b9e6acca 100644 --- a/app/views/users/dossiers/show/_estimated_delay.html.haml +++ b/app/views/users/dossiers/show/_estimated_delay.html.haml @@ -4,8 +4,8 @@ - show_time_means = procedure.id != procedure_id_for_which_we_hide_the_estimated_delay && procedure.path != procedure_path_for_which_we_hide_the_estimated_delay - cache(procedure.id, expires_in: 1.day) do - - if procedure.usual_traitement_time && show_time_means + - if procedure.usual_traitement_time_for_recent_dossiers(ProcedureStatsConcern::NB_DAYS_RECENT_DOSSIERS) && show_time_means %p - Habituellement, les dossiers de cette démarche sont traités dans un délai de #{distance_of_time_in_words(procedure.usual_traitement_time)}. + Habituellement, les dossiers de cette démarche sont traités dans un délai de #{distance_of_time_in_words(procedure.usual_traitement_time_for_recent_dossiers(ProcedureStatsConcern::NB_DAYS_RECENT_DOSSIERS))}. %p - Cette estimation est calculée automatiquement à partir des délais d’instruction constatés précédemment. Le délai réel peut être différent, en fonction du type de démarche (par exemple pour un appel à projet avec date de décision fixe). + Cette estimation est calculée automatiquement à partir des délais d’instruction constatés sur #{ProcedureStatsConcern::PERCENTILE}% des demandes qui ont été traitées lors des #{ProcedureStatsConcern::NB_DAYS_RECENT_DOSSIERS} derniers jours. Le délai réel peut être différent, en fonction du type de démarche (par exemple pour un appel à projet avec date de décision fixe). diff --git a/spec/views/users/dossiers/show/_status_overview.html.haml_spec.rb b/spec/views/users/dossiers/show/_status_overview.html.haml_spec.rb index 71362ea7d..5f95bd3b7 100644 --- a/spec/views/users/dossiers/show/_status_overview.html.haml_spec.rb +++ b/spec/views/users/dossiers/show/_status_overview.html.haml_spec.rb @@ -1,5 +1,5 @@ describe 'users/dossiers/show/_status_overview.html.haml', type: :view do - before { allow(dossier.procedure).to receive(:usual_traitement_time).and_return(1.day) } + before { allow(dossier.procedure).to receive(:usual_traitement_time_for_recent_dossiers).and_return(1.day) } subject! { render 'users/dossiers/show/status_overview.html.haml', dossier: dossier }