Présentation
DTLcompare compare deux snapshots de diagnostic distant DTLknowsWhy : l'un collecté depuis un ordinateur où l'accès fonctionne, l'autre depuis un ordinateur où le même accès échoue.
Contenu du README
DTLcompare compare deux snapshots de diagnostic distant DTLknowsWhy : l'un collecté depuis un ordinateur où l'accès fonctionne, l'autre depuis un ordinateur où le même accès échoue.
Il produit une analyse classée qui met en évidence les différences confirmées, les causes éliminées, les causes probables, les preuves et les pistes de remédiation. Les rapports peuvent être générés en JSON, texte et HTML.
Prérequis important : DTLknowsWhy
DTLcompare n'est pas un collecteur autonome. C'est un compagnon d'analyse pour DTLknowsWhy.
Avant de l'utiliser, il faut disposer de :
- DTLknowsWhy dans l'environnement Python ;
- le package
expertde DTLknowsWhy importable, carcomparative_analysis.pyimporteexpert.compare; - deux snapshots JSON générés par les diagnostics distants de DTLknowsWhy.
Si Python ne peut pas importer expert.compare, DTLcompare échoue au démarrage. Lancez l'outil depuis un environnement où DTLknowsWhy est installé ou ajoutez son dossier source à PYTHONPATH.
Rôle de l'outil
Le script compare les données de diagnostic distant de deux machines et cherche à expliquer pourquoi l'accès réussit d'un côté mais échoue de l'autre.
Il se concentre actuellement sur les diagnostics SMB et d'accès distant :
Modèle d'entrée attendu :
working_snapshot : snapshot DTLknowsWhy où le test d'accès distant réussit ;failing_snapshot : snapshot DTLknowsWhy où le test équivalent échoue.Utilisation
python comparative_analysis.py <working_snapshot.json> <failing_snapshot.json>
Exemple :
python comparative_analysis.py 172.17.7.19_snapshot_20260610_151730.json 172.17.7.19_snapshot_20260610_152617.json
Par défaut, le script écrit trois rapports dans le dossier courant :
<prefix>.json<prefix>.txt<prefix>.htmlIl affiche aussi une synthèse lisible dans la console.
Options
--lang {fr,en} Langue de l'analyse. Valeur par défaut : fr.
--json Affiche aussi les constats au format JSON.
--output-prefix PATH Préfixe des fichiers de rapport générés.
--no-files Ne pas écrire les fichiers JSON, TXT ou HTML.
Exemples :
python comparative_analysis.py ok.json ko.json --output-prefix reports/compare_ok_vs_ko
python comparative_analysis.py ok.json ko.json --json --no-files
Sorties
Chaque constat contient des informations structurées :
case : identifiant stable du cas de diagnostic ;title : explication courte du constat ;level : niveau de gravité ou d'information ;status : cause active, éliminée ou hypothèse ;confidence : niveau de confiance ;relevance_score : score utilisé pour classer les constats ;evidence : faits extraits des snapshots ;cause : interprétation des preuves ;remediation : action suivante éventuelle.Le rapport HTML est conçu pour être partagé avec les équipes support ou infrastructure. Le rapport JSON est plus adapté à l'automatisation ou à un traitement ultérieur.
Notes de développement
Le point d'entrée principal est comparative_analysis.py.
Le script attend des structures de snapshot DTLknowsWhy et utilise des fonctions de :
from expert.compare import detect_join_type
from expert.compare import get_filter_names
from expert.compare import get_path
from expert.compare import share_names
DTLknowsWhy et DTLcompare doivent rester alignés lorsque le schéma des snapshots évolue.
Mise à jour - 14 juin 2026
comparative_analysis.py est maintenant un analyseur complet de comparaison de snapshots DTLknowsWhy.
Points importants confirmés dans le code :
--no-files.--output-prefix permet de choisir le préfixe des fichiers générés.--lang fr|en maintient une couche d'analyse bilingue.