bibliotheque_documentation.py — v2 (correction bug chemin)

Bienvenue sur CFTPfr.fr Forums bibliotheque_documentation.py — v2 (correction bug chemin)

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

    Correction du 01/08/2026, après contrôle général de tous les composants IA construits ce soir. Bug réel corrigé : le chemin d’écriture du document nettoyé était mal calculé (utilisait le nom du module Python au lieu du vrai dossier), ce qui aurait écrit au mauvais endroit.

    import re
    from pathlib import Path
    from datetime import datetime
    
    from gestionnaire_specialites import GestionnaireSpecialites, valider_nom_specialite, TELECHARGEMENTS_DIR
    from mode_reseau import ModeReseau
    
    class BibliothequeDocumentation:
        """
        Recherche, télécharge (si besoin) et nettoie la documentation d'un
        produit précis, pour en faire une nouvelle spécialité candidate.
        Ne fait jamais rien d'actif sans validation.
        """
    
        def __init__(self):
            self.reseau = ModeReseau()
            self.specialites = GestionnaireSpecialites()
    
        def rechercher_documentation(self, produit, modele, moteur_recherche=None):
            if not self.reseau.disponible():
                return {"statut": "hors_ligne", "message": "Pas de connexion — recherche impossible pour le moment."}
    
            if moteur_recherche is None:
                return {"statut": "a_implementer", "message": "Aucune source de recherche branchée pour l'instant."}
    
            requete = f"{produit} {modele} documentation manuel PDF"
            resultats = moteur_recherche(requete)
            return {"statut": "resultats", "resultats": resultats}
    
        def _nettoyer_texte(self, texte_brut, mots_cles):
            blocs = [b.strip() for b in texte_brut.split("\n\n") if b.strip()]
            blocs_utiles = []
            for bloc in blocs:
                if len(bloc) < 100:
                    continue
                bloc_normalise = bloc.lower()
                if any(mot.lower() in bloc_normalise for mot in mots_cles):
                    blocs_utiles.append(bloc)
            return "\n\n".join(blocs_utiles) if blocs_utiles else texte_brut
    
        def preparer_specialite_produit(self, produit, modele, texte_documentation, lien_source=None):
            try:
                nom = valider_nom_specialite(f"{produit}-{modele}")
            except ValueError as e:
                return f"Refusé : {e}"
    
            texte_nettoye = self._nettoyer_texte(texte_documentation, [produit, modele])
    
            description = f"Documentation de {produit} (modèle {modele})"
            if lien_source:
                description += f" — source : {lien_source}"
    
            resultat = self.specialites.proposer_nouvelle_specialite(
                nom=nom,
                description=description,
                documents_sources=[lien_source] if lien_source else []
            )
    
            # CORRECTION : chemin correct, basé sur la vraie constante du
            # dossier telechargements/, plus d'introspection du module Python
            dossier_documents = TELECHARGEMENTS_DIR / nom / "documents"
            dossier_documents.mkdir(parents=True, exist_ok=True)
            (dossier_documents / "notice.txt").write_text(texte_nettoye, encoding="utf-8")
    
            return resultat
Affichage de 1 message (sur 1 au total)
  • Vous devez être connecté pour répondre à ce sujet.
Retour en haut