Saltar al contenido
Volver a proyectos
Proyecto personal

Matriz de Riesgos — Registro de Riesgos Interactivo (Reconstruido)

Matriz de Riesgos — Registro de Riesgos Interactivo (Reconstruido)

Matriz de riesgos interactiva 5×5 probabilidad/impacto — persistencia localStorage, edición en línea, y CLI Python probada para generación de informes.

Contexto

matrice-risques reconstruye y amplía risk-assessment-matrix, un proyecto open source de evaluación de riesgos. Objetivo: un registro de riesgos interactivo con un mapa de calor Probabilidad × Impacto (5×5) en vivo, junto con una CLI de Python para automatización (importación masiva, generación de informes HTML) — corrigiendo de paso varias limitaciones bloqueantes del original.

Funcionalidades

  • Matriz Probabilidad × Impacto (5×5) con puntuación automática y código de colores (Crítico / Alto / Moderado / Bajo)
  • Registro de riesgos: categorías, responsables, mitigaciones, plazos, estados
  • Persistencia local (localStorage) — el registro sobrevive a la recarga de la página
  • Edición en línea de riesgos existentes (no solo añadir/eliminar)
  • Búsqueda y filtrado, incluido el filtrado por clic en una celda de la matriz (drill-down)
  • Exportación JSON y CSV (BOM UTF-8 para compatibilidad con Excel)
  • CLI Python: generación de informe HTML a partir de un registro JSON, evaluación puntual de un riesgo
  • Suite de tests pytest sobre el motor de puntuación

Qué se corrigió respecto al original

  • Sin persistencia, el registro se perdía al recargar la página → Persistencia mediante localStorage, serialización/deserialización completa del registro
  • El README documentaba una CLI plana (--input, --risk) pero el código exigía subcomandos no documentados (report, eval) → CLI reescrita para coincidir exactamente con lo documentado
  • El método update() de la clase de registro nunca era llamado por la interfaz → Botón «Modificar» completo, formulario precargado, guardado en línea
  • Etiquetas de probabilidad/impacto codificadas en JS aunque ya existían en JSON → El JS carga dinámicamente categories_risques.json (fuente única)
  • Sin tests automatizados → 6 tests pytest sobre la puntuación, los límites de nivel, el ordenamiento y la validación de datos de ejemplo
  • Salida de la CLI de Windows mal codificada (cp1252) → sys.stdout.reconfigure(encoding="utf-8") — acentos correctos en consola

Stack y tecnologías

  • HTML/CSS/JS vanilla (módulos ES, sin dependencias) — aplicación de navegador autónoma
  • CLI Python (argparse, Jinja2, pytest) — automatización e informes
  • localStorage — persistencia del lado del cliente
  • Exportación JSON / CSV con BOM UTF-8

Puntuación de riesgos

Puntuación 20-25
Crítico
Remediación inmediata
Puntuación 12-19
Alto
Remediación en 30 días
Puntuación 6-11
Moderado
Remediación en 90 días
Puntuación 1-5
Bajo
Aceptación o supervisión

Resultados

Stack
HTML/CSS/JS vanilla + CLI Python(argparse, Jinja2, pytest)
Tests
6 tests pytest(Puntuación, límites de nivel, ordenamiento, validación de datos)
Persistencia
localStorage(Corrige la principal limitación del original)
Base de
risque360(matrice-risques sirvió después de base para una plataforma que combina STRIDE, riesgo de proveedores y recalibración por incidentes)