diff --git a/modules/educ_scraper.py b/modules/educ_scraper.py new file mode 100644 index 0000000..e693933 --- /dev/null +++ b/modules/educ_scraper.py @@ -0,0 +1,55 @@ +import os +import requests +from bs4 import BeautifulSoup +from modules.logger import log_event + +EDUCATION_RAG_DIR = "/DATA/AppData/MULTI-IA-AETHAS38/RAG/Education_Nationale" + +def synchroniser_programmes_officiels(): + """ + Scrape ou récupère les données textuelles de référence pour alimenter + automatiquement le RAG Éducation Nationale. + """ + os.makedirs(EDUCATION_RAG_DIR, exist_ok=True) + + # Exemple de source institutionnelle publique ou de structuration de base + url_reference = "https://www.education.gouv.fr/les-programmes-de-l-ecole-prime-et-du-college-1041" + + try: + headers = {"User-Agent": "Aethas38-EducationBot/1.0"} + response = requests.get(url_reference, headers=headers, timeout=10) + + if response.status_code == 200: + soup = BeautifulSoup(response.text, 'html.parser') + # Extraction propre du contenu textuel des programmes + contenu_page = "" + for paragraph in soup.find_all(['p', 'h2', 'h3', 'li']): + contenu_page += paragraph.get_text() + "\n" + + if len(contenu_page.strip()) > 100: + chemin_fichier = os.path.join(EDUCATION_RAG_DIR, "programmes_officiels_socle.txt") + with open(chemin_fichier, 'w', encoding='utf-8') as f: + f.write(contenu_page) + log_event("INFO", "EDUC_RAG", "Synchronisation réussie des programmes officiels.") + return True + log_event("WARNING", "EDUC_RAG", "Impossible de joindre la source ou contenu vide.") + except Exception as e: + log_event("ERROR", "EDUC_RAG", f"Erreur lors de la synchronisation : {e}") + + return False + +def preparer_contexte_pedagogique(niveau: str, matiere: str, objectif: str) -> str: + """ + Prépare un prompt contextuel strict pour l'assistant pédagogique + en s'appuyant sur le RAG Éducation Nationale. + """ + from modules.rag_manager import extraire_contexte_rag + contexte_socle = extraire_contexte_rag("Education_Nationale") + + prompt_systeme = ( + f"Tu es un assistant pédagogique expert pour un Professeur des Écoles en France. " + f"Tu dois respecter strictement les programmes officiels de l'Éducation Nationale.\n\n" + f"Contexte institutionnel et programmes :\n{contexte_socle[:3000]}\n\n" + f"Mission demandée pour le niveau {niveau} en {matiere} : {objectif}" + ) + return prompt_systeme \ No newline at end of file