betagouv / aplypro

Aplypro - Allocation pour les lycéens pro
4 stars 3 forks source link

Afficher un statut "données manquantes" sur les élèves pour inciter à remplir les data dans la BEE ou FREGATA. #455

Open JeSuisUnCaillou opened 7 months ago

JeSuisUnCaillou commented 7 months ago

Voici un script qui permet de sortir des stats sur les données manquantes d'un établissement :

e = Establishment.find_by_uai("0420013L")

labels = {
  biological_sex: "Sexe biologique",
  birthplace_city_insee_code: "Code INSEE de ville de naissance",
  birthplace_country_insee_code: "Code INSEE de pays de naissance",
  address_postal_code: "Code postal de résidence",
  address_city_insee_code: "Code INSEE de ville de résidence",
  address_country_code: "Code INSEE de pays de résidence"
}

total = e.students.joins(:pfmps).distinct(:"students.id").unscope(:order).count

stats = %i[biological_sex birthplace_city_insee_code birthplace_country_insee_code address_postal_code address_city_insee_code address_country_code].map do |col|
  nb_not_nil = e.students.joins(:pfmps).distinct(:"students.id").unscope(:order).where.not(col => nil).count
  "#{labels[col]}: #{nb_not_nil}/#{total}"
end

puts e.name
puts stats
JeSuisUnCaillou commented 6 months ago

En global, voici les stats :

columns = %i[
  biological_sex
  birthplace_city_insee_code
  birthplace_country_insee_code
  address_postal_code
  address_city_insee_code
  address_country_code
]
total = Student.count
columns.index_with{|c| (Student.where.not(c => nil).count.to_f / total * 100).round}

# Pourcentages
{
:biological_sex=>100,
 :birthplace_city_insee_code=>31,
 :birthplace_country_insee_code=>34,
 :address_postal_code=>73,
 :address_city_insee_code=>73,
 :address_country_code=>73
}
JeSuisUnCaillou commented 6 months ago

Note : Les codes de pays 995 et 990 sont rejetés avant l'envoi en paiement, car non convertibles en codes INSEE