Spaces:
Sleeping
Sleeping
| 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_ | |