fix(demarche): exclude preview and deleted dossiers from stats
This commit is contained in:
parent
d943e34b6d
commit
eb3039aeca
4 changed files with 22 additions and 13 deletions
|
@ -22,21 +22,20 @@ module ProcedureStatsConcern
|
|||
def stats_dossiers_funnel
|
||||
Rails.cache.fetch("#{cache_key_with_version}/stats_dossiers_funnel", expires_in: 12.hours) do
|
||||
[
|
||||
['Démarrés', dossiers.count],
|
||||
['Déposés', dossiers.state_not_brouillon.count],
|
||||
['Instruction débutée', dossiers.state_instruction_commencee.count],
|
||||
['Traités', dossiers.state_termine.count]
|
||||
['Démarrés', dossiers.visible_by_user_or_administration.count],
|
||||
['Déposés', dossiers.visible_by_administration.count],
|
||||
['Instruction débutée', dossiers.visible_by_administration.state_instruction_commencee.count],
|
||||
['Traités', nb_dossiers_termines]
|
||||
]
|
||||
end
|
||||
end
|
||||
|
||||
def stats_termines_states
|
||||
nb_dossiers_termines = dossiers.state_termine.count
|
||||
Rails.cache.fetch("#{cache_key_with_version}/stats_termines_states", expires_in: 12.hours) do
|
||||
[
|
||||
['Acceptés', percentage(dossiers.where(state: :accepte).count, nb_dossiers_termines)],
|
||||
['Refusés', percentage(dossiers.where(state: :refuse).count, nb_dossiers_termines)],
|
||||
['Classés sans suite', percentage(dossiers.where(state: :sans_suite).count, nb_dossiers_termines)]
|
||||
['Acceptés', percentage(dossiers.visible_by_administration.state_accepte.count, nb_dossiers_termines)],
|
||||
['Refusés', percentage(dossiers.visible_by_administration.state_refuse.count, nb_dossiers_termines)],
|
||||
['Classés sans suite', percentage(dossiers.visible_by_administration.state_sans_suite.count, nb_dossiers_termines)]
|
||||
]
|
||||
end
|
||||
end
|
||||
|
@ -45,6 +44,7 @@ module ProcedureStatsConcern
|
|||
Rails.cache.fetch("#{cache_key_with_version}/stats_termines_by_week", expires_in: 12.hours) do
|
||||
now = Time.zone.now
|
||||
chart_data = dossiers.includes(:traitements)
|
||||
.visible_by_administration
|
||||
.state_termine
|
||||
.where(traitements: { processed_at: (now.beginning_of_week - 6.months)..now.end_of_week })
|
||||
|
||||
|
@ -95,6 +95,10 @@ module ProcedureStatsConcern
|
|||
|
||||
private
|
||||
|
||||
def nb_dossiers_termines
|
||||
@nb_dossiers_termines ||= dossiers.visible_by_administration.state_termine.count
|
||||
end
|
||||
|
||||
def first_processed_at
|
||||
Traitement.for_traitement_time_stats(self).pick(:processed_at)
|
||||
end
|
||||
|
|
|
@ -224,6 +224,9 @@ class Dossier < ApplicationRecord
|
|||
scope :state_instruction_commencee, -> { where(state: INSTRUCTION_COMMENCEE) }
|
||||
scope :state_termine, -> { where(state: TERMINE) }
|
||||
scope :state_not_termine, -> { where.not(state: TERMINE) }
|
||||
scope :state_accepte, -> { where(state: states.fetch(:accepte)) }
|
||||
scope :state_refuse, -> { where(state: states.fetch(:refuse)) }
|
||||
scope :state_sans_suite, -> { where(state: states.fetch(:sans_suite)) }
|
||||
|
||||
scope :archived, -> { where(archived: true) }
|
||||
scope :not_archived, -> { where(archived: false) }
|
||||
|
|
|
@ -21,7 +21,7 @@ class Traitement < ApplicationRecord
|
|||
scope :for_traitement_time_stats, -> (procedure) do
|
||||
includes(:dossier)
|
||||
.termine
|
||||
.where(dossier: procedure.dossiers)
|
||||
.where(dossier: procedure.dossiers.visible_by_administration)
|
||||
.where.not('dossiers.depose_at' => nil, processed_at: nil)
|
||||
.order(:processed_at)
|
||||
end
|
||||
|
|
|
@ -7,15 +7,17 @@ describe ProcedureStatsConcern do
|
|||
before do
|
||||
create_list(:dossier, 2, :brouillon, procedure: procedure)
|
||||
create(:dossier, :en_instruction, procedure: procedure)
|
||||
create(:dossier, procedure: procedure, for_procedure_preview: true)
|
||||
create(:dossier, :accepte, procedure: procedure, hidden_by_administration_at: Time.zone.now)
|
||||
end
|
||||
|
||||
it "returns the funnel stats" do
|
||||
expect(stats_dossiers_funnel).to match(
|
||||
[
|
||||
['Démarrés', procedure.dossiers.count],
|
||||
['Déposés', procedure.dossiers.state_not_brouillon.count],
|
||||
['Instruction débutée', procedure.dossiers.state_instruction_commencee.count],
|
||||
['Traités', procedure.dossiers.state_termine.count]
|
||||
['Démarrés', procedure.dossiers.visible_by_user_or_administration.count],
|
||||
['Déposés', procedure.dossiers.visible_by_administration.count],
|
||||
['Instruction débutée', procedure.dossiers.visible_by_administration.state_instruction_commencee.count],
|
||||
['Traités', procedure.dossiers.visible_by_administration.state_termine.count]
|
||||
]
|
||||
)
|
||||
end
|
||||
|
|
Loading…
Add table
Reference in a new issue