Aller au contenu
Retour aux projets
Projet personnel

Matrice de Risques — Registre de Risques Interactif (Reconstruit)

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)