commit
8fa9b303ad
1 changed files with 16 additions and 10 deletions
|
@ -275,28 +275,34 @@ class StatsController < ApplicationController
|
||||||
|
|
||||||
processed_dossiers = dossiers
|
processed_dossiers = dossiers
|
||||||
.where(:processed_at => min_date..max_date)
|
.where(:processed_at => min_date..max_date)
|
||||||
.pluck(:procedure_id, :created_at, :en_construction_at, :processed_at)
|
.pluck(
|
||||||
|
:procedure_id,
|
||||||
|
Arel.sql('EXTRACT(EPOCH FROM (en_construction_at - created_at)) / 60 AS processing_time'),
|
||||||
|
:processed_at
|
||||||
|
)
|
||||||
|
|
||||||
# Group dossiers by month
|
# Group dossiers by month
|
||||||
processed_dossiers_by_month = processed_dossiers
|
processed_dossiers_by_month = processed_dossiers
|
||||||
.group_by do |e|
|
.group_by do |(*_, processed_at)|
|
||||||
e[3].beginning_of_month.to_s
|
processed_at.beginning_of_month.to_s
|
||||||
end
|
end
|
||||||
|
|
||||||
processed_dossiers_by_month.map do |month, value|
|
procedure_id_type_de_champs_count = TypeDeChamp
|
||||||
|
.where(private: false)
|
||||||
|
.group(:procedure_id)
|
||||||
|
.count
|
||||||
|
|
||||||
|
processed_dossiers_by_month.map do |month, dossier_plucks|
|
||||||
# Group the dossiers for this month by procedure
|
# Group the dossiers for this month by procedure
|
||||||
dossiers_grouped_by_procedure = value.group_by { |dossier| dossier[0] }
|
dossiers_grouped_by_procedure = dossier_plucks.group_by { |(procedure_id, *_)| procedure_id }
|
||||||
|
|
||||||
# Compute the mean time for this procedure
|
# Compute the mean time for this procedure
|
||||||
procedure_processing_times = dossiers_grouped_by_procedure.map do |procedure_id, procedure_dossiers|
|
procedure_processing_times = dossiers_grouped_by_procedure.map do |procedure_id, procedure_dossiers|
|
||||||
procedure_dossiers_processing_time = procedure_dossiers.map do |dossier|
|
procedure_dossiers_processing_time = procedure_dossiers.map { |_, processing_time, _| processing_time }
|
||||||
(dossier[2] - dossier[1]).to_f / 60
|
|
||||||
end
|
|
||||||
|
|
||||||
procedure_mean = mean(procedure_dossiers_processing_time)
|
procedure_mean = mean(procedure_dossiers_processing_time)
|
||||||
|
|
||||||
# We normalize the data for 24 fields
|
# We normalize the data for 24 fields
|
||||||
procedure_fields_count = Procedure.find(procedure_id).types_de_champ.count
|
procedure_fields_count = procedure_id_type_de_champs_count[procedure_id]
|
||||||
procedure_mean * (MEAN_NUMBER_OF_CHAMPS_IN_A_FORM / procedure_fields_count)
|
procedure_mean * (MEAN_NUMBER_OF_CHAMPS_IN_A_FORM / procedure_fields_count)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue