Skip to content

jbeleno/Back_matriz

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Back_matriz — API REST para gestión de matrices de riesgo

Python FastAPI SQLAlchemy PostgreSQL Pydantic

API REST para administrar matrices de riesgo y sus entidades asociadas (empresas, usuarios, riesgos, objetivos, fases, mitigaciones, valores de impacto y probabilidad). Construida con FastAPI + SQLAlchemy + PostgreSQL.

Proyecto académico (USCO) que implementa el flujo completo de una matriz de riesgo organizacional: identificación, evaluación, tratamiento y seguimiento.


Dominio del problema

Una matriz de riesgo es una herramienta de gestión que cruza la probabilidad de que ocurra un evento adverso con su impacto, para priorizar tratamientos. Este servicio modela:

  • Empresas y usuarios con autenticación básica.
  • Matrices de riesgo asociadas a cada empresa.
  • Riesgos identificados, con su probabilidad e impacto.
  • Objetivos afectados (financieros, operativos, estratégicos, de cumplimiento).
  • Fases del proceso (planeación, ejecución, control).
  • Acciones de mitigación y tipos de objetivo.

Stack

Categoría Tecnología
Lenguaje Python 3.10+
Framework FastAPI 0.115
ORM SQLAlchemy 2.0
Validación Pydantic 2.10
Base de datos PostgreSQL
Driver psycopg2-binary
Servidor uvicorn ([standard])
Despliegue Procfile (Heroku, Railway, Render)

Quick start

1. Configurar variables de entorno

cp .env.example .env
# Editar .env con tu DATABASE_URL

2. Instalar y correr

python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
uvicorn app.main:app --reload

3. Verificar


Endpoints principales

Organizados por tags en Swagger:

Tag Recurso Operaciones
empresas /empresas/ CRUD completo
usuarios /usuarios/ CRUD + login
matrices /matrices/ CRUD completo
riesgos /riesgos/ CRUD completo
impactos /impactos/ CRUD
probabilidades /probabilidades/ CRUD
objetivos_afectados /objetivos_afectados/ CRUD
fases /fases/ CRUD
mitigaciones /mitigaciones/ CRUD
tipos_objetivo /tipos_objetivo/ CRUD

Documentación interactiva auto-generada en /docs.


Estructura del proyecto

Back_matriz/
├── app/
│   ├── __init__.py
│   ├── main.py        # FastAPI app, routes, CORS
│   ├── models.py      # SQLAlchemy ORM
│   ├── schemas.py     # Pydantic schemas
│   ├── crud.py        # Lógica de acceso a datos
│   └── database.py    # Engine, sessionmaker (lee DATABASE_URL del env)
├── Procfile           # web: uvicorn app.main:app --host=0.0.0.0 --port=8000
├── requirements.txt
├── .env.example
└── README.md

Despliegue

# Heroku
heroku create back-matriz
heroku config:set DATABASE_URL=postgres://...
git push heroku main

# Railway / Render
# Detectan el Procfile automáticamente. Solo configurar DATABASE_URL.

Mejoras pendientes (deuda técnica reconocida)

  • Lifespan handlers en lugar de @app.on_event("startup") (deprecado desde FastAPI 0.110).
  • Migraciones con Alembic en vez de Base.metadata.create_all() en startup — el approach actual es práctico pero no permite cambios incrementales de schema en producción.
  • Auth con JWT (OAuth2PasswordBearer + refresh tokens) en lugar de auth básica.
  • CORS específico: hoy allow_origins=["*"]; restringir en producción.
  • Tests: añadir pytest + httpx.AsyncClient.
  • Hash de contraseñas: si crud.py guarda passwords en plano, migrar a passlib[bcrypt].
  • Paginación con cursor en endpoints GET /<recurso>/ con muchos registros (hoy es skip/limit clásico).

Licencia

Proyecto académico — Universidad Surcolombiana (USCO).

About

REST API for risk matrix management. FastAPI + SQLAlchemy + PostgreSQL, with CRUD over companies, users, matrices, risks, objectives, mitigation actions, impact and probability values. Procfile-ready for Heroku/Railway.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors