#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Script pour générer un rapport factorisé des vulnérabilités critiques suivant la structure définie dans Remarques.md. """ import sys from pathlib import Path import streamlit as st from utils.config import ( TEMP_SECTIONS, TEMPLATE_PATH, session_uuid, load_config ) from utils.files import ( write_report ) from utils.graphs import ( parse_graphs, extract_data_from_graph, calculate_vulnerabilities ) from utils.sections import ( generate_report ) from utils.sections_utils import ( nettoyer_texte_fr ) from utils.ia import ( ingest_document, ia_analyse, supprimer_fichiers, generer_rapport_final ) def main(dot_path, output_path): """Fonction principale du script.""" # Charger la configuration config = load_config() # Analyser les graphes graph, ref_graph = parse_graphs(dot_path) # Extraire les données data = extract_data_from_graph(graph, ref_graph) # Calculer les vulnérabilités results = calculate_vulnerabilities(data, config) if "step" not in st.session_state: st.session_state["step"] = 1 # Générer le rapport report, file_names = generate_report(data, results, config) # Écrire le rapport write_report(report, TEMPLATE_PATH) ingest_document(TEMPLATE_PATH) # Générer l'analyse par l'IA du rapport compler analyse_finale = nettoyer_texte_fr(ia_analyse(file_names)) analyse_fichier = TEMP_SECTIONS / TEMPLATE_PATH.name.replace(".md", " - analyse.md") write_report(analyse_finale, analyse_fichier) if generer_rapport_final(TEMPLATE_PATH, analyse_fichier, output_path): supprimer_fichiers(session_uuid) else: print("") if __name__ == "__main__": dot_path = Path(sys.argv[1]) output_path = Path(sys.argv[2]) main(dot_path, output_path)