nexus-api / executives /nexus_qualification.py.save
Sem
chore: retrait définitif de pickle_result de l'index Git
cd238fe
Raw
History Blame Contribute Delete
2.06 kB
import joblib
import os
MODEL_UNIFIED_PATH = "../pickle_result/nexus_modele_final_V35.pkl"
# =====================================================================
# MATRICE LÉGALE DE L'ÉTAT FRANÇAIS (SGDSN / DISPOSITIF ORSEC)
# Cloisonnement strict des cibles par domaine d'intervention
# =====================================================================
MATRICE_CIBLES_ISOLEES = {
"MÉDICAL": {"CITOYEN": 1, "VIP_LOCAL": 2, "PRESIDENT": 5},
"POLICE": {"CITOYEN": 1, "VIP_LOCAL": 2, "PRESIDENT": 5},
"POMPIER": {"CITOYEN": 1, "VIP_LOCAL": 2, "PRESIDENT": 5},
"CYBERSÉCURITÉ": {"CITOYEN": 1, "VIP_LOCAL": 3, "PRESIDENT": 4},
"ÉNERGIE & INFRASTRUCTURES": {"CITOYEN": 1, "VIP_LOCAL": 3, "PRESIDENT": 4},
"TRANSPORT & MOBILITÉ": {"CITOYEN": 1, "VIP_LOCAL": 3, "PRESIDENT": 4},
"RISQUES ENVIRONNEMENTAUX": {"CITOYEN": 1, "VIP_LOCAL": 3, "PRESIDENT": 3},
"SERVICES URBAINS": {"CITOYEN": 1, "VIP_LOCAL": 2, "PRESIDENT": 2},
"ASSISTANCE SOCIALE": {"CITOYEN": 1, "VIP_LOCAL": 2, "PRESIDENT": 2},
"ANIMALIER": {"CITOYEN": 1, "VIP_LOCAL": 2, "PRESIDENT": 2},
"DIGITAL SUPPORT": {"CITOYEN": 1, "VIP_LOCAL": 1, "PRESIDENT": 1}
}
class QualificationEngine:
def __init__(self):
if os.path.exists(MODEL_UNIFIED_PATH):
self.model = joblib.load(MODEL_UNIFIED_PATH)
self.mode = "ML"
print(f"🔌 Moteur d'inférence chargé : {MODEL_UNIFIED_PATH}")
else:
self.model = None
self.mode = "SIMULATION"
print(f"⚠️ ERREUR FATALE : Modèle ML introuvable à {MODEL_UNIFIED_PATH}. Mode SIMULATION (0.2) activé.")
def traduire_cible_ml(self, cible_id):
cible_id = int(cible_id)
if cible_id == 0: return "CITOYEN"
elif cible_id == 2: return "VIP_LOCAL"
elif cible_id == 4: return "PRESIDENT"
return "CITOYEN"
def calculer_priorite_sgdsn(self, domaine, severite, impact, profil_