mira_ia.py

Bienvenue sur CFTPfr.fr Forums scripts mira_ia.py

  • Ce sujet est vide.
Affichage de 1 message (sur 1 au total)
  • Auteur
    Messages
  • #211
    Mario Da Conceicao
    Maître des clés

    Sauvegarde de travail — version du 25/07/2026. ⚠️ Contient une gestion des mots de passe en clair, à corriger (voir Tome 2) en s’alignant sur interface_demarrage.py.

    import json
    import os
    import shutil
    from datetime import datetime
    
    class MiraIA:
        def __init__(self, version_actuelle="0.3"):
            self.version_actuelle = version_actuelle
            self.fichier_mises_a_jour = "D:\\MIRA_Project\\mira_ai\\mises_a_jour.json"
            self.fichier_ameliorations = "D:\\MIRA_Project\\mira_ai\\ameliorations.txt"
            self.fichier_propositions = "D:\\MIRA_Project\\mira_ai\\propositions_ia.json"
            self.fichier_logs = "D:\\MIRA_Project\\mira_ai\\logs.txt"
            self.fichier_utilisateurs = "D:\\MIRA_Project\\mira_ai\\utilisateurs.json"
            self.fichier_connaissances = "D:\\MIRA_Project\\mira_ai\\connaissances.json"
    
            if not os.path.exists(self.fichier_ameliorations):
                open(self.fichier_ameliorations, "w", encoding="utf-8").close()
            if not os.path.exists(self.fichier_propositions):
                with open(self.fichier_propositions, "w", encoding="utf-8") as f:
                    json.dump([], f)
            if not os.path.exists(self.fichier_logs):
                open(self.fichier_logs, "w", encoding="utf-8").close()
            if not os.path.exists(self.fichier_utilisateurs):
                with open(self.fichier_utilisateurs, "w", encoding="utf-8") as f:
                    json.dump({"utilisateurs": []}, f)
            if not os.path.exists(self.fichier_connaissances):
                with open(self.fichier_connaissances, "w", encoding="utf-8") as f:
                    json.dump({}, f)
    
        def verifier_mises_a_jour(self):
            if os.path.exists(self.fichier_mises_a_jour):
                with open(self.fichier_mises_a_jour, "r", encoding="utf-8") as f:
                    mises_a_jour = json.load(f)
                    if mises_a_jour["version"] > self.version_actuelle:
                        return mises_a_jour
            return None
    
        def appliquer_mise_a_jour(self, mise_a_jour):
            print(f"Application de la mise à jour vers la version {mise_a_jour['version']}...")
            for fichier in mise_a_jour["fichiers"]:
                chemin_source = fichier["chemin_source"]
                chemin_destination = fichier["chemin_destination"]
                shutil.copy2(chemin_source, chemin_destination)
                print(f"Fichier {fichier['nom']} mis à jour.")
            print("Mise à jour terminée !")
    
        def proposer_amelioration(self, suggestion):
            with open(self.fichier_ameliorations, "a", encoding="utf-8") as f:
                f.write(f"{datetime.now()} - Suggestion: {suggestion}\n")
            print(f"Suggestion enregistrée : {suggestion}")
            self.analyser_suggestions()
    
        def analyser_suggestions(self):
            if not os.path.exists(self.fichier_ameliorations):
                return
    
            with open(self.fichier_ameliorations, "r", encoding="utf-8") as f:
                suggestions = f.readlines()
    
            propositions_existantes = []
            if os.path.exists(self.fichier_propositions):
                with open(self.fichier_propositions, "r", encoding="utf-8") as f:
                    propositions_existantes = json.load(f)
    
            descriptions_existantes = [prop["description"] for prop in propositions_existantes]
    
            nouvelles_propositions = []
            for suggestion in suggestions:
                suggestion_nettoyee = suggestion.split("Suggestion: ")[-1].strip()
    
                proposition = None
                if "clavier" in suggestion_nettoyee.lower() or "virtuel" in suggestion_nettoyee.lower():
                    proposition = {
                        "type": "nouvelle_fonctionnalite",
                        "description": "Ajouter un module de clavier virtuel pour faciliter la saisie.",
                        "fichiers_a_modifier": ["mira_os.py"],
                        "explication": "Un clavier virtuel pourrait aider les utilisateurs à entrer des commandes ou du texte plus facilement.",
                        "date": str(datetime.now())
                    }
                elif "jeu" in suggestion_nettoyee.lower():
                    proposition = {
                        "type": "nouvelle_fonctionnalite",
                        "description": "Ajouter un module 'Jeux' avec un jeu de devinette.",
                        "fichiers_a_modifier": ["mira_os.py"],
                        "explication": "Beaucoup d'utilisateurs demandent des jeux.",
                        "date": str(datetime.now())
                    }
                elif "bug" in suggestion_nettoyee.lower() or "erreur" in suggestion_nettoyee.lower():
                    proposition = {
                        "type": "correction",
                        "description": "Corriger les bugs dans la calculatrice.",
                        "fichiers_a_modifier": ["mira_os.py"],
                        "explication": "Des vérifications supplémentaires pourraient être ajoutées.",
                        "date": str(datetime.now())
                    }
                elif "calculatrice" in suggestion_nettoyee.lower():
                    proposition = {
                        "type": "amelioration",
                        "description": "Ajouter des fonctions avancées à la calculatrice (racine carrée, puissance).",
                        "fichiers_a_modifier": ["mira_os.py"],
                        "explication": "La calculatrice pourrait être améliorée avec des fonctions mathématiques avancées.",
                        "date": str(datetime.now())
                    }
    
                if proposition and proposition["description"] not in descriptions_existantes:
                    nouvelles_propositions.append(proposition)
                    descriptions_existantes.append(proposition["description"])
    
            toutes_propositions = propositions_existantes + nouvelles_propositions
            with open(self.fichier_propositions, "w", encoding="utf-8") as f:
                json.dump(toutes_propositions, f, indent=4, ensure_ascii=False)
    
        def get_propositions(self):
            if os.path.exists(self.fichier_propositions):
                with open(self.fichier_propositions, "r", encoding="utf-8") as f:
                    return json.load(f)
            return []
    
        def verifier_utilisateur(self, nom, mot_de_passe):
            if not os.path.exists(self.fichier_utilisateurs):
                return False
            with open(self.fichier_utilisateurs, "r", encoding="utf-8") as f:
                data = json.load(f)
            for utilisateur in data.get("utilisateurs", []):
                if utilisateur["nom"] == nom and utilisateur["mot_de_passe"] == mot_de_passe:
                    return True
            return False
    
        def ajouter_utilisateur(self, nom, mot_de_passe, role="utilisateur"):
            if not os.path.exists(self.fichier_utilisateurs):
                data = {"utilisateurs": []}
            else:
                with open(self.fichier_utilisateurs, "r", encoding="utf-8") as f:
                    data = json.load(f)
            data["utilisateurs"].append({
                "nom": nom,
                "mot_de_passe": mot_de_passe,
                "role": role
            })
            with open(self.fichier_utilisateurs, "w", encoding="utf-8") as f:
                json.dump(data, f, indent=4)
    
        def log_action(self, action):
            with open(self.fichier_logs, "a", encoding="utf-8") as f:
                f.write(f"{datetime.now()} - {action}\n")
Affichage de 1 message (sur 1 au total)
  • Vous devez être connecté pour répondre à ce sujet.
Retour en haut