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