← Volver a proyectos
Proyecto personal
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)