Bienvenue sur CFTPfr.fr › Forums › bibliotheque_documentation.py — v2 (correction bug chemin)
- Ce sujet est vide.
Affichage de 1 message (sur 1 au total)
-
AuteurMessages
-
04.08.2026 à 0h07 #291
Mario Da Conceicao
Maître des clésCorrection 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 -
AuteurMessages
Affichage de 1 message (sur 1 au total)
- Vous devez être connecté pour répondre à ce sujet.