← Retour aux projets
Projet personnel
Matrice de Risques — Registre de Risques Interactif (Reconstruit)
Matrice de risque interactive 5×5 Probabilité/Impact — persistance localStorage, édition en place, et CLI Python testée pour la génération de rapports
Contexte
matrice-risques reconstruit et enrichit risk-assessment-matrix, un projet open source d'évaluation des risques. Objectif : un registre de risques interactif avec matrice de chaleur Probabilité × Impact (5×5) en direct, assorti d'une CLI Python pour l'automatisation (import en masse, génération de rapport HTML) — et corriger au passage plusieurs limites bloquantes de l'original.
Fonctionnalités
- Matrice Probabilité × Impact (5×5) avec scoring automatique et code couleur (Critique / Élevé / Modéré / Faible)
- Registre de risques : catégories, responsables, mitigations, échéances, statuts
- Persistance locale (localStorage) — le registre survit au rechargement de page
- Modification en place des risques existants (pas seulement ajout/suppression)
- Recherche et filtrage, y compris par clic sur une cellule de la matrice (drill-down)
- Export JSON et CSV (BOM UTF-8 pour compatibilité Excel)
- CLI Python : génération de rapport HTML à partir d'un registre JSON, évaluation ponctuelle d'un risque
- Suite de tests pytest sur le moteur de scoring
Ce qui a été corrigé par rapport à l'original
- Aucune persistance, le registre était perdu au rechargement de la page → Persistance via localStorage, sérialisation/désérialisation du registre complet
- Le README documentait une CLI à plat (--input, --risk) mais le code exigeait des sous-commandes non documentées (report, eval) → CLI réécrite pour correspondre exactement à ce qui est documenté
- La méthode update() de la classe de registre n'était jamais appelée par l'interface → Bouton « Modifier » complet, formulaire pré-rempli, sauvegarde en place
- Libellés probabilité/impact codés en dur en JS alors qu'ils existaient déjà en JSON → Le JS charge désormais dynamiquement categories_risques.json (source unique)
- Aucun test automatisé → 6 tests pytest sur le scoring, les bornes de niveaux, le tri et la validation des données d'exemple
- Sortie CLI Windows mal encodée (cp1252) → sys.stdout.reconfigure(encoding="utf-8") — accents corrects en console
Stack & Technologies
- HTML/CSS/JS vanilla (ES modules, aucune dépendance) — application navigateur autonome
- CLI Python (argparse, Jinja2, pytest) — automatisation et rapports
- localStorage — persistance côté client
- Export JSON / CSV avec BOM UTF-8
Scoring des risques
Score 20-25
Critique
Remédiation immédiate
Score 12-19
Élevé
Remédiation sous 30 jours
Score 6-11
Modéré
Remédiation sous 90 jours
Score 1-5
Faible
Acceptation ou surveillance
Résultats
- Stack
- HTML/CSS/JS vanilla + CLI Python(argparse, Jinja2, pytest)
- Tests
- 6 tests pytest(Scoring, bornes de niveaux, tri, validation des données)
- Persistance
- localStorage(Corrige la principale limite de l'original)
- Base de
- risque360(matrice-risques a ensuite servi de socle à une plateforme combinant STRIDE, risques fournisseurs et recalibration par incidents)