amelioration(estimation_delay): evite des estimations de date similaire
This commit is contained in:
parent
f26a4bc041
commit
a66fd42450
9 changed files with 33 additions and 29 deletions
|
@ -1,7 +1,9 @@
|
|||
class Procedure::EstimatedDelayComponent < ApplicationComponent
|
||||
delegate :distance_of_time_in_words, to: :helpers
|
||||
|
||||
def initialize(procedure:)
|
||||
@procedure = procedure
|
||||
@fastest, @mean, @slow = procedure.usual_traitement_time_for_recent_dossiers(ProcedureStatsConcern::NB_DAYS_RECENT_DOSSIERS)
|
||||
@fastest, @mean, @slow = @procedure.stats_usual_traitement_time
|
||||
end
|
||||
|
||||
def estimation_present?
|
||||
|
@ -11,4 +13,14 @@ class Procedure::EstimatedDelayComponent < ApplicationComponent
|
|||
def render?
|
||||
estimation_present?
|
||||
end
|
||||
|
||||
def cleaned_nearby_estimation
|
||||
[@fastest, @mean, @slow]
|
||||
.map { distance_of_time_in_words(_1) }
|
||||
.uniq
|
||||
.zip(['fast_html', 'mean_html', 'slow_html'])
|
||||
.each do |estimation, i18n_key|
|
||||
yield(estimation, i18n_key)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
en:
|
||||
explanation: "Based on %{pencentile}% during the last %{nb_recent_dossiers} days, the instruction time is :"
|
||||
explanation: "Based on %{percentile}% during the last %{nb_recent_dossiers} days, the instruction time is :"
|
||||
fast_html: "<strong>In the best cast scenario</strong> : <strong>%{estimation}</strong>."
|
||||
mean_html: "If your file <strong>requires minor adjustments</strong>, the instruction time is <strong>%{estimation}</strong>."
|
||||
slow_html: "If you file <strong>is missing some information</strong> which requires a lot of exchanges with the administration, the instruction time is around <strong>%{estimation}</strong>."
|
||||
|
|
|
@ -1,10 +1,5 @@
|
|||
- cache(@procedure.id, expires_in: 1.day) do
|
||||
- if estimation_present?
|
||||
= render Dsfr::AlertComponent.new(state: :info, size: :sm, extra_class_names: 'fr-mb-2w') do |c|
|
||||
- c.body do
|
||||
%p= t('.explanation', percentile: ProcedureStatsConcern::USUAL_TRAITEMENT_TIME_PERCENTILE, nb_recent_dossiers: ProcedureStatsConcern::NB_DAYS_RECENT_DOSSIERS)
|
||||
%ul
|
||||
%li= t('.fast_html', estimation: distance_of_time_in_words(@fastest))
|
||||
%li= t('.mean_html', estimation: distance_of_time_in_words(@mean))
|
||||
%li= t('.slow_html', estimation: distance_of_time_in_words(@slow))
|
||||
%p= t('.explanation', percentile: ProcedureStatsConcern::USUAL_TRAITEMENT_TIME_PERCENTILE, nb_recent_dossiers: ProcedureStatsConcern::NB_DAYS_RECENT_DOSSIERS)
|
||||
%ul
|
||||
- cleaned_nearby_estimation do |estimation, i18n_key|
|
||||
%li= t(".#{i18n_key}", estimation: estimation)
|
||||
|
||||
|
|
|
@ -64,14 +64,15 @@
|
|||
%ul
|
||||
= render partial: "shared/procedure_pieces_jointes_list", collection: procedure.pieces_jointes_list_with_conditionnal, as: :pj
|
||||
|
||||
- if procedure.stats_usual_traitement_time
|
||||
- estimated_delay_component = Procedure::EstimatedDelayComponent.new(procedure: procedure)
|
||||
- if estimated_delay_component.render?
|
||||
%section.fr-accordion
|
||||
%h2.fr-accordion__title
|
||||
%button.fr-accordion__btn{ "aria-controls" => "accordion-117", "aria-expanded" => "false" }
|
||||
= t('shared.procedure_description.usual_traitement_time_title')
|
||||
|
||||
#accordion-117.fr-collapse
|
||||
= t('shared.procedure_description.usual_traitement_time_detail_html', traitement_time: distance_of_time_in_words(procedure.stats_usual_traitement_time), percentile: ProcedureStatsConcern::USUAL_TRAITEMENT_TIME_PERCENTILE, days: ProcedureStatsConcern::NB_DAYS_RECENT_DOSSIERS, href: statistiques_path(procedure.path) )
|
||||
= render estimated_delay_component
|
||||
|
||||
|
||||
- if procedure.persisted? && procedure.estimated_duration_visible?
|
||||
|
|
|
@ -860,7 +860,6 @@ en:
|
|||
estimated_fill_duration_title: What is the procedure estimated fill time ?
|
||||
estimated_fill_duration_detail: "The fill time is etimated to %{estimated_minutes} min. This period may vary depending on the options you choose"
|
||||
usual_traitement_time_title: What are the processing times for this procedure?
|
||||
usual_traitement_time_detail_html: Usually, files in this procedure are processed within %{traitement_time}. This estimate is calculated automatically from the processing times observed on %{percentile}% of requests that have been processed during the last %{days} days. Actual lead time may vary. For more information, you can <a href="%{href}" target="_blank" rel="noopener noreferrer">consult the statistics page</a> of this procedure.
|
||||
pieces_jointes : What are the required attachments ?
|
||||
pieces_jointes_conditionnal_list_title : Attachments list according to your situation
|
||||
sva_svr_title: "This procedure applies the « %{rule} »"
|
||||
|
|
|
@ -916,7 +916,6 @@ fr:
|
|||
estimated_fill_duration_title: Quelle est la durée de remplissage de la démarche ?
|
||||
estimated_fill_duration_detail: "La durée de remplissage est estimée à %{estimated_minutes} min. Ce délai peut varier selon les options que vous choisirez."
|
||||
usual_traitement_time_title: Quels sont les délais d'instruction pour cette démarche ?
|
||||
usual_traitement_time_detail_html: Habituellement, les dossiers de cette démarche sont traités dans un délai de %{traitement_time}. Cette estimation est calculée automatiquement à partir des délais d’instruction constatés sur %{percentile}% des demandes qui ont été traitées lors des %{days} derniers jours. Le délai réel peut être différent. Pour plus d'informations, vous pouvez <a href="%{href}" target="_blank" rel="noopener noreferrer">consulter la page statistiques</a> de cette démarche.
|
||||
pieces_jointes : Quelles sont les pièces justificatives à fournir ?
|
||||
pieces_jointes_conditionnal_list_title : Liste des pièces en fonction de votre situation
|
||||
sva_svr_title: "Cette démarche applique le « %{rule} »"
|
||||
|
|
|
@ -22,13 +22,11 @@ describe 'Dossier details:' do
|
|||
end
|
||||
|
||||
describe "the user can see the mean time they are expected to wait" do
|
||||
let(:other_dossier) { create(:dossier, :accepte, :with_individual, procedure: procedure, depose_at: 10.days.ago, en_instruction_at: 9.days.ago, processed_at: Time.zone.now) }
|
||||
|
||||
context "when the dossier is in construction" do
|
||||
it "displays the estimated wait duration" do
|
||||
other_dossier
|
||||
allow_any_instance_of(Procedure).to receive(:stats_usual_traitement_time).and_return([1.day, 1.day, 1.day])
|
||||
visit dossier_path(dossier)
|
||||
expect(page).to have_text("Habituellement, les dossiers de cette démarche sont traités dans un délai de 10 jours.")
|
||||
expect(page).to have_text("Dans le meilleur des cas, le délai d’instruction est : 1 jour")
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -36,9 +34,9 @@ describe 'Dossier details:' do
|
|||
let(:dossier) { create(:dossier, :en_instruction, :with_individual, :with_commentaires, user: user, procedure: procedure) }
|
||||
|
||||
it "displays the estimated wait duration" do
|
||||
other_dossier
|
||||
allow_any_instance_of(Procedure).to receive(:stats_usual_traitement_time).and_return([1.day, 1.day, 1.day])
|
||||
visit dossier_path(dossier)
|
||||
expect(page).to have_text("Habituellement, les dossiers de cette démarche sont traités dans un délai de 10 jours.")
|
||||
expect(page).to have_text("Dans le meilleur des cas, le délai d’instruction est : 1 jour")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -49,13 +49,13 @@ describe 'shared/_procedure_description', type: :view do
|
|||
|
||||
context 'when procedure has usual_traitement_time' do
|
||||
before do
|
||||
allow(procedure).to receive(:stats_usual_traitement_time).and_return(1.day)
|
||||
allow(procedure).to receive(:stats_usual_traitement_time).and_return([1.day, 1.day, 1.day])
|
||||
end
|
||||
|
||||
it 'shows a usual traitement text' do
|
||||
subject
|
||||
expect(rendered).to have_text("Quels sont les délais d'instruction pour cette démarche ?")
|
||||
expect(rendered).to have_text("Habituellement, les dossiers de cette démarche sont traités dans un délai de 1 jour.")
|
||||
expect(rendered).to have_text("Dans le meilleur des cas, le délai d’instruction est : 1 jour.")
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -38,9 +38,9 @@ describe 'users/dossiers/show/_status_overview', type: :view do
|
|||
subject
|
||||
expect(subject).to have_selector('.status-explanation .en-construction')
|
||||
expect(subject).to have_text('Selon nos estimations, à partir des délais d’instruction constatés')
|
||||
expect(subject).to have_text("Dans le meilleur des cas, le délais d’instruction estimé est : 1 jour.")
|
||||
expect(subject).to have_text("Les dossiers demandant quelques échanges le délais d’instruction estimé est : 2 jours.")
|
||||
expect(subject).to have_text("Si votre dossier est incomplet et qu’il faut beaucoup d’échanges avec l’administration, le délais d’instruction estimé est : 3 jours")
|
||||
expect(subject).to have_text("Dans le meilleur des cas, le délai d’instruction est : 1 jour.")
|
||||
expect(subject).to have_text("Les dossiers demandant quelques échanges le délai d’instruction est d‘environ : 2 jours.")
|
||||
expect(subject).to have_text("Si votre dossier est incomplet ou qu’il faut beaucoup d’échanges avec l’administration, le délai d’instruction est d’environ 3 jours.")
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -57,9 +57,9 @@ describe 'users/dossiers/show/_status_overview', type: :view do
|
|||
it 'works' do
|
||||
expect(subject).to have_selector('.status-explanation .en-instruction')
|
||||
expect(subject).to have_text('Selon nos estimations, à partir des délais d’instruction constatés')
|
||||
expect(subject).to have_text("Dans le meilleur des cas, le délais d’instruction estimé est : 1 jour.")
|
||||
expect(subject).to have_text("Les dossiers demandant quelques échanges le délais d’instruction estimé est : 2 jours.")
|
||||
expect(subject).to have_text("Si votre dossier est incomplet et qu’il faut beaucoup d’échanges avec l’administration, le délais d’instruction estimé est : 3 jours")
|
||||
expect(subject).to have_text("Dans le meilleur des cas, le délai d’instruction est : 1 jour.")
|
||||
expect(subject).to have_text("Les dossiers demandant quelques échanges le délai d’instruction est d‘environ : 2 jours.")
|
||||
expect(subject).to have_text("Si votre dossier est incomplet ou qu’il faut beaucoup d’échanges avec l’administration, le délai d’instruction est d’environ 3 jours.")
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in a new issue