ajout de script / modif d'enum et simplification du lancement en local

This commit is contained in:
951095
2025-09-19 10:22:34 +02:00
parent 4d402bb7cc
commit 80f24dce5a
25 changed files with 849 additions and 923 deletions
+59
View File
@@ -0,0 +1,59 @@
#!/usr/bin/env python3
import csv
import sys
from pathlib import Path
def clean_csv_file(file_path: Path):
"""
Nettoie un CSV directement en place :
- remplace "NULL" par ""
- supprime les espaces parasites
- force le même nombre de colonnes que l'en-tête
"""
cleaned_rows = []
with open(file_path, "r", encoding="utf-8-sig", newline="") as infile:
reader = csv.reader(infile)
try:
header = next(reader)
except StopIteration:
print(f"[⚠️] Fichier vide : {file_path}")
return
nb_cols = len(header)
cleaned_rows.append([h.strip() for h in header])
for i, row in enumerate(reader, start=2):
# Ajuste le nombre de colonnes
if len(row) < nb_cols:
row.extend([""] * (nb_cols - len(row)))
elif len(row) > nb_cols:
row = row[:nb_cols]
# Nettoyage cellule par cellule
row = [cell.strip().replace("NULL", "") for cell in row]
cleaned_rows.append(row)
# Réécriture dans le même fichier
with open(file_path, "w", encoding="utf-8", newline="") as outfile:
writer = csv.writer(outfile)
writer.writerows(cleaned_rows)
print(f"[✔] Nettoyé : {file_path}")
def main():
if len(sys.argv) > 1:
base_dir = Path(sys.argv[1])
else:
base_dir = Path("bdd/data_test")
print(f"🔎 Nettoyage des CSV dans : {base_dir}")
for file_path in base_dir.glob("*.csv"):
clean_csv_file(file_path)
print(f"✅ Terminé. Les fichiers CSV ont été écrasés (nettoyés en place).")
if __name__ == "__main__":
main()
+64
View File
@@ -0,0 +1,64 @@
-- ==============================================
-- Script de vérification d'intégrité des données
-- ==============================================
-- 1) Vérifier unicité des emails
SELECT email, COUNT(*) AS doublons
FROM utilisateurs
GROUP BY email
HAVING COUNT(*) > 1;
-- 2) Vérifier utilisateurs sans rôle
SELECT id, email
FROM utilisateurs
WHERE role IS NULL OR role = '';
-- 3) Vérifier cohérence enfants → parents
SELECT e.id AS enfant_id, e.nom, e.prenom
FROM enfants e
LEFT JOIN enfants_parents ep ON e.id = ep.enfant_id
WHERE ep.parent_id IS NULL;
-- 4) Vérifier cohérence enfants_parents → parents existants
SELECT ep.enfant_id, ep.parent_id
FROM enfants_parents ep
LEFT JOIN parents p ON ep.parent_id = p.id
WHERE p.id IS NULL;
-- 5) Vérifier cohérence dossiers → utilisateurs
SELECT d.id, d.parent_id
FROM dossiers d
LEFT JOIN parents p ON d.parent_id = p.id
WHERE p.id IS NULL;
-- 6) Vérifier cohérence contrats → utilisateurs et assistantes
SELECT c.id, c.parent_id, c.assistante_id
FROM contrats c
LEFT JOIN parents p ON c.parent_id = p.id
LEFT JOIN assistantes_maternelles am ON c.assistante_id = am.id
WHERE p.id IS NULL OR am.id IS NULL;
-- 7) Vérifier cohérence validations → utilisateurs
SELECT v.id, v.valide_par
FROM validations v
LEFT JOIN utilisateurs u ON v.valide_par = u.id
WHERE u.id IS NULL;
-- 8) Vérifier cohérence dates enfants
SELECT id, nom, prenom, date_naissance
FROM enfants
WHERE date_naissance > CURRENT_DATE;
-- 9) Vérifier cohérence date agrément assistantes
SELECT id, nom, prenom, date_agrement
FROM assistantes_maternelles
WHERE date_agrement > CURRENT_DATE;
-- 10) Vérifier NULL obligatoires (ex: NIR des assistantes)
SELECT id, nom, prenom
FROM assistantes_maternelles
WHERE nir IS NULL OR nir = '';
-- ==============================================
-- Fin du script
-- ==============================================