explain what percentile constant means
Co-authored-by: Pierre de La Morinerie <pierre.de_la_morinerie@beta.gouv.fr>
This commit is contained in:
parent
896190b91e
commit
4bda6600b1
3 changed files with 8 additions and 6 deletions
|
@ -2,7 +2,10 @@ module ProcedureStatsConcern
|
||||||
extend ActiveSupport::Concern
|
extend ActiveSupport::Concern
|
||||||
|
|
||||||
NB_DAYS_RECENT_DOSSIERS = 30
|
NB_DAYS_RECENT_DOSSIERS = 30
|
||||||
PERCENTILE = 90
|
# Percentage of dossiers considered to compute the 'usual traitement time'.
|
||||||
|
# For instance, a value of '90' means that the usual traitement time will return
|
||||||
|
# the duration under which 90% of the given dossiers are closed.
|
||||||
|
USUAL_TRAITEMENT_TIME_PERCENTILE = 90
|
||||||
|
|
||||||
def stats_usual_traitement_time
|
def stats_usual_traitement_time
|
||||||
Rails.cache.fetch("#{cache_key_with_version}/stats_usual_traitement_time", expires_in: 12.hours) do
|
Rails.cache.fetch("#{cache_key_with_version}/stats_usual_traitement_time", expires_in: 12.hours) do
|
||||||
|
@ -66,7 +69,7 @@ module ProcedureStatsConcern
|
||||||
traitement_times(first_processed_at..last_considered_processed_at)
|
traitement_times(first_processed_at..last_considered_processed_at)
|
||||||
.group_by { |t| t[:processed_at].beginning_of_month }
|
.group_by { |t| t[:processed_at].beginning_of_month }
|
||||||
.transform_values { |month| month.map { |h| h[:processed_at] - h[:en_construction_at] } }
|
.transform_values { |month| month.map { |h| h[:processed_at] - h[:en_construction_at] } }
|
||||||
.transform_values { |traitement_times_for_month| traitement_times_for_month.percentile(PERCENTILE).ceil }
|
.transform_values { |traitement_times_for_month| traitement_times_for_month.percentile(USUAL_TRAITEMENT_TIME_PERCENTILE).ceil }
|
||||||
.transform_values { |seconds| seconds == 0 ? nil : seconds }
|
.transform_values { |seconds| seconds == 0 ? nil : seconds }
|
||||||
.transform_values { |seconds| convert_seconds_in_days(seconds) }
|
.transform_values { |seconds| convert_seconds_in_days(seconds) }
|
||||||
.transform_keys { |month| pretty_month(month) }
|
.transform_keys { |month| pretty_month(month) }
|
||||||
|
@ -77,7 +80,7 @@ module ProcedureStatsConcern
|
||||||
traitement_time =
|
traitement_time =
|
||||||
traitement_times((now - nb_days.days)..now)
|
traitement_times((now - nb_days.days)..now)
|
||||||
.map { |times| times[:processed_at] - times[:en_construction_at] }
|
.map { |times| times[:processed_at] - times[:en_construction_at] }
|
||||||
.percentile(PERCENTILE)
|
.percentile(USUAL_TRAITEMENT_TIME_PERCENTILE)
|
||||||
.ceil
|
.ceil
|
||||||
|
|
||||||
traitement_time = nil if traitement_time == 0
|
traitement_time = nil if traitement_time == 0
|
||||||
|
@ -101,5 +104,4 @@ module ProcedureStatsConcern
|
||||||
def pretty_month(month)
|
def pretty_month(month)
|
||||||
I18n.l(month, format: "%B %Y")
|
I18n.l(month, format: "%B %Y")
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
%span.big-number-card-number
|
%span.big-number-card-number
|
||||||
= distance_of_time_in_words(@usual_traitement_time)
|
= distance_of_time_in_words(@usual_traitement_time)
|
||||||
%span.big-number-card-detail
|
%span.big-number-card-detail
|
||||||
#{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)}.
|
#{ProcedureStatsConcern::USUAL_TRAITEMENT_TIME_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-cards
|
||||||
.stat-card.stat-card-half.pull-left
|
.stat-card.stat-card-half.pull-left
|
||||||
|
|
|
@ -8,4 +8,4 @@
|
||||||
%p
|
%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_for_recent_dossiers(ProcedureStatsConcern::NB_DAYS_RECENT_DOSSIERS))}.
|
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
|
%p
|
||||||
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).
|
Cette estimation est calculée automatiquement à partir des délais d’instruction constatés sur #{ProcedureStatsConcern::USUAL_TRAITEMENT_TIME_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).
|
||||||
|
|
Loading…
Reference in a new issue