Outil interactif d'évaluation des risques combinant une matrice dans le navigateur (HTML/JS) et une CLI Python pour le traitement en masse et la génération de rapports.
Reconstruction en français, restructurée et enrichie du projet original risk-assessment-matrix.
- Matrice Probabilité × Impact (5×5) avec scoring automatique
- Registre de risques avec catégories, responsables, mitigations et échéances
- Carte de chaleur avec code couleur (Critique / Élevé / Modéré / Faible)
- Persistance locale (localStorage) — le registre survit au rechargement de la page
- Modification en place des risques existants (pas seulement ajout/suppression)
- Recherche et filtrage dans le registre, y compris par clic sur une cellule de la matrice
- Export JSON et CSV (CSV avec BOM UTF-8 pour un import correct dans Excel)
- CLI Python pour import en masse de risques et génération de rapport HTML
- Suite de tests pytest pour le moteur de scoring
Cette reconstruction n'est pas une simple traduction :
- Bug corrigé : l'original perdait tout le registre au rechargement de la page (aucune persistance) — corrigé via
localStorage. - Incohérence corrigée : le README original documentait une CLI à plat (
--input,--risk) mais le code exigeait des sous-commandes (report,eval) non documentées — la CLI ici correspond exactement à ce qui est documenté. - Fonctionnalité inutilisée activée : la classe de registre originale avait une méthode
update()jamais appelée par l'interface — ici, chaque risque est modifiable via un bouton "Modifier". - Libellés dupliqués unifiés : l'original codait en dur les libellés de probabilité/impact dans le JS alors qu'ils existaient déjà dans
risk_categories.json— ici, le JS charge dynamiquement ce référentiel. - Tests ajoutés : l'original n'avait aucun test automatisé.
# Ouvrir simplement dans un navigateur
start index.htmlpython -m venv .venv
.venv\Scripts\activate
pip install -r python/requirements.txt
# Générer un rapport HTML à partir du registre JSON
python -m python.main --input data/risques_exemple.json --output rapport.html
# Évaluer un risque isolé
python -m python.main --risque "Injection SQL sur le formulaire de connexion" --probabilite 4 --impact 5
# Lancer les tests
pytest tests/Score de risque = Probabilité (1–5) × Impact (1–5)
| Score | Niveau | Action |
|---|---|---|
| 20–25 | Critique | Remédiation immédiate requise |
| 12–19 | Élevé | Remédiation sous 30 jours |
| 6–11 | Modéré | Remédiation sous 90 jours |
| 1–5 | Faible | Acceptation ou surveillance |
.
├── index.html # Application navigateur autonome
├── src/
│ ├── matriceRisques.js # Logique de scoring + registre persisté
│ └── export.js # Export JSON / CSV
├── styles/
│ └── main.css
├── data/
│ ├── categories_risques.json # Catégories + libellés probabilité/impact
│ └── risques_exemple.json
├── python/
│ ├── main.py
│ ├── matrice_risques.py
│ ├── rapport.py
│ └── requirements.txt
└── tests/
└── test_matrice_risques.py
MIT